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

时间:2019-05-12 23:26:14下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《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.A13.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;}

(14 6f)12.B 第五章

一、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=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=%fn”,s*4);【或】 printf(“pi=%fn”,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=%fn”,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 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;km){ 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;ii;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;k0.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]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

三、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]=%dn”,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;iamax)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

a[i][j]*=n;} 11.void fun(int arr[],int n){int i,t;for(i=0;i

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

第九章

一、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!='')【或】 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;ipp[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

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==''&& *q=='')【或】*p!=''|| *q!=''【或】!(*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='' 【或】 *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:'' 【或】 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]=''【或】str2[i]=''【或】str2[n]=0【或】str2[i]=0【或】 *(str2+n)='' 【或】*(str2+i)=''【或】*(str+n)=0【或】*(str2+i)=0 5.位置 1:str 位置 2:str[i]!=''【或】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]=''【或】*(str+k)=''【或】 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 ] = '';【或】t[ i + d ] = '';【或】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]={''};【或】char s[6]=“”;【或】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]!='';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]!='';i++)str2[i]=str1[i];str2[i]='';} 3.void len_cat(char c1[],char c2[]){int i,j;for(i=0;c1[i]!='';i++);for(j=0;c2[j]!='';j++)c1[i+j]=c2[j];c1[i+j]='';} 4.void fun(char *s,int num){ int i,j;char t;for(i=0;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]='';} 10.long fun(char *p){long n=0;int flag=0;while(*p!=''){ 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

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)!='';i++)if(*(ptr+i)<='z'&& *(ptr+i)>='a'||*(ptr+i)<='Z' && *(ptr+i)>='A'){*(ptr+j)=*(ptr+i);j++;} *(ptr+j)='';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].grade

pu[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;imax)max=a[i].s;/*从所有的学生数据中找出最高的分值*/ for(i=0;inext;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;} 第十二章

一、1.D 2.A 3.D 4.B 5.A 6.B 7.D 8.C 9.A 10.D 11.C 12.D 13.D 14.A 15.D 16.B 17.B 18.C 19.D 20.C 21.D 22.C 23.D 24.C 25.B 26.A 27.D 28.D 29.C

二、1.位置 1:n=strlen(str)【或】 for(n=0;str[n]!='';n++)【或】 for(n=0;str[n];n++)【或】 for(n=0;str[n]!=0;n++)位置 2:ii 【或】 i<-1+n 【或】 ii 【或】-1+n>i 【或】 i<=n-1 【或】 n-1>=i 【或】-1+n>=i 位置 3:str[j]>str[j+1]【或】str[j]>str[1+j]【或】 str[j+1]

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

第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 chickn”);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 %dn”,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 2 3 5 8 13 21 34 55

233 377 610 987 1597 2584 4181 6765 4.源程序:

#include “math.h”;main()

{double x,x0,deltax;x=1.5;

do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;

}while(deltax>1e-12);printf(“%.10fn”,x);} 执行结果:

1.3247179572

5.源程序略。(分子、分母均构成斐波那契数列)结果是32.66026079864 6.源程序:

main()

