C语言程序设计学习指导第二版 答案

C语言程序设计学习指导第二版 答案
C语言程序设计学习指导第二版 答案

一、

1.C

2.B

3.C

4.C

5.D

6.A

7.B

8.C

9.A 10.D 11.B 12.C 13.A 14.D 15.B 16.B

第二章

一、

1.D

2.A

3.C

4.D

5.A

6.B

7.A

8.B

9.A 10.D 11.B 12.C 13.C 14.D 15.C 16.B 17.D 18.A 19.C 20.B 21.B 22.D 23.A 24.B 25.B 26.B 27.B

第三章

一、

1.D

2.C

3.A

4.C

5.A

6.C

7.C

8.D

9.A 10.D 11.A(14 6f) 12.B 13.C 14.C 15.A 16.B 17.A 18.A 19.C 20.A 21.B 22.D 23.B 24.B 25.D 26.D 27.C 28.C

第四章

一、

1.B

2.C

3.D

4.D

5.D

6.C

7.B

8.D

9.C 10.D 11.B 12.A 13.C 14.C 15.B 16.AB 17.D

二、

1.double fun(int m)

{ double y=0;

y=sin(m)*10;

return(y);

}

2.float fun ( float h )

{return (long)( h * 100 + 0.5 )/ 100.0;}

3.double fun(double m)

{ float n;

n=(5.0/9.0)*(m-32);

return n; }

4. char fun(char c)

{c=c+32;

return c;}

一、

1.D

2.C

3.C

4.C

5.A

6.A

7.C

8.A

9.B 10.B 11.A 12.B 13.C 14.C 15.D 16.A 17.D 18.A 19.A 20.A 21.B 22.D 23.C 24.B 25.D

二、

1.int fun(int n)

{

int bw,sw,gw;

bw=n/100;sw=(n-bw*100)/10;gw=n%10;

if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw) return 1;

else return 0;}

2.float fun(float x)

{float y;

if (x<0 && x!=-3.0)

y=x*x+x+6;

else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)

y=x*x-5*x+6;

else y=x*x-x-1;

return y;}

3.double y(float x)

{double z;

if(x>10) z=exp(x);

else if(x>-3) z=log(x+3);

else z=sin(x)/(cos(x)+4);

return(z);}

4.int fun(int x)

{ int k;

k=x*x;

if((k%10==x)||(k%100==x))

return 1;

else

return 0;}

第六章

一、

1.C

2.C

3.D

4.B

5.C

6.A

7.A

8.A

9.D 10.A 11.D 12.C 13.C 14.C 15.C 16.A 17.A 18.B 19.A 20.D 21.B 22.C 23.C 24.D 25.B 26.B 27.C 28.A

二、

1.位置 1:r!=0 【或】 0!=r 【或】 r

位置 2:r=m%n 【或】 r=m-m/n*n

位置 3:n

位置 4:gcd,lcm 【或】 n,lcm

2.位置 1:k=0

位置 2:n%10 【或】 n-n/10*10 【或】 n-10*(n/10)