{int a,b,c,m;

printf(“Please input a,b and c:”);scanf(“%d %d %d”,&a,&b,&c);if(a

printf(“%d %d %dn”,a,b,c);} 执行结果:

Please input a,b and c:123 456 789 789 456 123 7.源程序:

main(){int a;

scanf(“%d”,&a);

printf(a%21==0?“Yes”:“No”);} 执行结果:

Yes 第2章 C语言概述

一、单项选择题(第34页)1-4.BDCB 5-8.AABC

二、填空题(第35页)

1.主 2.C编译系统 3.函数 函数 4.输入输出 5.头 6..OBJ 7.库函数 8.文本

三、应用题(第36页)

5.sizeof是关键字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是标识符。

8.源程序: main(){int a,b,c;

scanf(“%d %d”,&a,&b);c=a;a=b;b=c;

printf(“%d %d”,a,b);} 执行结果:34 34 12 第3章 数据类型与运算规则

一、单项选择题(第75页)

1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB

二、填空题(第77页)

1.补码 2.±(10^-308~10^308)3.int(整数)4.单目 自右相左 5.函数调用 6.a或b 7.1 8.65,89

三、应用题(第78页)1.10 9

2.执行结果: 0 0 12 1 第4章 顺序结构程序设计

一、单项选择题(第90页)1-5.DCDAD 6-10.BACBB

二、填空题(第91页)

1.一 ;2.5.169000 3.(1)-2002500(2)I=-200,j=2500(3)i=-200 j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf(“%lf%lf%lf”,&a,&b,&c);9.13 13.000000,13.000000 10.a=a^c;c=c^a;a=a^c;(这种算法不破坏b的值,也不用定义中间变量。)

三、编程题(第92页)

1.仿照教材第27页例2-1。

2.源程序:

main(){int h,m;

scanf(“%d:%d”,&h,&m);printf(“%dn”,h*60+m);} 执行结果:

9:23 563

3.源程序:

main()

{int a[]={-10,0,15,34},i;for(i=0;i<=3;i++)

printf(“%d370C=%g370Ft”,a[i],a[i]*1.8+32);} 执行结果:

-10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F 4.源程序:

main()

{double pi=3.14***9,r=5;

printf(“r=%lg A=%.10lf S=%.10lfn”,r,2*pi*r,pi*pi*r);} 执行结果:

r=5 A=31.4159265359 S=49.3480220054 5.源程序:

#include “math.h”;main()

{double a,b,c;

scanf(“%lf%lf%lf”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){double s=(a+b+c)/2;

printf(“SS=%.10lfn”,sqrt(s*(s-a)*(s-b)*(s-c)));} else printf(“Data error!”);} 执行结果:5 6

SS=9.9215674165 6.源程序:

main()

{int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56;

printf(“a=%3d,b=%-4d,c=**%dnd=%gne=%6.2fnf=%-10.4f**n”,a,b,c,d,e,f);} 7.源程序:

main()

{int a,b,c,m;

scanf(“%d %d %d”,&a,&b,&c);m=a;a=b;b=c;c=m;

printf(“%d %d %dn”,a,b,c);} 执行结果:6 7 6 7 5 8.源程序:

main(){int a,b,c;

scanf(“%d %d %d”,&a,&b,&c);

printf(“average of %d,%d and %d is %.2fn”,a,b,c,(a+b+c)/3.);执行结果: 7 9

average of 6,7 and 9 is 7.33 9.不能。修改后的源程序如下:

main()

{int a,b,c,x,y;

scanf(“%d %d %d”,&a,&b,&c);x=a*b;y=x*c;

printf(“a=%d,b=%d,c=%dn”,a,b,c);printf(“x=%d,y=%dn”,x,y);} 第5章 选择结构程序设计

一、单项选择题(第113页)1-4.DCBB 5-8.DABD

二、填空题(第115页)1.非0 0 2.k==0

3.if(abs(x)>4)printf(“%d”,x);else printf(“error!”);

4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf(“%d”,x);5.k=1(原题最后一行漏了个d,如果认为原题正确,则输出k=%。)6.8!Right!11 7.$$$a=0 8.a=2,b=

1三、编程题(第116页)1.有错。正确的程序如下:

main(){int a,b,c;

scanf(“%d,%d,%d”,&a,&b,&c);

printf(“min=%dn”,a>b?b>c?c:b:a>c?c:a);} 2.源程序:

main()

{unsigned long a;scanf(“%ld”,&a);

for(;a;printf(“%d”,a%10),a/=10);} 执行结果:

12345 54321

3.(1)源程序: main(){int x,y;

scanf(“%d”,&x);if(x>-5&&x<0)y=x;if(x>=0&&x<5)y=x-1;if(x>=5&&x<10)y=x+1;printf(“%dn”,y);}(2)源程序:

main(){int x,y;

scanf(“%d”,&x);

if(x<10)if(x>-5)if(x>=0)if(x>=5)y=x+1;else y=x-1;else y=x;printf(“%dn”,y);}(3)源程序:

main(){int x,y;

scanf(“%d”,&x);

if(x<10)if(x>=5)y=x+1;else if(x>=0)y=x-1;else if(x>-5)y=x;printf(“%dn”,y);}(4)源程序:

main(){int x,y;

scanf(“%d”,&x);switch(x/5)

{case-1:if(x!=-5)y=x;break;case 0:y=x-1;break;case 1:y=x+1;} printf(“%dn”,y);}

4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。

现给出Delphi源程序和C++ Builder源程序。

Delphi源程序:

procedure TForm1.Button1Click(Sender: TObject);begin

edit3.Text:=format('%.0f天',[strtodate(edit2.text)-strtodate(edit1.text)]);end;

procedure TForm1.FormCreate(Sender: TObject);begin

Edit2.Text:=datetostr(now);button1click(form1)end;

C++ Builder源程序: void __fastcall TForm1::Button1Click(TObject *Sender){

Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+“天”;}

void __fastcall TForm1::FormCreate(TObject *Sender){

Edit2->Text=DateToStr(Now());Button1Click(Form1);}

执行结果:(运行于Windows下)http://img378.photo.163.com/nxgt/41463572/1219713927.jpg

5.源程序:

main()

{unsigned a,b,c;

printf(“请输入三个整数:”);

scanf(“%d %d %d”,&a,&b,&c);

if(a&&b&&c&&a==b&&a==c)printf(“构成等边三角形n”);else if(a+b>c&&a+c>b&&b+c>a)

if(a==b||a==c||b==c)printf(“构成等腰三角形n”);else printf(“构成一般三角形n”);else printf(“不能构成三角形n”);} 执行结果:

请输入三个整数:5 6 5 构成等腰三角形

6.源程序:

main(){int x,y;

scanf(“%d”,&x);if(x<20)y=1;else switch(x/60)

{case 0:y=x/10;break;default:y=6;}

printf(“x=%d,y=%dn”,x,y);} 7.源程序:

main()

{unsigned m;float n;scanf(“%d”,&m);if(m<100)n=0;

else if(m>600)n=0.06;else n=(m/100+0.5)/100;

printf(“%d %.2f %.2fn”,m,m*(1-n),m*n);} 执行结果:

450 450 429.75 20.25

8.2171天(起始日期和终止日期均算在内)

本题可利用第4小题编好的程序进行计算。把起始日期和终止日期分别打入“生日”和“今日”栏内,单击“实足年龄”按钮,将所得到的天数再加上1天即可。

9.源程序:

#include “math.h”;main()

{unsigned long i;scanf(“%ld”,&i);

printf(“%ld %dn”,i%10,(int)log10(i)+1);} 执行结果:

99887 7 5

10.源程序:

main()

{unsigned long i;unsigned j[10],m=0;scanf(“%ld”,&i);

for(;i;){j[m++]=(i+2)%10;i/=10;} for(;m;m--)i=i*10+j[m-1];printf(“%ldn”,i);} 执行结果:

6987 8109

(注:要加密的数值不能是0或以0开头。如果要以0开头需用字符串而不能是整数。)第6章 循环结构程序设计

一、单项选择题(第142页)1-4.BCCB 5-8.CBCA

二、填空题(第143页)

1.原题可能有误。如无误,是死循环 2.原题有误。如果把b=1后面的逗号改为分号,则结果是8。3.20 4.11 5.2.400000 6.*#*#*#$ 7.8 5 2 8.①d=1.0 ②++k ③k<=n 9.①x>=0 ②x

三、编程题(第145页)1.源程序:

main()

{int i=1,sum=i;

while(i<101){sum+=i=-i-2;sum+=i=-i+2;} printf(“%dn”,sum);} 执行结果: 51

2.源程序: main()

{double p=0,n=0,f;int i;for(i=1;i<=10;i++){scanf(“%lf”,&f);

if(f>0)p+=f;else n+=f;}

printf(“%lf %lf %lfn”,p,n,p+n);} 3.源程序:

main()

{unsigned a;scanf(“%ld”,&a);

for(;a;printf(“%d,”,a%10),a/=10);printf(“b n”);} 执行结果:

23456 6,5,4,3,2 4.源程序:

main()

{unsigned long a,b,c,i;scanf(“%ld%ld”,&a,&b);c=a%1000;

for(i=1;i

57 009 5.略

6.原题提供的计算e的公式有误(前面漏了一项1)。正确的公式是e= 1 + 1 + 1/2!+ 1/3!+ … + 1/n!+ …(1)源程序:

main()

{double e=1,f=1;int n;

for(n=1;n<=20;n++){f/=n;e+=f;} printf(“e=%.14lfn”,e);} 执行结果:

e=2.7***05(2)源程序:

main()

{double e=1,f=1;int n;

for(n=1;f>1e-4;n++){f/=n;e+=f;} printf(“e=%.4fn”,e);} 执行结果:

e=2.7183 7.源程序:

main()

{unsigned long a=0,b=1,c=0;int i,d;scanf(“%d”,&d);

for(i=1;i<=(d+2)/3;i++)

printf(“%10ld%10ld%10ld”,a,b,(a+=b+c,b+=c+a,c+=a+b));} 本题还可以用递归算法(效率很低),源程序如下:

unsigned long fun(int i)

{return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3);} main()

{int i,d;scanf(“%d”,&d);for(i=1;i<=d;i++)

printf(“%10ld”,fun(i));} 执行结果:

68

230 423 778 1431 2632 4841 8.源程序:

main(){int i;

for(i=1010;i<=9876;i+=2)

if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf(“ %d”,i);} 执行结果:

1024 1026 1028 1032 1034 1036 …… …… 9874 9876 9.源程序:

main(){int i,j,k;

printf(“apple watermelon pearn”);for(i=1;i<=100;i++)for(j=1;j<=10;j++)

if((k=100-i-j)*2==400-i*4-j*40)printf(“%4d%7d%9dn”,i,j,k);} 执行结果:

apple watermelon pear 5 5 90 24 4 72 43 3 54 62 2 36 81 1 18 10.源程序:

#include “stdio.h”;

#define N 4 /* N为阶数,可以改为其他正整数 */ main(){int m=N*2,i,j;

for(i=1;i

putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'));} 如果把N值改为5,则执行结果如下:

* *** ***** ******* ********* ******* ***** *** *

作者:宁西贯通 2006-5-7 23:41 回复此发言

------------------说明

注意:上面最后一题的输出结果应该是由星号组成的一个菱形,第7章 数 组

一、单项选择题(第192页)1-4.BBCC 5-8.AABA

二、填空题(第194页)

1.1 2 4 8 16 32 64 128 256 512

2.①a[age]++ ②i=18;i<26 3.①break ②i==8

4.①a[i]>b[j] ②i<3 ③j<5

5.①b[j]=a[j][0] ②b[j]

三、编程题(第196页)1.源程序:

main()

{int a[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)scanf(“%d”,&a[i][j]);for(i=0;i<4;i++)for(j=0;j<4;j++)

if(i==j||i+j==3)s+=a[i][j];

printf(“%dn”,s);} /* 注:5×5矩阵不能照此计算!*/ 执行结果: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 68

2.源程序:

main()

{int i,a[36];a[0]=2;

for(i=1;i<=29;i++)a[i]=a[i-1]+2;for(;i<=35;i++)a[i]=a[(i-30)*5+2];for(i=0;i<=35;i++)printf(“%dt”,a[i]);} 执行结果: 4 6 8 10 12 14 16 18 20 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 6 16 26 36 46 56 3.源程序:

#include “stdlib.h” #include “time.h” main()

{int a[30],i,m=0;randomize();

for(i=0;i<=29;i++){a[i]=rand();if(m

for(i=0;i<=29;i++)if(a[i]==m)a[i]=-1;printf(“n-----------------n”);for(i=0;i<=29;i++)

if(~a[i])printf(“%dt”,a[i]);printf(“n”);} 执行结果:

20679 29377 18589 9034 27083 4959 3438 5241 32278 23344 32499 29305 22340 5927 13031 2161 2583 31855 22977 14283 4851 22038 6992 11394 20887 27381 6293 18347 16414 10210-----------------

20679 29377 18589 9034 27083 4959 3438 5241 32278 23344 29305 22340 5927 13031 2161 2583 31855 22977 14283 4851 22038 6992 11394 20887 27381 6293 18347 16414 10210 4.源程序:

main()

{int i,n=0,b[16];scanf(“%d”,&i);

for(;i;i>>=1)b[n++]=i&1;for(;n;)printf(“%d”,b[--n]);} 执行结果:

9876

10011010010100

本题也可以不用数组。源程序如下:

#include “stdio.h” main(){int i,n;

scanf(“%d”,&i);for(n=16;n;n--){asm ROL i,1

putchar(i&1|48);}

} /* ROL是循环左移的汇编指令 */ 5.源程序:

#include “stdlib.h” #include “time.h” #define M 5 #define N 6 main()

{int a[M][N],i,j,t[M];randomize();

/*生成M行N列随机数*/

for(i=0;i

printf(“%4d”,a[i][j]=random(50));

/*找出每行的最小数,t[M]是第M行的最小数所在的列数*/ for(i=0;i

if(a[i][t[i]]>a[i][j])t[i]=j;

/*比较每个最小数在其所在的列上是否也是最小*/ for(j=0;ja[i][t[j]]){t[j]=-1;break;} }

printf(“-------------------n”);

/*输出在行和列上均为最小的数*/ for(i=0;i

printf(“a[%d,%d]=%dn”,i,t[i],a[i][t[i]]);}

执行结果:

13 20 0 1 20 41 6 16 35 30 3 5 37 8 23 15 6 36 24 29 18 1 1 5 28 21 46 34-------------------a[0,4]=0 a[1,2]=6 a[3,5]=1 a[4,0]=1 6.源程序:

#include “stdlib.h” #include “time.h” #define M 5 #define N 7 main()

{int a[M][N],i,j,t=0;randomize();for(i=0;i

for(j=0;j

{printf(“%4d”,a[i][j]=random(91)+10);a[i][N-1]+=a[i][j];}

printf(“%4dn”,a[i][N-1]);} for(i=1;i

if(a[i][N-1]>a[t][N-1])t=i;if(t)for(j=0;j

{i=a[0][j];a[0][j]=a[t][j];a[t][j]=i;} printf(“-----------------n”);for(i=0;i

第7章 数 组 for(j=0;j

执行结果:

17 32 95 35 20 288 39 48 22 27 73 22 231 51 87 39 71 84 46 378 84 94 97 77 27 26 405 69 50 56 89 37 46 347-----------------

77 27 26 405 39 48 22 27 73 22 231 51 87 39 71 84 46 378 89 17 32 95 35 20 288 69 50 56 89 37 46 347 7.源程序:

#include “stdlib.h” #include “time.h” #define M 5 #define N 6 main()

{int a[M][N],i,j;

struct data{int value,x,y;}max,min;max.value=0;min.value=100;randomize();

for(i=0;i

{printf(“%4d”,a[i][j]=random(100)+1);if(max.value

{max.value=a[i][j];max.x=i;max.y=j;} if(min.value>a[i][j])

{min.value=a[i][j];min.x=i;min.y=j;} }

printf(“-----------------n”);

i=a[0][N-1];a[0][N-1]=max.value;a[max.x][max.y]=i;i=a[M-1][0];a[M-1][0]=min.value;a[min.x][min.y]=i;for(i=0;i

执行结果:

65 30 40 30 26 50 6 61 27 47 16 54 58 76 19 57 74 44 92 71 48 73 57 60 32 73 67-----------------

65 30 92 30 26 50 73 61 27 47 16 54 58 76 19 57 74 44 40 71 48 6 57 60 32 73 67 9.源程序:

main()

{char s[255];int i,j,b=1;printf(“Input a string:”);scanf(“%s”,s);i=strlen(s);

for(j=1;j<=i/2;j++)b=b&&(s[j-1]==s[i-j]);printf(b?“Yesn”:“Non”);} 执行结果:

Input a string:level Yes

10.源程序:

main()

{char s[255],t,max=0,min=0,l,i;printf(“Input a string(length>4):”);gets(s);l=strlen(s);

for(i=0;i

{if(s[max]s[i])min=i;}

t=s[1];s[1]=s[max];s[max]=t;if(min==1)min=max;t=s[l-2];s[l-2]=s[min];s[min]=t;printf(“%sn”,s);} 执行结果:

Input a string(length>4):C++Builder Cu+Beild+r 11.源程序:

main()

{char m[13][10]={“****”,“January”,“February”,“March”, “April”,“May”,“June”,“July”,“August”,“September”, “October”,“November”,“December”};int i,j,k,a,s,n;

printf(“Please input an integer(100..999):”);scanf(“%d”,&n);

printf(“%d:%d+%d+%d=%d, %d%%13=%d, %sn”, n,i,j,k,s,s,a,m[a=((s=(i=n/100)+(j=n/10%10)+(k=n%10))%13)]);} 执行结果:

Please input an integer(100..999):539 539:5+3+9=17, 17%13=4, April 第8章 函 数

一、单项选择题(第241页)

1-5.BCCAA 6-10.CCDDD 11-15.ACACB

二、填空题(第243页)

1.看不出原题的意图。因为要计算1~n的累加和,n应是一个≥1的正整数。可是题目中却出现了n=0的情况。除非另加规定当n=0时1~n的累加和为0,或者把原题中的计算式改为计算0~n的累加和。据此猜测,原题应填为:①return(0)②return(n+sum(n-1))根据题意,如下程序较为合理:

int sum(int n)

{if(n<=0)return(-1);/*-1是出错标志 */ else if(n==1)return(1);else return(n+sum(n-1));}

2.①return(1)②return(n*facto(n-1))

三、编程题(第244页)3.源程序:

main()

{int i,a,b,c;

for(i=100;i<999;i++)

if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i)printf(“%dt”,i);} 执行结果:

153 370 371 407

8.源程序(非递归算法):

#define P 13 /* P可以改为其他正整数 */

main()

{int a[P],r,c;

for(r=0;r<=P;r++){a[r]=1;

for(c=r-1;c>=1;a[c--]+=a[c-1]);printf(“%*d”,(P-r)*3+1,a[0]);

for(c=1;c<=r;printf(“%6d”,a[c++]));printf(“n”);} }

执行结果:

(应该排列成一个三角形,是贴吧造成现在这个样子的,不是程序有问题)1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1

126 84 36 9 1

210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1 1 12 66 220 495 792 924 792 495 220 66 12 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 9.源程序(递归算法):

#include “stdio.h”

void printOCT(unsigned long n){unsigned long i;

if(i=n>>3)printOCT(i);putchar((n&7)+48);} main()

{unsigned long i;scanf(“%ld”,&i);printOCT(i);} 执行结果:

1234567890 11145401322

本题也可以不用递归算法,源程序请参考第7章第三题4。回复:【C语言】《C语言程序设计教程(第二版)》习题答案

但是不同时间印刷的版本课后题不太一样呢,象我们的是1999年12月第2版,2005年12月第69次印刷的。没有选择填空,应用题和楼主不知道有多少相同的,因为看不到原题。这个比较麻烦呢。

作者:210.77.204.* 2006-5-9 18:38 回复此发言

------------------回复:【C语言】《C语言程序设计教程(第二版)》习题答案

你对照一下主编和出版社,看看对吗?(见说明的第一条。)14 第9章 指 针

一、单项选择题(第276页)

1-5.DCDAC 6-10.CCABC 11-16.AABBB 16-20.DCDBD

二、填空题(第278页)1.①int * ②*z

2.*p++

3.①'' ②++

4.①q=p+1 ②q

max ④*q

三、编程题(第280页)7.源程序:

main()

{int i=0;char c[20];

do{scanf(“%s”,&c);i++;} while(strcmp(c,“stop”));printf(“%dn”,i);} 执行结果:

This car ran form Nanyang to Luoyang without a stop 10

9.源程序:

main()

{char s[255],c[255]={0};int i;gets(s);

for(i=0;s[i];c[s[i++]]++);for(i=0;i<255;i++)

if(c[i])printf(“%c=%dt”,i,c[i]);} 执行结果:

abcedabcdcd

a=2 b=2 c=3 d=3 e=1

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

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

1.本习题答案是我自己做的,错误和疏漏在所难免。编程题全部调试通过,但选择题和填空题不敢保证全对。

2.凡未指明解题所用的程序设计语言的,均指C语言。

3.凡未指明执行程序所需的操作系统的,均可在DOS下执行。4.本文中文字下面划线的表示输入。

第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 ”);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 ”,i,j,k*3);} 执行结果: cock hen chick

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));} 执行结果:

233 377 610 987 1597 2584 4181 6765 4.源程序:

#include “math.h”;main(){double x,x0,deltax;x=1.5;do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;}while(deltax>1e-12);printf(“%.10f ”,x);} 执行结果: 1.3247179572

5.源程序略。(分子、分母均构成斐波那契数列)结果是32.66026079864 6.源程序: main(){int a,b,c,m;printf(“Please input a,b and c:”);scanf(“%d %d %d”,&a,&b,&c);if(a

Please input a,b and c:123 456 789 789 456 123 7.源程序: main(){int a;scanf(“%d”,&a);printf(a%21==0?“Yes”:“No”);} 执行结果: 42 Yes 第2章 C语言概述

一、单项选择题(第34页)1-4.BDCB 5-8.AABC

二、填空题(第35页)1.主 2.C编译系统 3.函数 函数 4.输入输出 5.头 6..OBJ 7.库函数 8.文本

三、应用题(第36页)5.sizeof是关键字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是标识符。

8.源程序: main(){int a,b,c;scanf(“%d %d”,&a,&b);c=a;a=b;b=c;printf(“%d %d”,a,b);} 执行结果: 12 34 34 12 第3章 数据类型与运算规则

一、单项选择题(第75页)1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB

二、填空题(第77页)1.补码

2.±(10-308~10308)3.int(整数)4.单目 自右相左

5.函数调用

6.a或b

7.1

8.65,89

三、应用题(第78页)1.10 9 2.执行结果: 11 0 0 12 1 第4章 顺序结构程序设计

一、单项选择题(第90页)1-5.DCDAD 6-10.BACBB

二、填空题(第91页)1.一 ;2.5.169000 3.(1)-2002500(2)I=-200,j=2500(3)i=-200 j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3

7.3

8.scanf(“%lf%lf%lf”,&a,&b,&c);9.13 13.000000,13.000000 10.a=a^c;c=c^a;a=a^c;(这种算法不破坏b的值,也不再定义中间变量。)

三、编程题(第92页)1.仿照教材第27页例2-1。2.源程序: main(){int h,m;scanf(“%d:%d”,&h,&m);printf(“%d ”,h*60+m);} 执行结果: 9:23 563 3.源程序: main(){int a[]={-10,0,15,34},i;for(i=0;i<=3;i++)printf(“%d370C=%g370Ft”,a[i],a[i]*1.8+32);} 执行结果:

-10℃=14°F

0℃=32°F

15℃=59°F

34℃=93.2°F 4.源程序: main(){double pi=3.14***9,r=5;printf(“r=%lg A=%.10lf S=%.10lf ”,r,2*pi*r,pi*pi*r);} 执行结果:

r=5 A=31.4159265359 S=49.3480220054 5.源程序:

#include “math.h”;main(){double a,b,c;scanf(“%lf%lf%lf”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){double s=(a+b+c)/2;printf(“SS=%.10lf ”,sqrt(s*(s-a)*(s-b)*(s-c)));} else printf(“Data error!”);} 执行结果: 4 5 6 SS=9.9215674165 6.源程序: main(){int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56;printf(“a=%3d,b=%-4d,c=**%d d=%g e=%6.2f f=%-10.4f** ”,a,b,c,d,e,f);} 7.源程序: main(){int a,b,c,m;scanf(“%d %d %d”,&a,&b,&c);m=a;a=b;b=c;c=m;printf(“%d %d %d ”,a,b,c);} 执行结果: 5 6 7 6 7 5 8.源程序: main(){int a,b,c;scanf(“%d %d %d”,&a,&b,&c);printf(“average of %d,%d and %d is %.2f ”,a,b,c,(a+b+c)/3.);执行结果: 6 7 9 average of 6,7 and 9 is 7.33 9.不能。修改后的源程序如下: main(){int a,b,c,x,y;scanf(“%d %d %d”,&a,&b,&c);x=a*b;y=x*c;printf(“a=%d,b=%d,c=%d ”,a,b,c);printf(“x=%d,y=%d ”,x,y);}

第5章 选择结构程序设计

一、单项选择题(第113页)1-4.DCBB 5-8.DABD

二、填空题(第115页)1.非0 0

2.k==0 3.if(abs(x)>4)printf(“%d”,x);else printf(“error!”);4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf(“%d”,x);5.k=1(原题最后一行漏了个d,如果认为原题正确,则输出k=%。)6.8!Right!11

7.$$$a=0

8.a=2,b=1

三、编程题(第116页)1.有错。正确的程序如下: main(){int a,b,c;scanf(“%d,%d,%d”,&a,&b,&c);printf(“min=%d ”,a>b?b>c?c:b:a>c?c:a);} 2.源程序: main(){unsigned long a;scanf(“%ld”,&a);for(;a;printf(“%d”,a%10),a/=10);} 执行结果: 12345 54321 3.(1)源程序: main(){int x,y;scanf(“%d”,&x);if(x>-5&&x<0)y=x;if(x>=0&&x<5)y=x-1;if(x>=5&&x<10)y=x+1;printf(“%d ”,y);}(2)源程序: main(){int x,y;scanf(“%d”,&x);if(x<10)if(x>-5)if(x>=0)if(x>=5)y=x+1;else y=x-1;else y=x;printf(“%d ”,y);}(3)源程序: main(){int x,y;scanf(“%d”,&x);if(x<10)if(x>=5)y=x+1;else if(x>=0)y=x-1;

else if(x>-5)y=x;printf(“%d ”,y);}(4)源程序: main(){int x,y;scanf(“%d”,&x);switch(x/5){case-1:if(x!=-5)y=x;break;case 0:y=x-1;break;case 1:y=x+1;} printf(“%d ”,y);} 4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。现给出Delphi源程序和C++ Builder源程序。Delphi源程序: procedure TForm1.Button1Click(Sender: TObject);begin edit3.Text:=format('%.0f天',[strtodate(edit2.text)-strtodate(edit1.text)]);end;procedure TForm1.FormCreate(Sender: TObject);begin Edit2.Text:=datetostr(now);button1click(form1)end;C++ Builder源程序:

void __fastcall TForm1::Button1Click(TObject *Sender){ Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+“天”;} void __fastcall TForm1::FormCreate(TObject *Sender){ Edit2->Text=DateToStr(Now());Button1Click(Form1);} 执行结果:(运行于Windows下)

5.源程序: main(){unsigned a,b,c;printf(“请输入三个整数:”);scanf(“%d %d %d”,&a,&b,&c);if(a&&b&&c&&a==b&&a==c)printf(“构成等边三角形 ”);else if(a+b>c&&a+c>b&&b+c>a)if(a==b||a==c||b==c)printf(“构成等腰三角形 ”);

else printf(“构成一般三角形 ”);

else printf(“不能构成三角形 ”);} 执行结果:

请输入三个整数:5 6 5 构成等腰三角形 6.源程序: main(){int x,y;scanf(“%d”,&x);if(x<20)y=1;else switch(x/60){case 0:y=x/10;break;default:y=6;} printf(“x=%d,y=%d ”,x,y);} 7.源程序: main(){unsigned m;float n;scanf(“%d”,&m);if(m<100)n=0;else if(m>600)n=0.06;

else n=(m/100+0.5)/100;printf(“%d %.2f %.2f ”,m,m*(1-n),m*n);} 执行结果:

450 450 429.75 20.25 8.2171天(起始日期和终止日期均算在内)

本题可利用第4小题编好的程序进行计算。把起始日期和终止日期分别打入“生日”和“今日”栏内,单击“实足年龄”按钮,将所得到的天数再加上1天即可。9.源程序:

#include “math.h”;main(){unsigned long i;scanf(“%ld”,&i);printf(“%ld %d ”,i%10,(int)log10(i)+1);} 执行结果: 99887 7 5 10.源程序: main(){unsigned long i;unsigned j[10],m=0;scanf(“%ld”,&i);for(;i;){j[m++]=(i+2)%10;i/=10;} for(;m;m--)i=i*10+j[m-1];printf(“%ld ”,i);} 执行结果:

6987 8109(注:要加密的数值不能是0或以0开头)第6章 循环结构程序设计

一、单项选择题(第142页)1-4.BCCB 5-8.CBCA

二、填空题(第143页)1.原题可能有误。如无误,是死循环

2.原题有误。如果把b=1后面的逗号改为分号,则结果是8。

3.20

4.11

5.2.400000

6.*#*#*#$

7.8 5 2

8.①d=1.0 ②++k ③k<=n 9.①x>=0 ②x

三、编程题(第145页)1.源程序: main(){int i=1,sum=i;while(i<101){sum+=i=-i-2;sum+=i=-i+2;} printf(“%d ”,sum);} 执行结果: 51 2.源程序: main(){double p=0,n=0,f;int i;for(i=1;i<=10;i++){scanf(“%lf”,&f);

if(f>0)p+=f;else n+=f;} printf(“%lf %lf %lf ”,p,n,p+n);} 3.源程序: main(){unsigned long a;scanf(“%ld”,&a);for(;a;printf(“%d,”,a%10),a/=10);printf(“b ”);} 执行结果: 23456 6,5,4,3,2 4.源程序: main(){unsigned long a,b,c,i;scanf(“%ld%ld”,&a,&b);c=a%1000;for(i=1;i

6.原题提供的计算e的公式有误(前面漏了一项1)。正确的公式是e= 1 + 1 + 1/2!+ 1/3!+ „ + 1/n!+ „(1)源程序: main(){double e=1,f=1;int n;for(n=1;n<=20;n++){f/=n;e+=f;} printf(“e=%.14lf ”,e);} 执行结果:

e=2.7***05(2)源程序: main(){double e=1,f=1;int n;for(n=1;f>1e-4;n++){f/=n;e+=f;} printf(“e=%.4f ”,e);} 执行结果: e=2.7183 7.源程序: main(){unsigned long a=0,b=1,c=0;int i,d;scanf(“%d”,&d);for(i=1;i<=(d+2)/3;i++)printf(“%10ld%10ld%10ld”,a,b,(a+=b+c,b+=c+a,c+=a+b));} 本题还可以用递归算法(效率很低),源程序如下: unsigned long fun(int i){return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3);} main(){int i,d;scanf(“%d”,&d);for(i=1;i<=d;i++)printf(“%10ld”,fun(i));} 执行结果: 15

125

230

423

778 1431 2632 4841 8.源程序: main(){int i;for(i=1010;i<=9876;i+=2)if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf(“ %d”,i);} 执行结果:

1024 1026 1028 1032 1034 1036 …… …… 9874 9876 9.源程序: main(){int i,j,k;printf(“apple watermelon pear ”);for(i=1;i<=100;i++)for(j=1;j<=10;j++)

if((k=100-i-j)*2==400-i*4-j*40)

printf(“%4d%7d%9d ”,i,j,k);} 执行结果:

apple watermelon pear

10.源程序:

#include “stdio.h”;#define N 4

/* N为阶数,可以改为其他正整数main(){int m=N*2,i,j;for(i=1;i

putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'));} 如果把N值改为5,则执行结果如下:

*

***

***** ******* ********* *******

*****

***

* 第7章 数 组

一、单项选择题(第192页)1-4.BBCC 5-8.AABA

二、填空题(第194页)1.1 2 4 8 16 32 64 128 256 512(每个数占一行)2.①a[age]++ ②i=18;i<26

3.①break ②i==8 4.①a[i]>b[j] ②i<3 ③j<5

5.①b[j]=a[j][0] ②b[j]

*/

三、编程题(第196页)1.源程序: main(){int a[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)scanf(“%d”,&a[i][j]);for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s+=a[i][j];printf(“%d ”,s);} /* 注:5×5矩阵不能照此计算!*/ 执行结果: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 68 2.源程序: main(){int i,a[36];a[0]=2;for(i=1;i<=29;i++)a[i]=a[i-1]+2;for(;i<=35;i++)a[i]=a[(i-30)*5+2];for(i=0;i<=35;i++)printf(“%dt”,a[i]);} 执行结果: 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 6 26 36 46 56 3.源程序:

#include “stdlib.h” #include “time.h” main(){int a[30],i,m=0;randomize();for(i=0;i<=29;i++){a[i]=rand();

if(m

printf(“%dt”,a[i]);} for(i=0;i<=29;i++)if(a[i]==m)a[i]=-1;printf(“-----------------”);for(i=0;i<=29;i++)if(~a[i])printf(“%dt”,a[i]);printf(“ ”);} 执行结果:

20679 29377 18589 9034 27083 4959 3438 5241 32278 23344 32499 29305 22340 5927 13031 2161 2583 31855 22977 14283 4851 22038 6992 11394 20887 27381 6293 18347 16414 10210-----------------20679 29377 18589 9034 27083 4959 3438 5241 32278 23344 29305 22340 5927 13031 2161 2583 31855 22977 14283 4851 22038 6992 11394 20887 27381 6293 18347 16414 10210 4.源程序: main(){int i,n=0,b[16];scanf(“%d”,&i);for(;i;i>>=1)b[n++]=i&1;for(;n;)printf(“%d”,b[--n]);} 执行结果: 9876 10011010010100 本题也可以不用数组。源程序如下: #include “stdio.h” main(){int i,n;scanf(“%d”,&i);for(n=16;n;n--){asm ROL i,1

putchar(i&1|48);} } /* ROL是循环左移的汇编指令

*/ 5.源程序:

#include “stdlib.h” #include “time.h” #define M 5 #define N 6 main(){int a[M][N],i,j,t[M];randomize();/*生成M行N列随机数*/ for(i=0;i

printf(“%4d”,a[i][j]=random(50));/*找出每行的最小数,t[M]是第M行的最小数所在的列数*/ for(i=0;i

if(a[i][t[i]]>a[i][j])t[i]=j;/*比较每个最小数在其所在的列上是否也是最小*/ for(j=0;j

for(i=0;i

{if(i==j)continue;

if(a[j][t[j]]>a[i][t[j]])

{t[j]=-1;break;}

} printf(“-------------------”);/*输出在行和列上均为最小的数*/ for(i=0;i

printf(“a[%d,%d]=%d ”,i,t[i],a[i][t[i]]);} 执行结果: 19 13 20

0 41 16 35 30 37 23 15

36 24 29 18 28 21 46 34-------------------a[0,4]=0 a[1,2]=6 a[3,5]=1 a[4,0]=1 6.源程序:

#include “stdlib.h” #include “time.h” #define M 5 #define N 7 main(){int a[M][N],i,j,t=0;randomize();for(i=0;i

for(j=0;j

{printf(“%4d”,a[i][j]=random(91)+10);

a[i][N-1]+=a[i][j];}

printf(“%4d ”,a[i][N-1]);} for(i=1;ia[t][N-1])t=i;if(t)for(j=0;j

printf(“%4d”,a[i][j]);} 执行结果:

17 32 95 35 20 288

48 22 27 73 22 231

87 39 71 84 46 378

94 97 77 27 26 405

50 56 89 37 46 347-----------------

94 97 77 27 26 405

48 22 27 73 22 231

87 39 71 84 46 378

17 32 95 35 20 288

50 56 89 37 46 347 7.源程序:

#include “stdlib.h” #include “time.h” #define M 5 #define N 6 main(){int a[M][N],i,j;struct data{int value,x,y;}max,min;max.value=0;min.value=100;randomize();for(i=0;i

for(j=0;j

{printf(“%4d”,a[i][j]=random(100)+1);

if(max.value

{max.value=a[i][j];max.x=i;max.y=j;}

if(min.value>a[i][j])

{min.value=a[i][j];min.x=i;min.y=j;}

} printf(“-----------------”);i=a[0][N-1];a[0][N-1]=max.value;a[max.x][max.y]=i;i=a[M-1][0];a[M-1][0]=min.value;a[min.x][min.y]=i;for(i=0;i

printf(“%4d”,a[i][j]);} 执行结果:

53 74 65 30 40 26 50 61 27

16 54 58 76 19

74 44 92 71 48

57 60 32 73 67-----------------

53 74 65 30 92 26 50 73 61 27

16 54 58 76 19

74 44 40 71 48

57 60 32 73 67 9.源程序: main(){char s[255];int i,j,b=1;printf(“Input a string:”);scanf(“%s”,s);i=strlen(s);for(j=1;j<=i/2;j++)b=b&&(s[j-1]==s[i-j]);printf(b?“Yes ”:“No ”);} 执行结果:

Input a string:level Yes 10.源程序: main(){char s[255],t,max=0,min=0,l,i;printf(“Input a string(length>4):”);gets(s);l=strlen(s);for(i=0;is[i])min=i;} t=s[1];s[1]=s[max];s[max]=t;if(min==1)min=max;t=s[l-2];s[l-2]=s[min];s[min]=t;printf(“%s ”,s);} 执行结果:

Input a string(length>4):C++Builder Cu+Beild+r 11.源程序: main(){char m[13][10]={“****”,“January”,“February”,“March”, “April”,“May”,“June”,“July”,“August”,“September”, “October”,“November”,“December”};int i,j,k,a,s,n;printf(“Please input an integer(100..999):”);scanf(“%d”,&n);printf(“%d:%d+%d+%d=%d, %d%%13=%d, %s ”, n,i,j,k,s,s,a,m[a=((s=(i=n/100)+(j=n/10%10)+(k=n%10))%13)]);} 执行结果:

Please input an integer(100..999):539 539:5+3+9=17, 17%13=4, April 第8章 函

一、单项选择题(第241页)1-5.BCCAA 6-10.CCDDD 11-15.ACACB

二、填空题(第243页)1.看不出原题的意图。因为要计算1~n的累加和,n应是一个≥1的正整数。可是题目中却出现了n=0的情况。除非另加规定当n=0时1~n的累加和为0,或者把原题中的计算式改为计算0~n的累加和。据此猜测,原题应填为:①return(0)②return(n+sum(n-1))根据题意,如下程序较为合理: int sum(int n){if(n<=0)return(-1);/*-1是出错标志 */ else if(n==1)return(1);

else return(n+sum(n-1));} 2.①return(1)②return(n*facto(n-1))

三、编程题(第244页)3.源程序: main(){int i,a,b,c;for(i=100;i<999;i++)if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i)printf(“%dt”,i);} 执行结果:

153

370

371

407 8.源程序(非递归算法):

#define P 13 /* P可以改为其他正整数

*/ main(){int a[P],r,c;for(r=0;r<=P;r++){a[r]=1;

for(c=r-1;c>=1;a[c--]+=a[c-1]);

printf(“%*d”,(P-r)*3+1,a[0]);

for(c=1;c<=r;printf(“%6d”,a[c++]));

printf(“ ”);} } 执行结果:

126

126

120

210

252

210

120

165

330

462

462

330

165

220

495

792

924

792

495

220

286

715 1287 1716 1716 1287

715

286

9.源程序(递归算法): #include “stdio.h” void printOCT(unsigned long n){unsigned long i;if(i=n>>3)printOCT(i);putchar((n&7)+48);} main(){unsigned long i;scanf(“%ld”,&i);printOCT(i);} 执行结果: 1234567890 11145401322 本题也可以不用递归算法,源程序请参考第7章第三题4。第9章 指

一、单项选择题(第276页)1-5.DCDAC 6-10.CCABC 11-16.AABBB 16-20.DCDBD

二、填空题(第278页)1.①int * ②*z

2.*p++

3.①''

②++ 4.①q=p+1 ②q

max ④*q

三、编程题(第280页)7.源程序: main(){int i=0;char c[20];do{scanf(“%s”,&c);i++;} while(strcmp(c,“stop”));printf(“%d ”,i);} 执行结果:

This car ran form Nanyang to Luoyang without a stop 10 9.源程序: main(){char s[255],c[255]={0};int i;gets(s);for(i=0;s[i];c[s[i++]]++);for(i=0;i<255;i++)if(c[i])printf(“%c=%dt”,i,c[i]);} 执行结果: abcedabcdcd a=2

b=2

c=3

d=3

第10章

结构、联合与枚举类型

一、单项选择题(第326页)1-4.DDAA

e=1

第四篇:C语言程序设计学习探讨

C语言程序设计学习探讨

罗××

(湖南理工学院物电学院电子09-2BF班,学号14092500×××,序号003,湖南 岳阳 414000)

摘要:本文对c语言的难点、学习方法等方面作了简要的介绍,并谈到了一些个人的学习心得,仅供参考。

关键字:C语言;程序结构;指针;心得体会

A Study of the Learning of C Language Program Design

Luo × ×

(Hunan Institute of Science and Technology, school of Physics and Electronics, Yueyang,Hunan, China 414000)

Abstract: In this paper,C language's difficulties, learning methods are briefly introduced

and describes some of the personal learning experience, for reference only.Key words: C language;program structure;pointer;feelings and experience

C语言是在国内外广泛使用的一种计算机语言,它具有功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性高等特点,但由于c语言牵涉的概念比较复杂,规则繁多,使用灵活,容易出错,不少初学者感到困难。在此

本人谈谈自己的体会和见解。1我的C语言基础分析

通过上学期所开设的《c语言程序设计》课程的学习,我对c语言有了初步的认

识和理解,对数据的结构和存储方式、程序设计的语法算法以及程序的调试都具备了一定的理论基础。通过上机亲自编写和调试小程序,掌握编程的常见方法和步骤,我的实践能力也得到了不少的提高。但总的来说,我的基础还是比较薄弱的,我希望通过下一阶段的学习得到更大的提高。

2C语言的学习难点

就个人而言,我觉得c语言学习的难点在于逻辑算法和结构控制。我自己在编

程的时候常常是知道如何用数学方式表达出来,但要转化成程序设计语言就比较困难,其一是因为表达式的语法规则繁多运用不如自然语言的语法得心应手导致出现很多错误,其二是因为对逻辑思维的要求较高,要实现一个程序功能,其流程控制显得比较难,一个小小的步骤不能实现就会使整个程序编写寸步难行。所以多做编程练习显得尤其重要,这也是真正提高编程水平的最根本的方法。

3指针的学习心得体会

指针是c语言的一个特色,也是c语言学习中最难掌握的部分,一是因为它的抽象性,二是因为它的灵活性。通过指针的运用可以实现用其他语句所不能实现的功能,它也可以使程序变得简洁、紧凑、高效。指针既是地址,它牵涉到数据的存

储和访问方式,这往往是比较隐晦的,若还和数组及函数等结合更让人费解,比如

说如何理解“指向指针的指针”。指针变量的灵活运用也是个比较难掌握的的技能,我在使用它的时候通常都画出它在内存中的示意图,以便能清晰看到它的运算和引

用过程,这对加强初学者对指针的运作机制的理解是很有帮助的。

4对教师教学的建议

梅老师授课很细致认真,对知识点的细节问题尤其讲得很透彻,使我们对c语

言的理论知识的全面掌握很有帮助。但我们最缺少的是上机实践,以前在上机课上,我们遇到的困难和问题往往不能立即得到老师的指导,课后往往就不会再去仔细钻

研它们,这使得我们的问题累积得越来越多,所以希望老师能把理论和实践很好的结合起来,才能高效迅速提高我们的编程水平。

5总结本学期C语言学习的收获

本学期通过仔细听了梅老师的每一节课,首先在c语言理论学习上又更进了一

层楼,以前很模糊的概念、不太重视的细节问题和杂乱的知识体系现在都很清晰明

了了,其次对程序设计语言的结构和特点有了更好的理性认识,至少不会再犯一些

低级的语法错误。最重要的是学到了程序设计的思想以及思维方式,这对于我们的学习、工作、生活各个方面都是有帮助的,使得我们在处理其它事务时也能有个清

晰的逻辑思维和程序化的处理方法。

参考文献

[1] 谭浩强著.C程序设计(第三版).北京:清华大学出版社,2005

[2] 李丽娟,马淑萍主编.C语言程序设计(第二版).北京:中国铁道出版社,2009

作者简介:罗××(1991-),男,湖南衡阳人,湖南理工学院物电学院本科学生,主要研究方向

为电子技术。

第五篇: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;}

第五章 选择结构

一、选择 1.D 2.B 3.A 4.C 5.C 6.B 7.B 8.A 9.C 10.C 11.D 12.A 13.D 14.A 15.A 16.B 17.D 18.C 19.A 20.A 21.A 22.B 23.A 24.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.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);} 3.int fun(int x){ int k;k=x*x;if((k%10==x)||(k%100==x))return 1;else return 0;}

第六章 循环结构

一、选择

1.C 2.A 3.A 4.B 5.C 6.B 7.C 8.A 9.D 10.B 11.A 12.C 13.C 14.A 15.D 16.D 17.D 18.A 19.C 20.A 21.C 22.B 23.B 24.C 25.A 26.D

二、填空

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=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=%fn”,s*4);【或】 printf(“pi=%fn”,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=%fn”,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 0){ s = s/100;t = s%10*sl + t;sl = sl * 10;} } 7.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;km){ m=x1+x2;x1=x2;x2=m;} return m;}

下载C语言程序设计学习指导第二版 答案word格式文档
下载C语言程序设计学习指导第二版 答案.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

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

    1、 已知int i, x[3][4];则不能将x[1][1]的值赋给变量i的语句是______ (分数:2 分) A. i=*(*(x+1)) B. i=x[1][1] C. i=*(*(x+1)) D. i=*(x[1]+1) 标准答案是:A。 2、 当c的值不......

    《C语言程序设计》2011-2012-2B答案

    河南理工大学学期 《C语言程序设计》笔试试卷(B卷) 一、单项选择题(每题1分,共50分) ,在每小题列出的四个选项中只有一个选项是符合题目要求的,请在答案卡上将正确答案所对应选项......

    《C语言程序设计》2011-2012-2A答案

    河南理工大学学期 《C语言程序设计》笔试试卷(A卷) 一、单项选择题(每题1分,共50分) 1.B2.A3.D4.A5.C6.C7.C8.C9.C10.A 11.B12.B13.D14.D15.D16.C17.C18.C19.D20.A 21.C22.C23.......

    C语言程序设计实验指导及报告

    太原理工大学现代科技学院 C语言程序设计课程 实验报告 专业班级学号姓名指导教师C语言程序设计 实验指导及报告 实验说明: 1、共4次实验,每次实验完成1个内容。 2、实验报告......

    浅谈如何学习C语言程序设计5篇

    2009年8月 中 国 管理信息化 Aug..2009 China Informationization V01.12,No.16 第12卷第16期 Management 浅谈如何学习C++语言程序设计 孟艳涛1,邵长海2 (1.长春广播电视大......

    C语言程序设计学习心得体会(范文大全)

    C语言程序设计学习心得体会 通过一学期对C语言的学习,我感觉学习C语言是有一定难度却又是非常有趣的科目。也是很有帮助的,特别是对将要面对的计算机二级考试。 这段时间的学......

    2018年 C语言程序设计A卷答案

    一、选择题答案 1、B 2、C 3、D 4、B 5、B 6、A 7、B 8、C 9、B 10、D 11、C 12、B 13、C 14、D 15、B 二、填空题答案 1、n=%dn m=%dn 2、i=5;i>=1;--i 3、1.0/(i*i) 4、......

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

    第一章 基础知识 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载 和执行。......