位置 3:while(n>0) 【或】 while(0

位置 4:printf("\n")

3.位置 1:x!=0 【或】 x

位置 2:else 【或】 else if(x%2==1) 【或】 else if(x%2!=0) 【或】 if(x%2)

位置 3:scanf("%d",&x)

位置 4:av2=s2/j

4.位置 1:n=0

位置 2:i<=300 【或】 i<300 【或】 300>=i 【或】 300>i

位置 3:i%7==0||i%17==0 【或】 !(i%7)||!(i%17) 【或】 !(i%17)||!(i%7) 【或】 !(i%7&&i%17) 【或】 i%17==0||i%7==0

位置 4:n%5==0 【或】 !(n%5) 【或】 n/5*5==n

5.位置 1:s=0

位置 2:i+=2 【或】 i=i+2 【或】 i=2+i 【或】 i++,i++

位置 3:j<=i 【或】 i>=j 【或】 jj 【或】 j<1+i 【或】 1+i>j

位置 4:f=f*j 【或】 f=j*f

三、

1.位置 1:#include "math.h" 【或】 #include

位置 2:float s=0,t=1,p=1; 【或】 float s=0,p=1,t=1; 【或】 float p=1,s=0,t=1; 【或】float p=1,t=1,s=0; 【或】 float t=1,p=1,s=0; 【或】 float t=1,s=0,p=1;

位置 3:while(fabs(t)>1e-4) 【或】 while(0.00010.0001)

位置 4:printf("pi=%f\n",s*4); 【或】 printf("pi=%f\n",4*s);

2.位置 1:printf("%8.0f",f1); 【或】 printf("%f",f1); 【或】 printf("%8f",f1);

位置 2:for(i=1;i<20;i++) 【或】 for(i=1;20>i;i++) 【或】 for(i=2;i<=20;i++) 【或】for(i=2;20>=i;i++) 【或】 for(i=1;i<=19;i++) 【或】 for(i=1;19>=i;i++)

位置 3:f1=f2;

位置 4:f2=f3;

3.位置 1:long k=1;

位置 2: scanf("%ld",&n);

位置 3: n/=10; 【或】 n=n/10;

4.位置 1:scanf("%d",&n);

位置 2:for(i=1;i<=n;i++) 【或】 for(i=1;n>=i;i++) 【或】 for(i=1;ii;i++)

位置 3:s+=1.0/t; 【或】 s=s+1.0/(float)t; 【或】 s=1.0/(float)t+s; 【或】 s=s+1.0/t; 【或】 s=1.0/t+s; 【或】 s+=1.0/(float)t; 【或】 s+=1.0/(double)t; 【或】

s=s+1.0/(double)t; 【或】 s=1.0/(double)t+s;

5.位置 1:sum=1.0; 【或】 sum=1;

位置 2:s2=1.0; 【或】 s2=1;

位置 3:for(k=4;k<=n;k++) 【或】 for(k=4;n>=k;k++) 【或】 for(k=4;kk;k++) 【或】 for(k=4;1+n>k;k++)

6.位置 1:t=1; 【或】 t=1.0;

位置 2:t=t*j; 【或】 t=j*t; 【或】 t*=j;

位置 3:s=s+t; 【或】 s=t+s; 【或】 s+=t;

位置 4:printf("jiecheng=%f\n",s);

四、

1.int fun(int n)

{ int d,s=0;

while (n>0)

{d=n%10;

s+=d*d*d;

n/=10;

}

return s;

}

2.int fun(int n)

{

int i,s=0;

for (i=2;i

if (n%i==0) s=s+i;

return (s);}

3.float sum(int n)

{

float s=0;

int i;

for(i=1;i<=n;i=i+2)

s=s+i*i;

return(s);}

4.double fun(int n)

{

int i,s=0;

for (i=1;i

if (i%3==0 && i%7==0) s=s+i; return (sqrt(s));}

5.gcd(int n,int m)

{

int r,t;

if(n

r=n%m;

while(r!=0)

{ n=m;m=r;r=n%m;}

return(m);}

6.double fun(int n)

{

int i,j=0;

double s=0;

for (i=3;i<=n;i++)

{ for (j=2;j

if (i%j==0) break;

if (j==i) s=s+sqrt(i); }

return s;}

7.long fun (long s,long t)

{

long sl=10;

t = s % 10;

while(s > 0)

{ s = s/100;

t = s%10*sl + t;

sl = sl * 10;

}

}

8.double fun(int n)

{

double m=1.0;

int i;

double p=1.0;

for(i=1;i<=n;i++)

{p=p*i;

m=m+1.0/p;

}

return (m);}

9.int fun(int n)

{int i,k;

for(i=n+1;;i++){

for(k=2;k

if(i%k==0)

break;

if(k==i)

return(i);}

10.int fun(int s)

int x1=0,x2=1,m=0;

while (s>m)

{

m=x1+x2;

x1=x2;

x2=m;

}

return m;}

第七章

一、

1.A

2.D

3.C

4.B

5.B

6.D

7.B

8.C

9.B 10.B 11.D 12.B 13.B 14.A 15.C 16.A 17.C 18.A 19.B 20.C 21.D 22.A 23.A 24.D 25.A 26.D 27.A 28.D 29.B 30.C 31.A 32.D 33.D 34.C 35.A 36.B 37.C 38.A 39.A 40.B 41.D 42.B 43.A 44.C 45.A

二、

1.位置 1: break;

位置2:i-1;

位置3:c;

2.位置1:sqrt(n)【或】n/2【或】n-1

位置2:n%i==0

位置3:k/10

位置4:prime_pal(j)

3.位置1:n<10【或】10>n

位置2:sqrt(high)【或】high/2

位置3:high%j == 0【或】!(high%j)

位置4:return sum【或】return (sum)

4.位置 1:k=0

位置 2:j=m%10 【或】 j=m-m/10*10 【或】 j=m-10*(m/10)

位置 3:return(1)

位置 4:fun(i)

三、

1.位置1:scanf("%d",&n);

位置2:double fun(int n)

位置3:for(i=1;i<=n;i++)【或】for(i=1;n>=i;i++)【或】for(i=1;i

for(i=1;n+1>i;i++)

位置4:s+=1.0/t;【或】s= s + 1.0 /(float)t;【或】s= s + 1.0 /t;【或】s+=1.0/(float)t 【或】s+=1.0/(double)t;【或】s= s + 1.0 /(double)t;

2.位置1:for(k=2;kk;k++)【或】for(k=2;k<=i-1;k++)【或】

for(k=2;kk;k++)【或】for(k=2;k<=sqrt(i);k++)【或】

for(k=2;sqrt(i)>=k;k++)

位置2:if( i%k == 0 ) break;【或】if(!(i%k)) break;

位置3:if(i<=k)【或】if(k>=i)【或】if( k == i )【或】if(k>=i/2)【或】if(k=i/2)【或】if(k>sqrt(i))

位置4:return i;【或】return (i);

3.位置1:printf("%8.0f",f1);【或】printf("%f",f1);【或】printf("%8f",f1);

位置2:for(i=1;i<20;i++)【或】for(i=1;20>i;i++)【或】for(i=2;i<=20;i++)【或】

for(i=2;20>=i;i++)【或】for(i=1;i<=19;i++)【或】for(i=1;19>=i;i++)

位置3:f1=f2;

位置4:f2=f3;

4.位置 1:void fun (int *a,int *b) 【或】 fun (int *a,int *b)

位置 2:t=*a;

位置 3:*a=*b;

位置 4:*b=t;

5.位置 1:for(i=1;i<=10;i++) 【或】 for(i=1;10>=i;i++) 【或】 for(i=1;i<11;i++) 【或】for(i=1;11>i;i++)

位置 2:s=s+fac(i); 【或】 s=fac(i)+s; 【或】 s+=fac(i);

位置 3:float y=1.0; 【或】 float y=1;

位置 4:return y; 【或】 return(y);

6.位置 1:int fun( int m) 【或】 fun( int m)

位置 2:for(i=2;ii;i++) 【或】 for(i=2;i<=m-1;i++) 【或】for(i=2;m-1>=i;i++)

位置 3:if(m%i==0) k=0; 【或】 if(0==m%i) k=0;

位置 4:return k;

7.位置 1:for(i=2;i<=m;i++) 【或】 for(i=2;m>=i;i++) 【或】 for(i=2;ii;i++) 【或】 for(i=2;1+m>i;i++)

位置 2:y-=1.0/(i*i); 【或】 y=y-1.0/(i*i); 【或】 y-=1.0/(float)(i*i); 【或】

y=y-1.0/(float)(i*i); 【或】 y=y-1.0/i/i; 【或】 y=y-1.0/(float)i/(float)i; 【或】y=y-1/(double)(i*i); 【或】 y-=1/(double)(i*i);

位置 3:return y; 【或】 return(y);

8.位置 1:while((2<=k)&&(mc<10)) 【或】 while((mc<10)&&(2<=k)) 【或】

while((k>=2)&&(mc<10)) 【或】 while((2<=k)&&(10>mc)) 【或】 while((k>=2)&&(10>mc)) 【或】 while((mc<10)&&(k>=2)) 【或】 while((10>mc)&&(2<=k)) 【或】

while((10>mc)&&(k>=2))

位置 2:if(!(k%17!=0||k%13!=0)) 【或】 if(!(k%13!=0||k%17!=0)) 【或】

if(k%13==0||k%17==0) 【或】 if(k%17==0||k%13==0)

位置 3:k--; 【或】 k=k-1; 【或】 k-=1;

位置 4:return m; 【或】 return(m);

四、

1.int fun(int n){

int i,k;

for(i=n+1;;i++){

for(k=2;k

if(i%k==0)

break;

if(k==i)

return(i);

}

}

2.double fun(int n)

{

double sum=0,t=1;

int i;

for(i=1;i<=n;i++)

{

t=t*i;

sum+=1/t;

}

return sum;

}

3.int fun(int w)

{int k,s=0;

do

{s=s+(w%10)*(w%10);

w=w/10;

}while(w!=0);

if(s%5==0)k=1;

else k=0;

return(k);}

4.long int fun(int d,int n)

{long int s=0,t=0;

int i;

for(i=1;i<=n;i++)

{ t=t+d;

s=s+t;

d=d*10;

}

return s;

}

5.float fun(int n)

{int i;

float f1=1,f2=1,f3,s=0;

for(i=1;i<=n;i++)

{f3=f1+f2;

f1=f2;

f2=f3;

s=s+f2/f1;

}

return s;

}

6.float fun()

{

double x1,x0;

x1=0.0;

x0=x1;

x1=cos(x0);

while (fabs(x0-x1)>0.000001)

{x0=x1;x1=cos(x0);}

return((float)x0);}

第八章

一、

1.B

2.D

3.D

4.A

5.B

6.A

7.C

8.B

9.D 10.A 11.A 12.C 13.AB 14.D 15.A 16.B 17.D 18.B 19.D 20.A 21.D 22.B 23.B 24.D 25.D 26.C 27.D 28.D

二、

1.位置1:t=a[5];【或】t=a[5]

位置2:a[i]=a[i-1];【或】a[i]=a[i-1]

2.位置1:i+1【或】1+i

位置2:a[j]a[j]【或】a[min_loc]>=a[j] 位置3:i!=min_loc【或】min_loc!=i

3.位置1:max=a[0]

位置2:max=a[j]

4.位置1:&a[i]【或】a+i

位置2:a[i]==x【或】x==a[i]

位置3:!=【或】<

5.位置1:jmax=N-1【或】jmax=9

位置2:a[j]>a[j+1]【或】a[j+1]

位置3:jmax=jmax-1【或】jmax--【或】--jmax

6. 位置1:a+4【或】&a[4]

位置2:x[0]x[0]

7.位置1:high=mid-1:

位置2:low=mid+1:

位置3:a,m

8.位置 1:a[i][i]=1

位置 2:i

位置 3:a[i-1][j]+a[i-1][j-1] 【或】 a[i-1][j-1]+a[i-1][j]

位置 4:j<=i 【或】 i>=j 【或】 jj 【或】 j-1j-1

9.位置 1:i==j||i+j==6 【或】 j==i||i+j==6 【或】 i==j||j+i==6 【或】 j==i||j+i==6 【或】i==j||6==i+j 【或】 j==i||6==i+j 【或】 i==j||6==j+i 【或】 j==i||6==j+i

位置 2:a[i][j]=2

位置 3:i6 【或】 j>i&&i+j>6 【或】 i6 【或】 j>i&&j+i>6 【或】 ii&&6i&&6

位置 4:printf("\n")

10.位置 1:s[i]=k 【或】 s[i]=(i+1)*2

位置 2:if((i+1)%5==0) 【或】 if((1+i)%5==0) 【或】 if((i+1)/5*5==i+1) 【或】

if((1+i)/5*5==i+1) 【或】 if((i+1)/5*5==1+i) 【或】 if((1+i)/5*5==1+i)

位置 3:sum=0 【或】 sum=0.0

位置 4:fun2(s,w)

三、

1.位置1:#include

位置2:printf("%3d",*(num+i));

位置3:while(low<=high)

位置4:{ printf("%d",mid+1);

2.位置1:int a[2][3]={1,34,23,56,345,7};【或】int a[][3]={1,34,23,56,345,7};

位置2:max=a[0][0];

位置3:for(j=0;j<3;j++)

位置4:printf("max=a[%d][%d]=%d\n",s,t,max)

3.位置1:scanf("%d",&number);

位置2:for(i=N-2;i>=0;i--)【或】for(i=N-2;0<=i;i--)

位置3:a[i+1]=a[i];

位置4:break;

4.位置1:void sort(int x[],int n)【或】void sort(int x[10],int n)

位置2:if(x[j]>x[j+1])

位置3:sort(a,n);

位置4:for(i=0;i

四、

1.void fun(int n,int a[])

{ int i=3;

while(n!=0)

{ a[i--]=n%10; n=n/10;

}

}

2. int fun(int a[M][M])

{ int s=0;

int i,j;

for(i=0;i

s=s+a[i][i]+a[i][M-1-i];

s=s-a[(M-1)/2][(M-1)/2];

return s;

}

3. float fun(float array[],int n) { int i;float sum=0,ave;

Max=array[0];

for(i=0;i

{ if(Max

ave=sum/n;

for(i=0;i

if(array [i]==Max) J++;

return(ave);}

4.int fun(int x[],int n)

{int min,i;

min=x[0];

for(i=1;i

{

if(x[i]

}

return min;

}

5.void fun(int tt[M][N],int pp[N]) {int i,j;

for(j=0;j

{

pp[j]=tt[0][j];

for(i=1;i

if(tt[i][j]

pp[j]=tt[i][j];

}

}

6.int fun(int lim,int aa[MAX])

{int i,j=0,k=0;

for (i=2;i

{ for (j=2;j

if (i%j==0) break;

if (j==i) aa[k++]=i;

}

return k;}

7.int fun(int array[N][M])

{int max,i,j;

max=array [0][0];

Row=0;

Col=0;

for(i=0;i

{for(j=0;j

if(max

{max=array [i][j];

Row=i;

Col=j;}

}

return(max);}

8.int fun(int a[],int n)

{ int i,amax=-1;

for(i=0;i

if(a[i]%2==0)

if (a[i]>amax) amax=a[i]; return amax;}

9.void fun(int array[3][3])

{ int i,j;int b[3][3];

for (i=0;i<3;i++)

for (j=0;j<3;j++)

b[j][i]=array[i][j];

for (i=0;i<3;i++)

for (j=0;j<3;j++)

array[i][j]=b[i][j];} 10.void fun ( int a[][N], int n ) {int i,j;

for(i=0;i

for(j=0;j<=i;j++)

a[i][j]*=n;}

11.void fun(int arr[],int n) {int i,t;

for(i=0;i

{ t=arr[i];

arr[i]=arr[n-1-i];

arr[n-1-i]=t;

}

}

12.int fun(int a[], int n) {int i,j,x;

for(i=0;i

for(j=i+1;j

if(a[j]==a[i])

{for(x=j+1;x

a[x-1]=a[x];

n--;

j--;

}

return(n);}

13.double fun(double x[9])

{int i ;

double avg=0.0,sum=0.0;

for (i=0;i<8;i++)

{avg=(x[i]+x[i+1])/2;

sum+=sqrt(avg);

}

return sum;}

14.void fun(int w[],int p,int n)

{ int x,j,ch;

for(x=0;x<=p;x++)

{ch=w[0];

for(j=1;j

{

w[j-1]=w[j];

}

w[n-1]=ch;

}}

15.double fun(int w[][N])

{ int i,j,count=0;

double average,sum=0.0;

for(i=0;i

if(i==0 || i==(N-1))

for(j=0;j

sum+=w[i][j];

count++;

}

else

{

sum+=w[i][0];

sum+=w[i][N-1];

count+=2;

}

}

average=sum/count;

return average;}

第九章

一、

1.B

2.A

3.C

4.D

5.A

6.B

7.B

8.D

9.D 10.C 11.A 12.C 13.C 14.D 15.A 16.B 17.C 18.D 19.B 20.A 21.C 22.D 23.D 24.D 25.D(题目修改为能进行交换) 26.A 27.A 28.B 29.B 30.B 31.B 32.B 33.C 34.A 35.C 36.B 37.A

二、

1.位置 1:fun(char *p) 【或】 fun(char p[]) 【或】 void fun(char p[]) 【或】 void fun(char *p)

位置 2:while(*p!='\0') 【或】 while(*p)

位置 3:k=1;

位置 4:p++; 【或】 p=1+p; 【或】 ++p; 【或】 p=p+1; 【或】 p+=1;

2.位置 1:int fun(int *a,int *b,int n)

位置 2:*b=c-a;

位置 3:scanf("%d",&a[i]); 【或】 scanf("%d", a + i );

位置 4:max=fun(a,&p,N);

3.位置 1:scanf("%d",p★++); 【或】 scanf("%d",arr[i]); 【或】 scanf("%d",p+i); 【或】scanf("%d",arr+i);

位置 2:if(*p>*max) 【或】 if(*max<*p)

位置 3:if(max==arr) 【或】 if(arr==max)

位置 4:for(i=0;ii;i++) 【或】 for(p=arr;p=i;i++) 【或】 for(p=arr;p<=arr+n-1;) 【或】for(p=arr;arr+n-1>=p;)

三、

1.int fun(int *s, int t, int *k)

{ int max_integer=0;

int i=0;

max_integer = s[0];

for(i=0; i

if(max_integer

max_integer=s[i];

*k=i;

}

}

return *k;}

2.float fun(float *a,int n)

{ int i;

float average;

double sum=0;

for(i=0;i

sum+=a[i];

average=(float)sum/n;

return average;}

3.void fun ( int x, int pp[], int *n )

{ int i,k,j = 0 ;

for(i=1;i<=x;i+=2)

{if((x%i)==0) pp[j++] =i;

*n=j ;}

for(i=0;i

for(k=i+1;k

if(pp[i]>pp[k])

{x=pp[i]; pp[i]=pp[j]; pp[j]=x;}

}

4. void fun(char (*s)[N], char *b)

{ int x,y;

for(x=0;x<100;x++)

*(b+x)=0;

for(x=0;x

for(y=0;y

b[x*M+y]=*(s[y]+x);

}

第十章

一、

1.B

2.B

3.C

4.C

5.A

6.B

7.C

8.D

9.B 10.C 11.C 12.A 13.C 14.C 15.D 16.B 17.D 18.C 19.B 20.B 21.B 22.B 23.C 24.C 25.D 26.B

27.C 28.C 29.D 30.D 31.A 32.D 33.D 34.A 35.C 36.C 37.C

二、

1.位置1:!(*p=='\0'&& *q=='\0')【或】*p!='\0'|| *q!='\0'【或】!(*p==0&& *q==0)【或】*p!=0|| *q!=0【或】*p|| *q【或】!(*p&& *q')

位置2:*p< *q【或】*p<= *q【或】*q>*p【或】*q>=*p

位置3:k++【或】++k【或】k=k+1

2.位置 1:p1=str1+m 【或】 p1=m+str1

位置 2:*p2++=*p1++ 【或】 *(p2++)=*(p1++) 【或】 *p2=*p1,p2++,p1++ 【或】*p2=*p1++,p2++ 【或】 *p2++=*p1,p1++

位置 3:*p2='\0' 【或】 *p2=0 【或】 *p2=NULL

位置 4:strcopy(str1,str2,m)

3.位置 1:j=strlen(s1) 【或】 for(j=0;s1[j]!='10';j++); 【或】 for(j=0;s1[j];j++);

位置 2:s2[i]!= 【或】 *(s2+i)!= 【或】 *(i+s2)!=

位置 3:'\0' 【或】 NULL 【或】 0

位置 4:JOIN(str1,str2)

4.位置 1:str1

位置 2:ii【或】 i<=n-1【或】n-1>=i

位置 3:str2[i]=str1[i]【或】*(str2+i)=*(str1+i)【或】*(str2+i)=str1[i]【或】

str2[i]=*(str1+i)

位置 4:str2[n]='\0'【或】str2[i]='\0'【或】str2[n]=0【或】str2[i]=0【或】 *(str2+n)='\0' 【或】*(str2+i)='\0'【或】*(str+n)=0【或】*(str2+i)=0

5.位置 1:str

位置 2:str[i]!='\0'【或】str[i]!=NULL【或】str[i]!=0【或】str[i]

位置 3:str[k]=str[i]【或】 *(str+k)=*(str+i)【或】str[k]=*(str+i)【或】*(str+k)=str[i] 位置 4:str[k]='\0'【或】*(str+k)='\0'【或】 str[k]=NULL 【或】 str[k]=0 【或】 *(str+k)=0 【或】 *(str+k)=NULL

三、

1.位置1:void fun (char s[],char t[])【或】void fun (char *s,char *t)

位置2:d = strlen(s);

位置3:for (i = 0; ii; i++)【或】for (i = 0; i<=d-1; i++)【或】for (i = 0; d-1>=i; i++)

位置4:t[ 2 * d ] = '\0';【或】t[ i + d ] = '\0';【或】t[ i + d ] =NULL;【或】t[ 2 * d ] = NULL;【或】t[ 2 * d ] = 0;【或】t[ i + d ] = 0;

2.位置1:#include "stdio.h"

位置2:char s[6]={'\0'};【或】char s[6]="\0";【或】char s[6]={0}; 位置3:s[i]=n%10+48;【或】s[i]=n%10+'0';

位置4:changdg(n);

3.位置 1:char fun(char *c)

位置 2:return *c; 【或】 return (*c); 【或】 return(*c);

位置 3:char s[81],*p=s;

位置 4:putchar(*p); 【或】 printf("%c",*p);

四、

1.int i;

for(i=0;str[i]!='\0';i++)

if(str[i]>='a' && str[i]<='z')

str[i]=str[i]-32;

2.void copy(char str1[],char str2[])

{ int i;

for(i=0;str1[i]!='\0';i++)

str2[i]=str1[i];

str2[i]='\0';

}

3.void len_cat(char c1[],char c2[])

{int i,j;

for(i=0;c1[i]!='\0';i++);

for(j=0;c2[j]!='\0';j++)

c1[i+j]=c2[j];

c1[i+j]='\0';

}

4.void fun(char *s,int num)

{ int i,j;

char t;

for(i=0;i

for(j=i+1;j

if(s[i]

{ t=s[i];s[i]=s[j];s[j]=t;}

}

5.void fun(char s[],char c)

{int i,k=0;

for(i=0;s[i]!='\0';i++)

if(s[i]!=c) s[k++]=s[i];

s[k]='\0';}

6.void fun(char str[],int i,int n)

{while(str[i+n-1])

{

str[i-1]=str[i+n-1];

i++;

}

str[i-1]='\0';}

7.void count(char c[])

{ int i;

for(i=0;c[i]!='\0';i++) if((c[i]>='A'&&c[i]<='Z')||(c[i]>='a'&&c[i]<='z')) a=a+1;

else if (c[i]>='0'&&c[i]<='9')

num=num+1;

else if (c[i]==' ')

b=b+1;

else

other=other+1;

}

8.int fun(char *str,char *substr)

{int i,n=0;

for(i=0;i<=strlen(str)-2;i++)

if((str[i]==substr[0])&&(str[i+1]==substr[1]))

n++;

return n;}

9.void fun(char s[])

{int i,len;

len=strlen(s);

for(i=len-1;i>0;i--)

{ s[2*i]=s[i];

s[2*i-1]=' ';

}

len=strlen(s);

s[len]='\0';

}

10.long fun ( char *p)

{long n=0;

int flag=0;

while(*p!='\0') {

if(*p=='-')

flag=1;

else if (*p=='+')

flag=0;

else

n=n*10+(*p-'0');

p++;

}

if (flag==1) n=-n;

return n;}

11.void fun(char *s,char t[])

{ int i,slenth,n=0;

slenth=strlen(s);

for(i=1;i

if(s[i]%2!=0)

t[n++]=s[i];

t[n]='\0';

}

12.void fun(char *a)

{char b[81];

int i=0,j=0;

while (a[i] && (a[i]=='*')) {b[j]=a[i];j++;i++;}

while (a[i])

if (a[i]!='*') {b[j]=a[i];j++;i++;}

else i++;

b[j]='\0';j=0;i=0;

while (b[j])

{ a[i]=b[j];i++;j++;}

a[i]='\0';}

13.void fun(char a[M][N], char *b)

{ int i,j,d=0;

for(i=0;i<100;i++)b[i]=0;

for(i=0,d=0;i<3;i++)

for(j=0;*(a[i]+j);j++)

{

*(b+d)=*(a[i]+j);

d++;

}

}

14.int fun( char *s)

{int i=1,j=0;

while(*s){

if((i==1) && (*s!=32))

{j++;i=0;}

if(*s==32)

i=1;

s++;

}

return j;}

15.int fun(char *ptr)

{int i,j;

for(i=0,j=0;*(ptr+i)!='\0';i++)

if(*(ptr+i)<='z'&& *(ptr+i)>='a'||*(ptr+i)<='Z' && *(ptr+i)>='A') {*(ptr+j)=*(ptr+i);

j++;}

*(ptr+j)='\0';

return(j);}

16.void fun(char(*a)[81],int num,char **max)

{int i;

*max=a[0];

for (i=1;i<=num;i++)

if (strlen(a[i])>strlen(*max)) *max=a[i];

}

第十一章

一、

1.C

2.D

3.C

4.B

5.B

6.A

7.C

8.B

9.C 10.B 11.A 12.C 13.A 14.C 15.A 16.B 17.A 18.C 19.A 20.D 21.C 22.C 23.C 24.D 25.D 26.B 27.C 28.B 29.D 30.C 31.A 32.D 33.C 34.A(基于sizeof(int)=2) 35.C 36.A 二、

1.位置1:i<50【或】i<=49

位置2:stu[i].name

2.位置1:typedef

位置2:i

位置3:pu[k].gradepu[k].grade

3. 位置1:NULL

位置2:i++

位置3:p2->next

位置4:p1

4. 位置1:q->next

位置2:head->next

5. 位置1: m->data!=x

位置2:m==NULL

位置3:free(m)

6. 位置1:q->next

位置2:new

三、

1.int fun(STREC *a,STREC *b)

{ int i,j=0,max,k,f=0;

max=(*a).s;

for (i=1;i

if (a[i].s>max) max=a[i].s; /*从所有的学生数据中找出最高的分值*/

for (i=0;i

if (a[i].s==max)

{ f++; /*统计分数最高的学生人数*/

for (k=0;k<10;k++)

b[j].num[k]=a[i].num[k]; /*将所有学生分数中与最高分值相等的学生数据放到另一数组b中*/

b[j].s=a[i].s;

j++;

}

return(f); /*返回分数最高的学生人数*/

}

2.double fun(STREC *a,STREC *b,int *n)

{ int i,j;

double aver=0,total=0;

*n=0;

for (i=0;i

aver=total/N; /*计算平均分*/

for (i=0;i

if (a[i].s

{ b[*n].s=a[i].s;

for(j=0;j<10;j++) b[*n].num[j]=a[i].num[j];

*n=*n+1; /*统计低于平均分的学生人数*/

}

return (aver); /*返回低于平均分的学生人数*/

}

3.STREC fun(STREC *a,char *b)

{ int i,f=0;

STREC p;

p=a[0];

for (i=0;i

if (strcmp(a[i].num,b)==0) {p=a[i];f=1;}

if (f==0)

{p.num[0]='\0';

p.s=-1;

}

return p;

}

4.void fun(STREC a[])

{ int i,j,p,t,k;

char h;

for (i=0;i

{ p=i;

for (j=i+1;j

if (a[p].s

if (p!=i)

{t=a[p].s;a[p].s=a[i].s;a[i].s=t;

for (k=0;k<10;k++)

{h=a[p].num[k];

a[p].num[k]=a[i].num[k];

a[i].num[k]=h;

}

}

}

}

5.double fun(STREC *h)

{ STREC *c;

double max;

c=h->next;

max=c->s;

while (c->next!=0)

{c=c->next;

if (maxs) max=c->s;

}

return max;

}

6.double fun(STREC *h)

{ STREC *p;

double aver=0;

p=h->next;

while (p!=0)

{aver=aver+p->s; p=p->next;

}

aver=aver/N;

return aver;

}

C语言程序设计试题及答案

C语言程序设计 一、选择题(共40分,每小题2分) 1、以下叙述不正确的是(D) A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个main函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 2、下列四个选项中,是不合法的用户标识符的选项是(B) A、abc B、12AC C、sun D、A 3、设有语句inta=4;则执行了语句a+=a-=a*a后,变量a的值是(A) A、-24 B、0 C、4 D、16 4、下列运算符中优先级最高的是(B) A、< B、+ C、&& D、== 5、在C语言中,运算对象必须是整型数的运算符是(A) A、% B、/ C、%和/ D、+ 6、以下关于运算符的优先顺序的描述正确的是(C) A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 7、在C语言中,如果下面的变量都是int类型,则输出的结果是(C) sum=pad=5;pAd=sum++,pAd++,++pAd; printf(“%d\n”,pad); A、7 B、6 C、5 D、4 8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)

A、INPUTx、y、z; B、scanf(“%d%d%d”,&x,&y,&z); C、scanf(“%d%d%d”,x,y,z); D、read(“%d%d%d”,&x,&y,&z); 9、假定从键盘输入23456<回车>,下面程序的输出结果是:(C)voidmain() {intm,n; scanf(“%2d%3d”,&m,&n); printf(“m=%dn=%d\n”,m,n); } A、m=23n=45 B、m=234n=56 C、m=23n=456 D、语句有错误 10、若运行时,给变量x输入12,则以下程序的运行结果是(A)main() {intx,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%d\n”,y); } A、0B、22C、12D、10 11、C语言中while和do-while循环的主要区别(A) A、do-while的循环体至少执行一次 B、while的循环控制条件比do-while的循环控制条件严格 C、do-while允许从外部转到循环体内 D、do-while的循环体不能是复合语句 12、以下对二维数组的正确说明的语句是(C) A、inta[3][] B、floata(3,4) C、doublea[3][4] D、floata(3)(4) 13、以下程序的输出结果是(C) main()

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

C语言程序设计(第二版)课后答案 丁亚涛

习题二 一、选择题 二、填空题 1.18 2.int float double 3.10 11 4.8 16 10 5.% 三、阅读题 1. 10,10,9,10 2. j=1, i=2 k=3,i=3 i=3,i=2 k=1,i=1 习题三 一、选择题 二、填空题 1. 从键盘上读入一个字符在屏幕上输出一个字符 #include 2. 按十进制整数形式输出,有符号 按16进制整数形式输出,没有符号 按十进制小数形式输出,输出的数据长度为7位,有2位小数 按字符形式输出一个字符 3. 按十进制整数形式输入数据 按十进制整数形式输入三位数据 跳过3位十进制数据 按字符形式输入一个字符 4. 分程序;; 5. 大写字母L 6. -1 三、阅读题 1. 6 6 6.00 6.00

2. x=127,x= 127,x=177,x=7f y=123.4567,y= 123.46,y=123,45670 3. 2,1 4. 1234 5. 4,3 6. -6,-6 习题四一、选择题 二、填空题 1. 非0 0 、 2. k==0 3. n%7==0&&n%==0 else 三、阅读题 1. a=1,b=0 2. c=1 习题五一、选择题 二、填空题 1. for语句 do-while 语句 while 语句 2. a=14,y=26 3. k=14,n=-1 4. 39 5. s=19 6. 22222 7. 10 8. 7 9. 8 10. 5,5 三、改错题

1. for( i=0;i<5;i++);for控制部分用分号分隔 2. int j=0;while(j<10){j++;i=j} 分号是多余的,否则会造成死循环 3. int s=1,i=1; while(i<5) {s*=i; i++; } 两条语句需要加上花括号 4. while(j<10);(分号不能少) 5. continue改为break 习题六 一、选择题 二、填空题 1. 20 0 19 2. 数组名 3. 越界 4. 6 5. j==k a[j][k]=1; a[j][k]=0; 三、阅读题 1. 6 5 4 3 2 1 2. aaa bbb ccc ddd 3. 2,2,1 习题七 一、选择题 二、填空题 1. 整个函数体内局部 2. 整型 3. k<=b return y;

c语言程序设计第二章课后参考答案

第二章:C程序的基本结构 一、单项选择题 1、以下不是C语言的特点的是________。 A)语言的表达能力强B)语言定义严格 C)数据结构系统化 D)控制流程结构化 2、TC编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是________。 A)编辑和编译 B)编译和连接 C)连接和运行D)编辑和运行 3、以下不是二进制代码文件是________。 A)标准库文件 B)目标文件C)源程序文件 D)可执行文件 4、下面个选项组中,均属于C语言关键字的一组是________。 A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type 5、下面四组字符串中,都可以用作C语言标识符的是________。 A)print B)I \am C)signed D)if _maf scanf 3mf ty_pr mx_2d mx_ a.f x1# aMb6 AMB A&B 5XY 6、以下不属于流程控制语句的是_________。 A)表达式语句 B)选择语句 C)循环语句 D)转移语句 7、下面描述中,不正确的是________。 A)C语言的函数体由一系列语句和注释组成。 B)注释内容不能单独写在一行上。 C)C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明。 D)scanf和printf是标准库函数而不是输入和输出语句。 8、下面描述中,正确的是________。 A)主函数的花括号必须有,而子函数中的花括号是可有可无的。 B)一个C程序行只能写一个语句。 C)主函数是程序启动时的唯一入口。 D)函数体包含了函数说明部分。 二、填空题 1、一个完整的C程序至少要有一个________函数。(主函数) 2、标准库函数不是C语言本身的组成部分,它是由__________提供的功能函数。(编译系统) 3、C语言是以________为基本单位、整个程序由________组成。(函数函数) 4、常用的标准库函数有数学函数、字符函数和字符串函数、动态分配函数、随机函数和________函数等几个大类。(输入输出) 5、标准库函数存放在________文件中。(函数库) 6、目标程序文件的扩展名是________。(.obj) 7、程序连接过程是将目标程序、________或其它目标程序连接装配成可执行文件。(库函数) 8、因为源程序是________类型文件,所以用具有文本编辑功能的任何编辑软件程序完成编辑。(文本)

C语言程序设计试题集

第一章基础知识 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。

程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

第5章-C语言程序设计(第2版)教材习题答案

【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。2011年10月第二版。ISBN:978-7-302-26972-4。售价:35元。 【答案版本】本习题答案为2012年2月修订版本。 一、选择题 1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。 A. while循环执行10次 B. 循环是无限循环 C. 循环体语句执行一次 D. 循环体语句一次也不执行 2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。 A. 运行程序段后输出1 B. 程序段执行无限次 C. 运行程序段后输出0 D. 程序段中的控制表达式是非法的 3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。 A. int a=1,b=2; while(b--); B. int a=1,b=2; do a++; while(a==b); C. int a=1,b=2; while(a=3); D. int a=1,b=2; do b-- while(b==0); 4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。 do{ printf(“%d\n”,i--); } while(i!=0); A. 0 B. 1 C. 5 D. 无限 5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。 A. 0 B. 5 C. 10 D. 无限 6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。 A. break语句用于循环体内,它将结束该循环 B. break语句用于开关语句,它结束该开关语句 C. break语句用于if语句的内嵌语句内,它结束该if语句 D. break语句在一个循环体内可使用多次 7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。 A. 循环体内可以包含有循环语句 B. 循环体内必须同时出现break语句和continue语句 C. 循环体内可以出现选择语句 D. 循环体可以是空语句 8. 以下不是死循环的是D)for(;(c=getchar()!=’\n’);)printf(“%c”,c);。 A. for(; ; x+=i); B. while(1) { x++; } C. for( i=10; ; i--) sum+=i; D. for( ; (c=getchar() )!=’\n’ ; ) printf( “%c”,c); 9. 执行语句”for(i=0;i++<3;);”后,变量i的值为C) 4。 A.2 B. 3 C. 4 D. 5 10.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C)循环4次。 A. 无限循环 B. 循环次数不定 C. 循环4次 D. 循环3次

C语言程序设计习题集(3)

指针 一单项选择题(每题2分,共40分) 1 以下叙述中错误的是_B__。 A 在程序中凡是以“#”开始的语句行都是预处理命令行 B 预处理命令行的最后不能以分号表示结束 C #define MAX是合法的宏定义命令行 D C程序对预处理命令行的处理是在程序执行的过程中进行的 2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的是__B_。 A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符 3 若有如下宏定义: #define N 2 #define y(n) ((N+1)*n) 则执行下列语句:z=4*(N+y(5));后的结果是_B__。 A 语句有错误 B z值为68 C z值为60 D z值为180 4 以下程序运行后的输出结果是_A__。 #define F(X,Y) (X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } A 12 B 15 C 16 D 20 5 以下程序运行后的输出结果是_C__。 #define f(x) (x*x) main() { int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } A 64,28 B 4,4 C 4,3 D 64,64 6 若已定义a为int型变量,则__D_是对指针变量p的正确说明和初始化。 A int p=&a; B int *p=a; C int *p=*a; D int *p=&a; 7 已知下列说明语句: static int a[]={2,4,6,8} static int *p[]={a,a+1,a+2,a+3}; int **q; q=p; 则表达式**(q+2)的值是_A__。 A 6 B 2 C 4 D 8 8 下面是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该__C_。 A *px B a C px D &a 9 若指针px为空指针,则_B__。。

c语言程序设计第五版习题答案

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。

#include main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

《C语言程序设计教程(第二版)》习题答案

2 第1章程序设计基础知识 一、单项选择题(第23页) 1-4.CBBC 5-8.DACA 二、填空题(第24页) 1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分 三、应用题(第24页) 2.源程序: main() {int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */ printf("cock hen chick\n"); for(i=1;i<=20;i++) for(j=1;j<=33;j++) for(k=1;k<=33;k++) if (i+j+k*3==100&&i*5+j*3+k==100) printf(" %d %d %d\n",i,j,k*3);} 执行结果: cock hen chick 4 18 78 8 11 81 12 4 84 3.现计算斐波那契数列的前20项。 递推法源程序: main() {long a,b;int i; a=b=1; for(i=1;i<=10;i++) /*要计算前30项,把10改为15。*/ {printf("%8ld%8ld",a,b); a=a+b;b=b+a;}} 递归法源程序: main() {int i; for(i=0;i<=19;i++) printf("%8d",fib(i));} fib(int i) {return(i<=1?1:fib(i-1)+fib(i-2));} 执行结果: 1 1 2 3 5 8 13 21 3 4 55 89 144 233 377 610 987 1597 2584 4181 6765

C语言详解(第五版)第二章程序设计项目答案

C语言详解(第五版)程序设计项目答案第二章 1.编写一个程序,以每英里0.35的费率计算一个售货员的里程偿还金。程序中要求与用户进行如下方式的交互。 #include #include int main(void) {float mile_1,mile_2,miles,consume,payment; printf("MILEAGE REIMBURSEMENT CALCULATOR\n"); printf("Enter begainning odometer reading>\n"); scanf("%f",&mile_1); printf("Enter endding odometer reading>\n"); scanf("%f",&mile_2); printf("Enter consume per mile>\n"); scanf("%f",&consume); miles=mile_2-mile_1; payment=miles*consume; printf("You traveled%f miles.At%f per mile,your reimbursement is%f",miles,consume,payment); system("pause"); return(0); } 2.编写一个程序,用于辅助设计水力发电大坝。提示用户输入大坝高度,以及水流量。如果水由重力所做的功有90%转化为电能,测算会有多少M瓦的功率。 #include #include int main(void) {double density,weight,gravitational_acceleration, efficiency,height,water_flow_rate,work,electricity_power; printf("Please type in the density of water>"); scanf("%lf",&density); printf("Please type in the gravitational_acceleration>"); scanf("%lf",&gravitational_acceleration); printf("Please type in the height of the water>"); scanf("%lf",&height); printf("Please type in the efficiency of the transformation\nfrom water to electricity>"); scanf("%lf",&efficiency); printf("Please type in the water_flow_rate>"); scanf("%lf",&water_flow_rate); weight=density*water_flow_rate; work=weight*height*gravitational_acceleration; electricity_power=work*efficiency/1000000; printf("The electric energy production is%fW",electricity_power); system("pause"); return0; }

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

C语言程序的设计习题参考答案(第二版_杜友福)

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 4. 求1×2×3×…×10的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

C语言程序设计学习指导(第2版) 1-6

第一章概述 一、选择 1.C 2.B 3.C 4.D 5.D 6.A 7.B 8.C 9.A 10.B 11.C 12.D 13.B 14.B 第二章数据类型 一、选择 1.D 2.A 3.C 4.D 5.A 6.B 7.A 8.B 9.A 10.D 11.B 12.C 13.C 14.D 15.C 16.B 17.D 18.A 19.C 20.B 21.B 22.D 23.A 24.B 25.B 26.B 27.C 第三章运算符和表达式 一、选择 1.A 2.D 3.D 4.D 5.D 6.A 7.C 8.C 9.B 10.B 11.C 12.C 13.A 14.A 15.A 16.A 17.B 18.C 19.C 20.D 21.A 22.A 23.C 24.C 25.A 26.B 27.D 28.A 29.B 30.C 31.D 32.D 33.D 34.B 35.A 36.A 37.B 38.C 39.D 40.B 41.B 42.C 43.B 第四章输入和输出 一、选择 1.C 2.D 3.C 4.C 5.C 6.B 7.B 8.C 9.D 10.D 11.D 12.D 13.B 14.A 15.B 16.B 二、编程 1.double fun(double m) { float n; n=(5.0/9.0)*(m-32); return n; } 2. char fun(char c) {c=c+32; return c;} 3.double fun(int m) { double y=0; y=sin(m)*10; return(y); } 4.float fun ( float h ) {return (long)( h * 100 + 0.5 )/ 100.0;}

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

c语言程序设计教程第二版课后习题答案

c 语言程序设计教程第二版课后习题 答 案 篇一: c 语言程序设计教程_李含光_ 郑关胜_ 清华大学 出版社习题答案习题答案[完美打印版]】1.单项选择题 (1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数 (2)主函数(main )(3)printf(),scanf()第 2 章习题参考答案 1.单项选择题 1-5 cbccc 6-10 cdcdc 11-13 dbb 2 .填空题 (1)1(2)26 (3)6 , 4 , 2 (4)10 , 6 (5)3.000000 (6)双精度(double )(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10 )%10 )*100+ (m/100 )*10+m%10 (12)0 (13)10 ,9 ,11(15) (x0y0)||(x0z0)||(y0||z0)(16 )double (17)x==0 (18)sqrt(fabs(a-b))/(3*(a+b))(19 )sqrt((x*x+y*y)/ (a+b)) 第 3 章习题参考答案 1.单项选择题 1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2 .填空题 (1)用;表示结束(2){ } (3 )y=x0?1:x==0?0:-1 (4)y%4==0y%100!=0||y%400==0 (5)上面未配对(6)default 标号(7)while ,do while ,for (8)do while (9)本次(10)本层3.阅读程序,指出结果 (1)yes (2)*(3)abother (4)28 70 (5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12 (11) i=6 ,k=4 (12)1,-2 4 .程序填空 (1)x:y ,u :z (2)m=n ,m !=0 ,m=m/10 (3)teps , t*n/(2*n+1) , printf( n”“,%2*lsf )(4)m%5==0 ,

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

相关文档
最新文档