二级C练习册答案详细解答-第一章
- 格式:docx
- 大小:79.75 KB
- 文档页数:8
二级C语言程序设计教程课后习题答案(高教版)第一章【1-1】.exe【1-2】.c .obj.exe 【1-3】顺序,分枝(选择),循环第二章【2-1】B 【2-2】D【2-3】B【2-4】A【2-5】C【2-6】A【2-7】B【2-8】B 【2-9】A【2-10】C【2-11】B【2-12】B【2-13】A【2-14】11,12【2-15】4.2,4.2【2-16】{,},定义说明,执行语句【2-17】关键字,用户标识符【2-18】int,float,double【2-19】float a=b=1; 【2-20】存贮单元【2-21】3.5【2-22】a*b/c,a/c*b,b/c*a【2-23】把10赋予变量s【2-24】bit,0/1【2-25】8,127,01111111,-128,10000000(补码)【2-26】32767,-32768,1111111111111111,1000000000000000【2-27】8,10,16 【2-28-1】(错误)#include stdio.h;main() / * main function * /float r,s; /*/*r is radius*/,/* s is area of circular */*/r=5.0;s=3.14159*r*r;printf("%f\n",s)【2-28-2】(正确)#include stdio.h;main() /* main function */{float r,s; /* r is radius, s is area of circular */r=5.0;s=3.14159*r*r;printf("%f\n",s);}【2-29-1】(错误)#include “stdio.h”main /* main function */{ float a,b,c,v; /* a,b,c are sides, v is volume of cube */ a=2.0; b=3.0; c=4.0v=a*b*c;printf("%f\n",v)}【2-29-2】(正确)#include <stdio.h>main() /* main function */{ float a,b,c,v; /* a,b,c are sides, v is volume of cube */ a=2.0; b=3.0; c=4.0;v=a*b*c;printf("%f\n",v);}第三章【3-1】C 【3-2】C 【3-3】D 【3-4】C 【3-5】D 【3-6】B 【3-7】C【3-8】D 【3-9】A【3-10】B 【3-11】C 【3-12】D 【3-13】D【3-14】C 【3-15】C 【3-16】C 【3-17】C 【3-18】A【3-19】C 【3-20】B 【3-21】(1)-200 2500(2)i=-200, j=2500(3)i=-200//(换行)j=2500 【3-22】12,0,0【3-23】一条语句,;【3-24】;【3-25】100 25.81 1.89234,100//25.81//1.89234,100//25.81 1.89234【3-26】x=127,x= 127,x= 177,x= 7f,x= 127【3-27】x=127,x=127 ,x=$127 ,x=$000127,x=%06d【3-28】a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500【3-29-1】(错误)#include “stdio.h”main{ double a,b,c,s,v;printf(input a,b,c:\n);scanf("%d %d %d",a,b,c);s=a*b;v=a*b*c;printf("%d %d %d",a,b,c);printf("s=%f\n",s,"v=%d\n",v);}【3-29-2】(正确)#include “stdio.h”main(){ float a,b,c,s,v;printf("input a,b,c:");scanf("%f %f %f:",&a,&b,&c);s=a*b;v=a*b*c;printf("a=%f,b=%f,c=%f\n",a,b,c); printf("s=%f,v=%f\n",s,v);}【3-30】#include “stdio.h”main(){ int h,m;h=560/60;m=560%60;printf("%dh:%dm",h,m);}【3-31】#include “stdio.h”main(){ int m,n;printf("input m & n:");scanf("%d%d",&m,&n);printf("\n%d,%d\n",m/n,m%n); }【3-32】#include “stdio.h”main(){ double x,y,z,s;printf("input x,y,z: ");scanf("%lf%lf%lf",&x,&y,&z); s=(x+y+z)/3.0;printf("\nA verage=%6.1lf\n",s); }【3-33】#include “stdio.h”main(){ int a,b,c,t;printf("Input a,b,c: ");scanf("%d%d%d",&a,&b,&c); t=c;c=b;b=a;a=t;printf("\na,b,c=%d,%d,%d\n",a,b,c);}第四章【4-1】A【4-2】A【4-3】A【4-4】D【4-5】C【4-6】A【4-7】B【4-8】A 【4-9】D【4-10】A【4-11】非零,零【4-12】<,>,<=,>= ==,!=【4-13】!,&&,|| 【4-14】!,关系运算符,&&,|| 【4-15】!【4-16】(A)a==b||a<c(B)fabs(x)>4【4-17】1【4-18】x<=0,1【4-19】3,2,2 【4-20】*#【4-21】#include “stdio.h”main(){ int a,m;printf("input a: ");scanf("%d",&a);switch(a/10){ case 0:case 1:case 2: m=1 ;break;case 3: m=2 ;break;case 4: m=3 ;break;case 5: m=4 ;break;default: m=5;}printf("a,m=%d, %d",a,m );}【4-22】#include “stdio.h”main(){ int age,y0,m0,d0,y1,m1,d1;printf("\ninput a stedent\' birthday (yy-mm-dd): "); scanf("%d-%d-%d",&y0,&m0,&d0);printf("\ninput today\' date (yy-mm-dd): "); scanf("%d-%d-%d",&y1,&m1,&d1);if ((m1>m0)||(m1==m0)&&(d1>=d0)) age=y1-y0; else age=y1-y0-1;printf("\nThe student\' age is %d",age);}【4-23】#include “stdio.h”main(){ int m;printf("\ninput a integer: ");scanf("%d",&m);if (m%2==0) printf("\n%d is event.",m); else printf("\n%d is ord.",m);}【4-24】#include “stdio.h”main(){ int a,b,c,max;printf("\ninput a,b,c: ");scanf("%d%d%d",&a,&b,&c);max=a;if (b>max) max=b;if (c>max) max=c;printf("max is %d",max);}【4-25-1】#include “stdio.h”main(){ int x,y;printf("\ninput x: ");scanf("%d",&x);if((x>-5)&&(x<0)) y=x;if (x==0) y=x-1;if ((x>0)&&(x<10)) y=x+1;printf("\nx is %d , y is %d",x,y);}【4-25-2】#include “stdio.h”main(){ int x,y;printf("\ninput x: ");scanf("%d",&x);if((x>-5)&&(x<10)){ if (x<0) y=x;if (x==0) y=x-1;if (x>0) y=x+1;printf("\nx is %d , y is %d",x,y);}else printf("input x is error ! %c",'\007'); }【4-25-3】#include “stdio.h”main(){ int x,y;printf("\ninput x: ");scanf("%d",&x);if ((x>-5)&&(x<0)) y=x;else if (x==0) y=x-1;else if ((x>0)&&(x<10)) y=x+1;printf("\nx is %d , y is %d",x,y); }【4-25-4】#include “stdio.h”main(){ int x,y;printf("\ninput x: ");scanf("%d",&x);switch(x){ case -4:case -3:case -2:case -1: y=x;break;case 0 : y=x-1;break;case 1 :case 2 :case 3 :case 4 :case 5 :case 6 :case 7 :case 8 :case 9 : y=x+1;break;default : printf("Input x error ! %c",7);}printf("\nx is %d , y is %d",x,y);}第五章【5-1】D【5-2】C【5-3】B【5-4】C【5-5】C【5-6】B【5-7】D【5-8】A 【5-9】D【5-10】D【5-11】5,4,6【5-12】死循环【5-13】-1【5-14】11 【5-15】d=1,k++,k<n【5-16】x>=0,x<amin【5-17】#include “stdio.h”main(){ int i,s=1,k=-1;for (i=1;i<=50;i++){ s=s+k*(2*i+1);k=-k;}printf("s=%d",s);}【5-18-1】#include “stdio.h”main(){ int i=1;double e=1.0,s=1.0;for(i=1;i<=50;i++){s=s*i;e=e+1/s;}printf("e=%lf",e);}【5-18-2】#include “stdio.h”main(){ int i=1;float e=1.0,s=1.0;while (1/s>=1e-04) /* 8 times */ {s=s*i;i++;e=e+1/s;}printf("e=%10.6f",e);}【5-19】#include “stdio.h”main(){ int y,k=0;for(y=1000;y<=2000;y++){ if (y%4==0&&y%100!=0||y%400==0) {printf("%10d",y);k++;} if (k%3==0) printf("\n");}}【5-20】#include “stdio.h”#include <stdio.h>main(){int i,j,n;printf("Input n (1--10):");do scanf("%d",&n);while (n<1||n>10);for (i=1;i<=n;i++){for (j=1;j<=40-i;j++)printf(" ");for (j=1;j<=2*i-1;j++)printf("*");printf("\n");}for (i=n+1;i<=2*n-1;i++){ for (j=1;j<=40-2*n+i;j++)printf(" ");for (j=1;j<=4*n-1-2*i;j++)printf("*");printf("\n");}}第六章【6-1】B【6-2】D【6-3】A【6-4】A【6-5】B【6-6】D【6-7】D【6-8】B 【6-9】A【6-10】A【6-11】C【6-12】26【6-13】1【6-14】ctype.h【6-15】1 【6-16】10A20B30C40D【6-17】7.29 101.298AB【6-18】A7.29B101.298【6-19】A B C【6-20】#include <stdio.h>main(){ int k=0; char ch;while((ch=getchar())!=10) { k++;printf("%4c%4d",ch,ch);if(k%3==0) printf("\n"); }}【6-21】#include <stdio.h>main(){ long k=0; char ch;while((ch=getchar())!=EOF) { if (ch>='0'&&ch<='9'){ ch=ch-'0';k=k*10+ch;}}printf("%ld",k);}#include <stdio.h>main(){ int flag,k=0; char ch;while((ch=getchar())!=EOF){ if (ch==10) { k++; flag=0; }else flag=1;}if (flag==1) k++;printf("\n The line number is %d\n",k);}【6-23】#include <stdio.h>main(){ int k=0; char ch;while((ch=getchar())!=10)if (ch>='a'&&ch<='z') k++;printf("\n The lower letter number is %d\n",k); }【6-24】#include <stdio.h>{ int i,j,n;printf("Input line number : ");scanf("%d",&n);for(i=1;i<=n;i++){ for (j=1;j<=40-i;j++)printf(" ");for(j=1;j<=2*i-1;j++)printf("%c",64+i);printf("\n");}}第七章【7-1】C【7-2】C【7-3】B【7-4】C【7-5】A【7-6】D【7-7】A【7-8】12 【7-9】9.000000【7-10】4【7-11】n=1,s【7-12】<=y,z*x【7-13】1,s*i,0,f(k)【7-14-1】(错误)#include “stdio.h”main(){int m;printf("Input a number: ");scanf("%d",&m);m=fun(m);if (m==1)printf("\nThis number is a primer !\n"); elseprintf("\nThis number is not a primer !\n"); }fun(int n){ int k,yes;for (k=2;k<=n/2;k++)if (n%k==0) yes=0;else yes=1;return yes;}【7-14-2】(正确)#include “stdio.h”main(){int m;printf("Input a number: ");scanf("%d",&m);m=fun(m);if (m==1)printf("\nThis number is a primer !\n"); elseprintf("\nThis number is not a primer !\n"); getch();}fun(int n){ int k,yes=1;for (k=2;k<=n/2;k++)if (n%k==0) yes=0;return yes;}【7-15】#include “stdio.h”main(){int a,b;printf("Input a & b:");scanf("%d%d",&a,&b);printf("\n%d%%%d=%d",a,b,mymod(a,b)); getch();}mymod(int a, int b){int z;z=a%b;return z;}【7-16】#include “stdio.h”float fun(int n) {return (1.0/n);}main(){int i,n,k=1;float s=0.0;printf("Input n:"); scanf("%d",&n);for(i=1;i<=n;i++) {s+=k*fun(i);k=-k;}printf("\ns=%8.6f",s); }【7-17】#include “stdio.h”float f(int m){ float t=1.0;int i;for (i=2;i<=m;i++)t-=1.0/(i*i);return t;}main(){int n;printf("Input n:"); scanf("%d",&n);printf("\nt=%8.6f",f(n)); }【7-18】#include <math.h>float f(float x){ float z;z=x*x-5*x+4;return z;}main(){float x,y1,y2,y3;printf("Input x: ");scanf("%f",&x);y1=f(2);y2=f(x+15);y3=f(sin(x));printf("y1=%10.4f\n",y1);printf("y2=%10.4f\n",y2);printf("y3=%10.4f\n",y3);printf("\n**** END ****");}第八章【8-1】A【8-2】B【8-3】B【8-4】C【8-5】B【8-6】B【8-7】C【8-8】D 【8-9】B【8-10】C【8-11】C【8-12】C【8-13】110【8-14】7 1【8-15】char *p=ch;,p=&ch;,scanf(“%c”,p);,p=’a’;,printf(“%c”,p); 【8-16】s=p+3;,s-=2,50,*(s+1),2,10 20 30 40 50【8-17-1】#include “stdio.h”fun(x,y)int *x,*y;{int z1,z2;z1=*x+*y;z2=*x-*y;*x=z1; *y=z2;}main(){int *a,*b,A,B;a=&A,b=&B;printf("input two numbers: "); scanf("%d%d",a,b);printf("a,b=%d,%d\n",*a,*b); printf("before call function:\n"); printf("a=%d b=%d\n",*a,*b); fun(a,b);printf("after call function:\n"); printf("a=%d b=%d\n",*a,*b); }【8-17-2】#include “stdio.h”fun(x,y)float *x,*y;{float z1,z2;z1=*x+*y;z2=*x-*y;*x=z1; *y=z2;}main(){float *a,*b,A,B;a=&A;b=&B;printf("input two real numbers: "); scanf("%f%f",a,b);printf("a,b=%f, %f\n",*a,*b); printf("before call function:\n"); printf("a=%f b=%f\n",*a,*b); fun(a,b);printf("after call function:\n"); printf("a=%f b=%f\n",*a,*b); }【8-18】#include “stdio.h”fun(int *a,int *b,int *c){ int max,min;max=*a;min=*a;if (*b>*a) max=*b;if (*b<*a) min=*b;if (*c>max) max=*c;if (*c<min) min=*c;*a=max;*c=min;}main(){int a,b,c;printf("Input a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("before call function:\n");printf("a=%d b=%d c=%d\n",a,b,c);fun(&a,&b,&c);printf("after call function:\n");printf("max=%d min=%d\n",a,c);}第9章【9-1】D【9-2】A【9-3】A【9-4】A【9-5】C【9-6】A【9-7】B【9-8】D 【9-9】C【9-10】C【9-11】C【9-12】D【9-13】D【9-14】A,C(?)【9-15】A【9-16】A【9-17】C【9-18】C【9-19】9,0【9-20】6【9-21】12 【9-22】3【9-23】2721【9-24】-850,2,0【9-25】k=p,(k)【9-26】c=getchar(),c-65【9-27】#include “stdio.h”#include <ctype.h>main(){ char *s,a[100];int i,k=0,num[10]={0};s=a;printf("Input an number string: "); scanf("%s",s);while(*s!='\0'){ if (isdigit(*s)&&(*s>'0'))num[*s-49]++;if (*s==48) num[9]++;s++;}for (i=0;i<9;i++)printf("%2d-->%3d\n",i+1,num[i]); printf(" 0-->%3d\n",num[9]);printf("***** TOTAL *****\n"); for (i=0;i<=9;i++) k+=num[i]; printf(" %d ",k);}【9-28】#include “stdio.h”move(int a[10],int n){int i;for (i=n;i<10;i++)a[i-1]=a[i];a[9]=0;}main(){int x[10],i,n;printf("input 10 number:");for(i=0;i<10;i++)scanf("%d",&x[i]);printf("\ninput the N:");scanf("%d",&n);move(x,n);printf("\nAfter move tne member list is :\n");for (i=0;i<10;i++)printf("%d ",x[i]);}【9-29】#include “stdio.h”main(){int a[100]={0},b[100]={0},i,j;printf("\nInput the number list (end with 32767) :\n ");for(i=0;i<100;i++){scanf("%d",&a[i]);if ( a[i]==32767) break;}i--;odd(a,b,i);printf("\narray B :\n");for (i=0;i<100;i++)if (b[i]!=0) printf("%d ",b[i]);else break;getch();}odd(int a[100],int b[100],int n) { int i,j=0;for(i=0;i<=n;i++)if(a[i]%2!=0) b[j++]=a[i];}【9-30】#include <string.h>sort(char s[],int n){int i,j,p,t;for(j=0;j<(n-1);j++){p=j;for(i=j+1;i<n;i++)if(s[p]<s[i]) p=i;if(p!=j) { t=s[j]; s[j]=s[p]; s[p]=t; }}}main(){char *s;int n;printf("\nInput s:");scanf("%s",s);n=strlen(s);sort(s,n);printf("\nthe sorted string is %s \n",s);}【9-31】#include “stdio.h”main(){int a[100],n,*p,i=1;a[0]=-32768; p=a+1;printf("\nInput an number list (end with 32767) :\n"); do{scanf("%d",&a[i]);if (a[i]>=a[i-1]) i++;}while(a[i-1]!=32767);printf("\nInput inserted number: "); scanf("%d",&n);p=a;insert(p,n);p=a+1;printf("\nOutput array a:\n");doif (*p!=32767) printf("%d ",*p++); while (*p!=32767);getch();}insert( int *q, int n){ int *k;k=q;while (*q!=32767) q++;*(q+1)=*q;while(q>k){ if (n>*(q-1)) { *q=n; break; }else {q--; *(q+1)=*q; }}}【9-32】#include “stdio.h”main(){int n,a[16]={0},*p;printf("\nInput an number:"); scanf("%d",&n);p=a;change(a,n,p);printf("n=%d\n",n);while(p<=a+15)printf("%d",*p++);}change(x,n,p)int x[16],n,*p;{p=x+15; *p=0;if(n==0) return(0);while(n!=0){*p=n%2;p--;n/=2;}}【9-33】#include <stdio.h>main(){int a[15],*p,i;p=a;frandm(a);printf("\nThe array a is: "); for(i=0;i<15;i++)printf("%d ",*p++);}frandm( a[]);{int k=0,i,x,*q;for (i=0;i<15;i++) a[i]=20; while(k<15){x=rand()%20;for (i=0;i<15;i++)if (a[i]==x ) continue;else a[k++]=x;}}【9-34】#include “stdio.h”#define N 20main(){int a[N][N],x[N]={0},y[N]={0},i,j,m,sum=0; printf("\n Input N (<20) :");scanf("%d",&m);printf("\n Input array a[%d][%d]:\n",m,m); for(i=0;i<m;i++)for(j=0;j<m;j++){ scanf("%d",&a[i][j]);x[i]+=a[i][j]; y[j]+=a[i][j];if (i==j ) sum+=a[i][i];}printf("\n After compute : \n");for (i=0;i<m;i++){ for (j=0;j<m;j++)printf("%5d",a[i][j]);printf("%5d\n",x[i]);}for (i=0;i<m;i++)printf("%5d",y[i]);printf("\n\nSum=%d\n",sum);}【9-35】#include “stdio.h”#define N 20main(){int a[N][N],b[N][N],c[N][N],m,n,i,j; printf("\n Input m,n (<20) :");scanf("%d%d",&m,&n);printf("\n Input array A[%d][%d]:\n",m,n); for(i=0;i<m;i++)for(j=0;j<n;j++){ scanf("%d",&a[i][j]);}printf("\n Input array B[%d][%d]:\n",m,n); for(i=0;i<m;i++)for(j=0;j<n;j++){ scanf("%d",&b[i][j]); c[i][j]=a[i][j]+b[i][j];}printf("\n After compute array C: \n");for (i=0;i<m;i++){ for (j=0;j<n;j++)printf("%5d",c[i][j]);printf("\n");}}【9-36】#include “stdio.h”main(){int i,j,k;printf("\n ** A MULTIPLICA TION TABLE **\n"); printf(" ");for(i=1;i<10;i++) printf("(%3d)",i);printf("\n --------------------------------------------\n");for(i=1;i<10;i++){ for(j=0;j<10;j++)if(j==0) printf("( %d)",i);else printf("%5d",i*j);printf("\n");}printf("\n --------------------------------------------\n"); }【9-37】#include "stdio.h"#include "stdlib.h"main(){static int m[5][5]={0},i,j;int k=0;printf("\nBefore :\n");for (i=0;i<5;i++)for(j=0;j<5;j++){ m[i][j]=rand()%100;printf("%4d",m[i][j]);if ((++k)%5==0) printf("\n"); }printf("\nAfter:\n");for (i=0;i<5;i++)for(j=0;j<i;j++){ k=m[i][j]; m[i][j]=m[j][i]; m[j][i]=k; }k=0;for (i=0;i<5;i++)for(j=0;j<5;j++){ printf("%4d",m[i][j]);if ((++k)%5==0) printf("\n"); } printf("\n Program end ! \n");}【9-38】#include “stdio.h”#include "stdio.h"main(){ int m[5][5]={0},i,j;int k=0;printf("\nBefore :\n");for (i=0;i<5;i++)for(j=0;j<5;j++){ m[i][j]=rand()%100;printf("%4d",m[i][j]);if ((++k)%5==0) printf("\n"); } printf("\nAfter:\n");for (i=0;i<5;i++)for(j=0;j<i;j++){ k=m[i][j]; m[i][j]=m[j][i]; m[j][i]=k; }printf("%4d",m[i][j]);if ((++k)%5==0) printf("\n"); }k=0;for (i=0;i<5;i++)for(j=0;j<5;j++){ printf("%4d",m[i][j]);if ((++k)%5==0) printf("\n"); }printf("\n Program end ! \n");}第十章【10-1】B【10-2】B【10-3】C【10-4】B【10-5】A【10-6】A【10-7】C 【10-8】A【10-9】C【10-10】? 【10-11】GFEDCB【10-12】XYZA 【10-13】SO【10-14】qwertyabcd【10-15】Itiss【10-16】strlen(str),j--【10-17】7【10-18】gotogood*【10-10】#includ e “stdio.h”#include <string.h>main(){ char str1[]="string",str2[8],*str3,*str4="string";strcpy(str1,"HELLO1");strcpy(str2,"HELLO2");strcpy(str3,"HELLO3");strcpy(str4,"HELLO4");printf("%s\n%s\n%s\n%s\n",str1,str2,str3,str4);}*【10-13】#include “stdio.h”main(){char *p[]={"BOOL","OPK","H","SP"};int i;for(i=3;i>=0;i--,i--) printf("%c",*p[i]);printf("\n");}【10-19】#include <stdio.h>#include <string.h>mygets(s)char *s;{ char ch;ch=getchar();while (ch!=10){*s=ch; s++;ch=getchar();} *s='\0';}myputs(s)char *s;{ int i,n;n=strlen(s);for(i=0;i<n;i++)putchar(*s++);}main(){char *str,s[80];str=s;printf("Input a string:"); mygets(str);printf("\nOutput the string:\n"); myputs(str);printf("\n");}【10-20】#include “stdio.h”#include <string.h>main(){ char *str ;str=(char*)malloc(1);printf("Input a string:\n" );gets(str);if (fun(str)) printf("\nThis is back-round-text\n"); else printf("\nThis is not back-round-text\n"); getch();}fun(char *s){int n,i,j, flag=1;n=strlen(s);for (i=0,j=n-1;i<j;i++,j--)if(*(s+i)!=*(s+j)) flag=0;return(flag);}【10-21】#include <string.h>#include <stdio.h>char deltet(s,n)char *s; int n;{ char ch;if (n>strlen(s)) {printf("\nCANNOT DELETE IT !!! %c",007);return('\0'); }else{ ch=*(s+n);do{ *(s+n)=*(s+n+1); n++; }while(*(s+n-1)!='\0');return(ch);}}main(){char str[80],*p,ch;int n;printf("\nInput a string:\n");p=str+1;gets(p);printf("\nDelete the n'th character: ");scanf("%d",&n);ch=deltet(str,n);printf("\nAfter delete the string :(ch=%c)\n",ch);for(n=1;n<strlen(str);n++)putchar(*p++);}第十一章【11-1】D【11-2】B【11-3】D【11-4】C【11-5】IJKLEFGHABCD【11-6】7 【11-7】8【11-8】*(s+j),i+1,i【11-9】17【11-10】(*fun)(),(*fun)(a+i*h),mypoly【11-11】#include <string.h>#include “stdio.h”main(int argc, char *argv[]){char *str, *p;int i,k;str=(char*)malloc(50);printf("\nInput a text line ( > 10 letters):\n");scanf("%s",str);p=argv[1];k=strlen(str);if(argc==2){if (*p=='+')for(i=0;i<(*(p+1)-'0');i++) printf("%c",*(str+i));else if (*p=='-')for(i=k-*(p+1)+'0';i<=k;i++)printf("%c",*(str+i)); } else for(i=k-10;i<k;i++) printf("%c",*(str+i)); getch();}【11-12】#include “stdio.h”int i;ten_to_two(int a[ ],int n){ if (n==0) a[i]=0;else if (n==1) a[i]=1;else { a[i++]=n%2;n=n/2;ten_to_two(a,n); }}main(){int a[16]={0};int n,k;i=0 ;error:printf("\nInput an number: ");scanf("%d",&n);if (n<0) { printf("Input error ! %c" ,7); goto error; } ten_to_two(a,n);if(i!=0) a[i]=1;printf("\nThe converted number is :\n");for (k=i;k>=0;k--)printf("%d",a[k]);}【11-13】#include “stdio.h”sumf(int m){ if (m==1) return(1);else return(m+sumf(m-1));}main(){ int n;printf("Input n: ");scanf("%d",&n);if (n>0) printf("%d",sumf(n));else printf("Input error ! %c",7);}【11-14】long fib(int n){if (n==0||n==1) return(1);else return(fib(n-2)+fib(n-1));}main(){ int n;printf("\nInput n(<25):");scanf("%d",&n);if (n>=0)printf("%ld",fib(n));else printf("\nInput error ! %c",7);}第十二章【12-1】B【12-2】B【12-3】A【12-4】C【12-5】D【12-6】B【12-7】A 【12-8】A【12-9】2,5,1,2,3,-2【12-10】2468第十三章【13-1】B【13-2】C【13-3】B【13-4】C【13-5】D【13-6】A【13-7】D 【13-8】ar=9 ar=9 ar=11【13-9】int*,*s,*b【13-10】#include “stdio.h”#define MY ALPHA(C) (isalpha(C))main(){ char ch;printf("Input a character: ");scanf("%c",&ch);if (MY ALPHA(ch)) printf("\nThis is a letter !"); else printf("\nThis is not a letter ! ");}【13-11】#include “stdio.h”#define SWAP(t,x,y) {(t)=(x);(x)=(y);(y)=(t);} main(){int x,y,t;printf("\nInput x & y :");scanf("%d%d",&x,&y);SW AP(t,x,y)printf("\nx=%d y=%d",x,y);}【13-12】#include “stdio.h”main(){int w,*px,*py,*pz;px=(int *)malloc(sizeof(int));py=(int *)malloc(sizeof(int));pz=(int *)malloc(sizeof(int));printf("\nInput three number :");scanf("%d%d%d",px,py,pz);if(*px>*py) {w=*px;*px=*py;*py=w;}if(*px>*pz) {w=*px;*px=*pz;*pz=w;}if(*py>*pz) {w=*py;*py=*pz;*pz=w;}printf("\nAfter exchange : ");printf("%d %d %d",*px,*py,*pz);}第十四章【14-1】D【14-2】D【14-3】D【14-4】A【14-5】C【14-6】C【14-7】C 【14-8】B 【14-9】struct link *next; 【14-10】p->next,p->data<m【14-11】(struct list *),struct list, (struct list *),struct list,return(h)*【14-6】struct st{int x;int *y;} *p;int dt[4]={10,20,30,40};struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0]}; main(){p=aa;printf(" %d\n",++p->x);printf(" %d\n",(++p)->x);printf(" %d\n",++(*p->y));}【14-12】struct stud{char num[5],name[10];int s[4];float ave;};typedef struct stud STU;STU readrec(a)STU a[31];{ int i;for(i=0;i<4;i++) a[0].s[i]=0;printf("\n Input 30 student's data:\n ");printf("--- num name s1 s2 s3 s4 ---\n");for (i=1;i<5 ;i++){printf("%d: ",i);scanf("%s%s%d%d%d%d",a[i].num,a[i].name,&a[i].s[0],&a[i].s[1], &a[i].s[2],&a[i].s[3]);a[i].ave=(a[i].s[0]+a[i].s[1]+a[i].s[2]+a[i].s[3])/4.0;a[0].s[0]+=a[i].s[0];a[0].s[1]+=a[i].s[1];a[0].s[2]+=a[i].s[2];a[0].s[3]+=a[i].s[3];printf("\n");}a[0].s[0]/=4;a[0].s[1]/=4;a[0].s[2]/=4;a[0].s[3]/=4;}STU writerec(a)STU a[31];{int i;printf("\n Output 30 student's data: \n");printf("----- num name s1 s2 s3 s4 ave -----\n");for(i=1;i<5 ;i++){printf("\n%5s %10s %4d %4d %4d %4d %6.2f",a[i].num,a[i].name, a[i].s[0],a[i].s[1], a[i].s[2],a[i].s[3],a[i].ave);}printf("\n\n A VE: %d %d %d %d ",a[0].s[0],a[0].s[1],a[0].s[2],a[0].s[3]);。
1.2算法1[填空题]一颗二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为【2】O参考解析:[2】DEBFCA【解析】根据二叉树的中序遍历原则可知D为二叉树的最左边的叶子结点,根据二叉树的前序遍历原则可知A是二叉树的根结点,就可以确定二叉树的结构,所以二叉树的后序遍历结果为:DEBFCA02[填空题]队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。
允许删除的一端称作。
参考解析:队头【解析】队列是只允许在一端删除,在另一端插入的顺序表,在队列中。
允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。
3[填空题]在最坏情况下,堆排序需要比较的次数为。
参考解析:0(nlog2n)【解析】在最坏情况下,冒泡排序所需要的比较次数为n(nr1)/2;简单插入排序所需要的比较次数为n(n-1)/2;希尔排序所需要的比较次数为0(nl.5);堆排序所需要的比较次数为0(nlog2n)。
4[单选题]算法的有穷性是指()。
Λ,算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用参考答案:A参考解析:算法具有5个特性:①有穷性:一个算法必须(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;②确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生歧义。
③可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。
,④输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
⑤输出:一个算法有一个或多个输出。
5[单选题]下列叙述中正确的是()。
A.数据的逻辑结构与存储结构是一一对应的B.算法的时间复杂度与空间复杂度一定相关C.算法的效率只与问题的规模有关,而与数据的存储结构无关D.算法的时间复杂度是指执行算法所需要的计算工作量参考答案:D参考解析:根据时间复杂度和空间复杂度的定义可知,算法的时间复杂度与空间复杂度并不相关。
《全国计算机等级考试二级教程--C语言程序设计》课后习题答案第一章1.1 EXE1.2 C OBJ EXE1.3 顺序选择循环第二章一. 选择题2.1 B 2.2 D 2.3 B 2.4 A 2.5 C 2.6 A 2.7 B2.8 B 2.9 D 2.10 C 2.11 B 2.12 B 2.13 A二. 填空题2.14 11 122.15 4.2 4.22.16 { } 定义执行语句2.17 关键字用户标识符2.18 int float double2.19 float a1=1; float a2=1;2.20 存储单元2.213.52.22 (a*b)/c a*b/c a/c*b2.23 把常量10赋给变量s2.24 位1或0三. 上机改错题2.28#include "stdio.h"; 删除行尾的";"main(); / * main function * / 删除")"后的";",注释中的*要紧靠“/”,即应为“/*”和“*/”函数开始处遗失了一个“{”float r,s ; /*/*r is radius*/,/* s is area of circuilar*/*/ 注释符号不可嵌套使用r = 5.0 ;s = 3.14159 * r * r ;printf("%f\n",s) 行尾遗失了“;”函数结束处遗失了一个“}”2.29#include "stdio.h"main /* main function */ main后遗失了“()”{float a,b,c,v; /*a,b,c are sides, v is volume of cube */a=2.0; b=3.0; c=4.0 行尾遗失了“;”v=a*b*c;printf("%f\n", v) 行尾遗失了“;”}第三章一.选择题3.1 C 3.2 C 3.3 D 3.4 C 3.5 D 3.6 B 3.7 C 3.8 D 3.9 A 3.10 B3.11 C 3.12 D 3.13 D 3.14 A 3.15 C 3.16 C 3.17 C 3.18 无答案3.19 C 3.20 B二. 填空题3.21 (1)-2002500(2)i=-200,j=2500(3)i=-200j=25003.22 12 0 03.23 一条语句;3.24 ;3.25 100,25.81,1.89234 100 25.81 1.89234 100 25.81 1.89234 3.26 x=127,x= 127,x= 177,x= 7f,x= 1273.27 x=127,x=127 ,x=$127 ,x=$000127,x=%06d3.28 a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500三. 编程题和改错题3.29 修改后的程序如下:main(){double a,b,c,s,v;printf("input a,b,c:");scanf("%lf%lf%lf",&a,&b,&c);s =a*b;v=a*b*c;printf("a=%f,b=%f,c=%f\n", a,b,c);printf("s=%f,v=%f\n",s,v);}3.30#includemain(){int a=560,b=60;printf("560 minute is %d hour and %d minute.\n",a/b,a%b);}3.31#includemain(){int a,b;a=1500;b=350;printf("a div b is : %d\n",a/b);printf("a mod b is : %d\n",a%b);}3.32#includemain(){double a,b,c,ave;printf ("input 3 double number : \n");scanf ("%lf%lf%lf",&a,&b,&c);printf ("%.1f\n",(a+b+c)/3);}3.33#includevoid main(){int a,b,c,t;printf("请依次输入整数a,b,c:");scanf("%d%d%d",&a,&b,&c);printf("\n你输入的值是: a=%d,b=%d,c=%d\n",a,b,c);t=b;b=a;a=c;c=t;printf("交换之后的值是:a=%d,b=%d,c=%d\n",a,b,c);}第四章一. 选择题4.1 A 4.2 A 4.3 A 4.4 D 4.5 C 4.6 A 4.7 B 4.8 C 4.9 D 4.10 C二. 填空题4.11 非0 04.12 < > >= <=同级== !=同级4.13 ! && ||4.15 !4.16 a == b || a < c x > 4 || x < -44.17 14.18 x <= 0 1 > 04.19 3 2 24.20 *#三. 编程题4.21 略4.22#include/* 检查日期的合法性*/int checkdate(int year, int month, int day){if(year < 1900 || year > 2005){printf("输入的年份无效!\n");return 0;}else if(month < 0 && month > 12){printf("输入的月份无效!\n");return 0;}else if(day <= 0 && day > 31){printf("输入的日期无效!\n");return 0;}else{switch(month){case 4:case 6:case 9:case 11:if(day > 30){printf("输入的日期无效!\n");return 0;}break;case 2:if((year%4 == 0 && year%100 != 0) || year%400 == 0){if(day > 29){printf("输入的日期无效!\n");return 0;}}else{if(day > 28){printf("输入的出生日期无效!\n");return 0;}}break;}/* end of switch(m0)*/}return 1;}void main(){int y0, m0, d0; /* 生日*/int y1, m1, d1; /* 当前日期*/int years, months, days; /* 实足年龄*/printf("请输入学生的生日:"); scanf("%d%d%d", &y0,&m0,&d0);if(checkdate(y0, m0, d0)){printf("请输入当前日期:");scanf("%d%d%d", &y1,&m1,&d1);/*当前日期合法性检查*/if(!checkdate(y1, m1, d1)){return;}else if(y0 > y1){printf("出生年份比当前年份晚!\n"); return;}else if(y0 == y1){if(m0 > m1){printf("出生年月比当前年月晚!\n"); return;}else if(m0 == m1){if(d0 > d1){printf("出生年月日比当前年月日晚!\n"); return;}}}}/* 计算实足年龄*/years = y1 - y0;months = m1 - m0;days = d1 - d0;/* 修正实足年龄天数*/if(days < 0){months--;switch(m1){case 1:case 5:case 7:case 10:case 12:days += 30;break;case 2:case 4:case 6:case 8:case 9:case 11:days += 31;break;case 3:if((y1%4 == 0 && y1%100 != 0) || y1%400 == 0){days += 29;}else{days += 28;}break;}/* end of switch(m1) */}/* end of if(days < 0) *//* 修正实足年龄月数*/if(months < 0){months += 12;years--;}/* end of if(months < 0) */printf("出生日期: %d年%d月%d日\n", y0, m0, d0);printf("当前日期: %d年%d月%d日\n", y1, m1, d1); printf("实足年龄: %d年%d月%d日\n", years, months, days);return;}4.23#includevoid main()int a;printf ("请输入一个整数:");scanf ("%d",&a);if (a%2==0){printf ("%d 是偶数\n", a);}else{printf ("%d 是奇数\n", a);}}4.24#includevoid main(){int a,b,c,temp,max;printf ("请输入三个整数:");scanf ("%d %d %d",&a,&b,&c);temp=(a>b)? a:b;max=(temp>c)? temp:c;printf ("\n");printf ("你输入的数中最大的是%d.\n",max); }4.25(1)不嵌套的if语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);if ( x>-5 && x<0 ){printf("y is %d\n",y=x);}if ( x==0 ){printf("y is %d\n",y=x-1);if ( x>0 && x<10 ){printf("y is %d\n",y=x+1); }if ( x>=10 || x<=-5){printf("error\n");}}(2)嵌套的if语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);printf("\n");if(x < 0){if(x > -5){printf("y is %d.\n",y=x); }else{printf("error!\n");}}if(0 == x){printf("y is %d.\n",y=x-1); }if(x > 0){if(x < 10){printf("y is %d.\n",y=x+1); }else{printf("error!\n");}}(3)if_else语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);if( x>-5 && x<0 ){printf("y is %d.\n",y=x); }else if( x==0 ){printf("y is %d.\n",y=x-1); }else if( x>0 && x<10 ) {printf("y is %d.\n",y=x+1); }else{printf("error!\n");}}(4)switch语句#includevoid main(){int x,y;printf("input x : ");scanf("%d",&x);switch (x){case -4:case -3:case -2:case -1:printf("y is %d.\n",y=x); break;case 0:printf("y is %d.\n",y=x-1);break;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:printf("y is %d.\n",y=x+1);break;default:printf("error!\n");}}第五章一. 选择题5.1 D 5.2 C 5.3 B 5.4 C 5.5 C 5.6 B 5.7 D 5.8 A 5.9 D 5.10 D二. 填空题5.11 5 4 65.12 死循环5.13 -15.14 115.15 d=1.0 k++ k<=n5.16 x>=0 x三. 编程题5.17#includevoid main(){int i;int sig = 1;int sum = 0;for(i=1; i<=101; i++,i++){sum += sig*i;sig *= -1;}printf("sum=%d\n", sum);}5.18(1)#includevoid main(){int i;double m=1.0;double e = 1.0;for(i=1; i<50; i++){m *= i;e += 1/m;}printf("e=%f\n",e);}(2)#includevoid main(){int i=1;double m=1.0;double e = 1.0;while(1/m >= 0.0004){m *= i;e += 1/m;i++;}printf("e=%f\n",e);}5.19#includevoid main(){int year;int col = 0;for(year=1600; year<=2000; year++){if((year%4 == 0 && year%100 != 0) || year%400 == 0)printf("%d\t", year);col++;if(col%5 == 0){printf("\n");}}}printf("\n");}5.20#include#define N 7void main(){int i;int j;int m;int k = N/2;for(i=0; i {m = i-k;if(m < 0){m *= -1;}for(j=0; j {printf(" ");}for(j=0; j<2*(k-m)+1; j++){printf("*");}printf("\n");}}第六章一. 选择题6.1 B 6.2 D 6.3 A 6.4 A 6.5 B 6.6 D 6.7 D 6.8 B 6.9 A 6.10 A 6.11 C二. 填空题6.12 -16.13 16.14 ctype.h6.15 16.16 10A 20B 30C 40D6.177.29 101.298AB6.18 A7.29B101.2986.19 A B C (每个字符后有三个空格)三. 编程题6.20#include#define N 80void main(){char str[N];int iLoop = 0;gets(str);while(str[iLoop]){printf("%c-%d\t", str[iLoop],str[iLoop]); iLoop++;if(iLoop%3 == 0){printf("\n");}}printf("\n");}6.21#include#define N 80void main(){char str[N];int num = 0;int iLoop = 0;gets(str);while(str[iLoop]){if(str[iLoop] >= '0' && str[iLoop] <= '9') {num = 10*num + (str[iLoop] - '0');iLoop++;}printf("%d\n",num);}6.22#include#include#define N 80void main(){char str[N];int num = -1;do{gets(str);num++;}while(strcmp(str, "EOF"));printf("您输入了%d行字符!\n",num);}6.23#include#define N 80void main(){char str[N];int iLoop = 0;int num = 0;gets(str);while(str[iLoop] && iLoop < N){if(str[iLoop] >= 'a' && str[iLoop] <= 'z'){num++;}iLoop++;}printf("您输入了字符中有%d个小写字母!\n",num); }#includevoid main(){int line;int iLoop1;int iLoop2;printf("请输入图案的行数(不大于26):");scanf("%d", &line);for(iLoop1 = 0; iLoop1 < line; iLoop1++){for(iLoop2 = 0; iLoop2 < line - iLoop1; iLoop2++) {printf(" ");}for(iLoop2 = 0; iLoop2 < 2*iLoop1+1; iLoop2++) {printf("%c",iLoop1 + 'A');}printf("\n");}}第七章一. 选择题7.1 C 7.2 C 7.3 B 7.4 C 7.5 A 7.6 D 7.7 A二. 填空题7.8 127.9 9.0000007.10 47.11 n=1 s7.12 <=y z*x7.13 1 s*i 0 f(k)三. 程序调试和编程题7.14fun(int n){ int k,yes;for(k=2; k<=n/2; k++){if(n%k == 0) { yes = 0; break;}}return yes;}7.15int mymod(int a, int b){return a%b;}7.16double fun(int n){double sum = 0;int iLoop;int sig = -1;for(iLoop=1; iLoop<=n; iLoop++) {sig *= -1;sum += sig*1.0/iLoop;}return sum;}7.17double fun(int n){double t = 1.0;int iLoop;long tmp;for(iLoop=2; iLoop<=n; iLoop++) {tmp = iLoop*iLoop;t -= 1.0/tmp;}return t;}7.18#include#includedouble fun(double x){return x*x + 5*x + 4;}{int x = 2;printf("y1=%f\n", fun(x));printf("y2=%f\n", fun(x+15));printf("y3=%f\n", fun(sin(x)));}第八章一. 选择题8.1 A 8.2 B 8.3 B 8.4 C 8.5 B 8.6 B 8.7 C 8.8 D 8.9 B 8.10 C 8.11 C 8.12 C二. 填空题8.13 1108.14 7 18.15 (1)char *p=&ch; (2) p=&ch; (3)scanf("%c",p); (4)*p='A'; (5)printf("%c",*p);8.16 (1)s=p+3; (2)s=s-2 (3)50 (4)*(s+1) (5)2 (6)10 20 30 40 50三. 编程题8.17void fun(double x, double y, double *sum, double *div){*sum = x + y;*div = x - y;return;}8.18void fun(double x, double y, double z, double *max, double *min){*max = x;*min = x;if(*max < y){*max = y;}if(*max < z){*max = z;}if(*min > y){*min = y;}if(*min > z){}return;}第九章一. 选择题9.1 D 9.2 A 9.3 A 9.4 C 9.5 C 9.6 A 9.7 B 9.8 D 9.9 C 9.10 C 9.11 C 9.12 D 9.13 D 9.14 A 9.15 A 9.16 A 9.17 C 9.18 C二. 填空题9.19 9 09.20 69.21 129.22 39.23 27219.24 -850,2,09.25 k=p k9.26 (c=getchar()) c-'A'三. 编程题9.27#include#define N 81int main(){int counter[10] = {0};int iLoop = 0;char str[N];gets(str);while(str[iLoop]){if(str[iLoop] >= '0' && str[iLoop] <= '9'){counter[str[iLoop] - '0']++;}iLoop++;}for(iLoop=0; iLoop < 10; iLoop++){printf("%d - %d\n", iLoop, counter[iLoop]);}return 0;}void fun(int array[], int arraysize, int start){int iLoop;if(start < arraysize-1){if(start <=0){start = 1;}for(iLoop = start; iLoop < arraysize; iLoop++){array[iLoop-1] = array[iLoop];}}for(iLoop = 0; iLoop < arraysize; iLoop++){printf("No.%d = %d\n", iLoop, array[iLoop]);}}9.29int fun(int arry1[], int arry2[], int arrysize){int iLoop;int counter = 0;for(iLoop = 0; iLoop < arrysize; iLoop++){if(arry1[iLoop] % 2){arry2[counter++] = arry1[iLoop];}}return counter;}9.30void fun(char array[], int arraysize){int iLoop1;int iLoop2;char temp;/* 冒泡排序*/for(iLoop1 = 0; iLoop1 < arraysize - 1; iLoop1++){for(iLoop2 = 0; iLoop2 < arraysize - 1 - iLoop1; iLoop2++)if(array[iLoop2] < array[iLoop2 + 1]){temp = array[iLoop2];array[iLoop2] = array[iLoop2 + 1];array[iLoop2 + 1] = temp;}}}}9.31#includevoid fun(int array[], int arraysize, int inertNumber) {int iLoop;int iLoop2;if(array[0] < array[arraysize-1]){for(iLoop = 0; iLoop< arraysize; iLoop++){if(array[iLoop] > inertNumber){for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--) {array[iLoop2 + 1] = array[iLoop2];}array[iLoop] = inertNumber;break;}}if(iLoop >= arraysize){array[arraysize] = inertNumber;}}else{for(iLoop = 0; iLoop< arraysize; iLoop++){if(array[iLoop] < inertNumber){for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--) {array[iLoop2 + 1] = array[iLoop2]; }array[iLoop] = inertNumber; break;}}if(iLoop >= arraysize){array[arraysize] = inertNumber;}}}int main(){int iLoop;int a[20] = {7,6,5,3,2,1};for(iLoop = 0; iLoop < 6; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 6, 0);for(iLoop = 0; iLoop < 7; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 7, 4);for(iLoop = 0; iLoop < 8; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 8, 8);for(iLoop = 0; iLoop < 9; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");return 0;}9.32int fun(int number, int array[]){int iLoop = 0;int iLoop2;int binLen;int midNumber;int div;int remain;midNumber = number;do{div = midNumber/2;remain = midNumber%2;midNumber = div;array[iLoop++] = remain;}while(midNumber);binLen = iLoop;for(iLoop2 = 0, iLoop = binLen - 1; iLoop2 < iLoop; iLoop2++, iLoop--) {midNumber = array[iLoop2];array[iLoop2] = array[iLoop];array[iLoop] = midNumber;}return binLen;}9.33#include#include#define N 15void fun(int array[], int arraysize){int x;int iLoop;int iLoop2;for(iLoop = 0; iLoop < arraysize; iLoop++){iLoop2 = 0;x = rand()%20;do{if(x == array[iLoop2] && iLoop > 0){x = rand()%20;iLoop2 = 0;}iLoop2++;}while(iLoop2 < iLoop);array[iLoop] = x;}}int main(){int a[N];int iLoop;fun(a, N);for(iLoop = 0; iLoop < N; iLoop++){printf("%d\n", a[iLoop]);}return 0;}第十章一. 选择题10.1 C 10.2 B 10.3 C 10.4 B 10.5 C 10.6 A 10.7 C 10.8 A 10.9 C 10.10 C二. 填空题10.11 GFEDCB10.12 XYZ10.13 SO10.14 1010.15 Itis10.16 strlen(str)-1 j--10.17 310.18 goodgood!三. 编程题10.19char* mygets(char *str){int iLoop = 0;char ch;while((ch=getchar()) != '\n')str[iLoop++] = ch;}str[iLoop] = '\0';return str;}char * myputs(char *str){int iLoop = 0;while(str[iLoop]){putchar(str[iLoop++]);}putchar('\n');return str;}10.20#include#includeint fun(char *str){int len;int iLoop1;int iLoop2;int result = 1;len = strlen(str);for(iLoop1 = 0, iLoop2 = len - 1; iLoop1 < iLoop2; iLoop1++, iLoop2--) {if(str[iLoop1] != str[iLoop2]){result = 0;break;}}return result;}int main(){char a[20] = "ABCDCBA";char b[20] = "ABCDEBA";printf("%d\n", fun(a));printf("%d\n", fun(b));return 0;}10.21char fun(char *str, int pos){int len;int iLoop;char ch;len = strlen(str);if(pos > len){return NULL;}ch = str[pos];for(iLoop = pos; iLoop < len - 1; iLoop++) {str[iLoop] = str[iLoop + 1];}str[len-1] = '\0';return ch;}第十一章一. 选择题11.1 D 11.2 B 11.3 A 11.4 C二. 填空题11.5 IJKLEFGHABCD11.6 711.7 811.8 *(s+j) i+1 i11.9 1711.10 (*fun)() (*fun)(a+i*h)/h mypoly三. 编程题11.11#include#include#define N 81int main(int argc, char **argv)char sig;int dig;int pos;char str[N] = {'\0'};char outStr[N] = {'\0'};if(argc < 2){sig = '-';dig = 10;}else{sig = argv[1][0];dig = argv[1][1] - '0';}printf("请输入一个字符串:"); gets(str);if(sig == '-'){pos = strlen(str) - dig;if(pos <= 0){pos = 0;}strcpy(outStr, str + pos);}else if(sig == '+'){strcpy(outStr, str);pos = strlen(outStr);if(pos > dig){pos = dig;}outStr[pos] = '\0';}printf("处理后的字串为:"); printf("%s\n", outStr);}11.12#include#includevoid movebin(char *bin){int len;int iLoop;len = strlen(bin);for(iLoop = len; iLoop > 0; iLoop--) {bin[iLoop] = bin[iLoop - 1];}return;}void fun(int n, char *bin){int pos;pos = strlen(bin);if(n == 0){return;}if(n == 1){movebin(bin);bin[0] = '1';return;}movebin(bin);bin[0] = (n%2) + '0';n /= 2;fun(n, bin);return;}int main(){int a = 4;char bin[50] = {""};printf("%s\n", bin);return 0;}11.13#includelong fun(int n){if(n == 1){return n;}else{return fun(n-1) + n;}}int main(){int num;int sum;printf("请输入一个自然数:"); scanf("%d", &num);sum = fun(num);printf("结果是:%d\n", sum);return 0;}11.14#includeint fun(int n){if(n == 0 || n == 1){return 1;}else{return fun(n-1) + fun(n-2);}}int main(){int num;int result;printf("请输入一个自然数:");scanf("%d", &num);result = fun(num);printf("斐波拉契级数为:%d\n", result);return 0;}第十二章一. 选择题12.1 B 12.2 B 12.3 A 12.4 C 12.5 D 12.6 B 12.7 A 12.8 A二. 填空题12.9 2,5,1,2,3,-212.10 2468第十三章一. 选择题13.1 A 13.2 C 13.3 B 13.4 C 13.5 D 13.6 D 13.7 D二. 填空题13.8 ar=9 ar=9 ar=1113.9 int* s *b三. 编程题13.10#define MYALPHA(C) ((C>='A' && C<='Z') || (C>='a' && C<='z')) ? 1 : 0 13.11#define SWAP(t,x,y) {t tmp; tmp=x; x=y; y=tmp;}13.12#include#includeint main(){int *p;int tmp;int iLoop;int iLoop2;p = (int *)malloc(sizeof(int)*3);scanf("%d%d%d", p,p+1,p+2);for(iLoop = 0; iLoop < 2; iLoop++){for(iLoop2 = 0; iLoop2 < 2 - iLoop; iLoop2++){if(*(p + iLoop2) > *(p + iLoop2 + 1)){tmp = *(p + iLoop2);*(p + iLoop2) = *(p + iLoop2 + 1);*(p + iLoop2 + 1) = tmp;}}}printf("%d %d %d\n", *p, *(p+1), *(p+2));free(p);p = NULL;return 0;}第十四章一. 选择题14.1 D 14.2 D 14.3 D 14.4 A 14.5 C 14.6 C 14.7 C 14.8 B二. 填空题14.9 struct link *next14.10 p->next m>p->data14.11 (struct list*) struct list struct list* struct list return h三. 编程题14.12#include#define N 3struct stud{char num[5], name[10];int s[4];double ave;};void readrec(struct stud array[], int size){int iLoop;for(iLoop=0; iLoop {scanf("%s%s%d%d%d%d", array[iLoop].num, array[iLoop].name, &array[iLoop].s[0], &array[iLoop].s[1],&array[iLoop].s[2], &array[iLoop].s[3]);array[iLoop].ave = (array[iLoop].s[0] + array[iLoop].s[1] +array[iLoop].s[2] + array[iLoop].s[3])/4.0;}return;}void writerec(struct stud array[], int size){int iLoop;for(iLoop=0; iLoop{printf("%s\t%s\t%d\t%d\t%d\t%d\t%f\n",array[iLoop].num,array[iLoop].name,array[iLoop].s[0],array[iLoop].s[1],array[iLoop].s[2],array[iLoop].s[3],array[iLoop].ave);}return;}int main(){struct stud stu[N];readrec(stu, N);writerec(stu, N);return 0;}14.13#include#include#define N 100struct node{int data;struct node* next;};int seekMaxValue(struct node *pNode){int max;struct node* pMove;pMove = pNode;max = pMove->data;pMove = pMove->next;while(pMove){if(max < pMove->data){max = pMove->data;}pMove = pMove->next;}return max;}struct node* seekMaxValueAddress(struct node *pNode) {int max;struct node* maxAddress;struct node* pMove;pMove = pNode;max = pMove->data;maxAddress = pMove;pMove = pMove->next;while(pMove){if(max < pMove->data){max = pMove->data;maxAddress = pMove;}pMove = pMove->next;}return maxAddress;}int main(){struct node* head;struct node* pNode;int iLoop;head = (struct node*)malloc(sizeof(struct node)); pNode = head;pNode->next = NULL;for(iLoop=0; iLoop {pNode->next = (struct node*)malloc(sizeof(struct node)); pNode = pNode->next;pNode->next = NULL;pNode->data = iLoop;}printf("%d\n", seekMaxValue(head->next));printf("%d\n", seekMaxValueAddress(head->next));return 0;}第十五章一.选择题15.1 D 15.2 A 15.3 B 15.4 A二. 填空题15.5 1111000015.6 a^a15.7 a|0xffff15.8 x|0xff0015.9 a=(012500>>2)15.10 ch|0x20第十六章一. 选择题16.1 B 16.2 C二. 填空题16.3 3 !feof(f1) f2 fclose(f1) fclose(f2)16.4 fopen(fname,"w") ch16.5 "r" !feof(fp) fgetc(fp)16.6 CCCCBBBBAAAA三. 编程题#include#define N 10#define LEN 81int main(){char *str[N] = {"AAAAAAAAA", "BBBBBBBBB", "CCCCCCCCC", "DDDDDDDDD", "EEEEEEEEE", "FFFFFFFFF", "GGGGGGGGG", "HHHHHHHHH","IIIIIIIII","JJJJJJJJJ"};char str2[N][LEN];FILE *fp;int iLoop;fp = fopen("str.txt", "w");if(fp == NULL){printf("创建文件失败!\n"); return 1;}else{for(iLoop = 0; iLoop < N; iLoop++) {fputs(str[iLoop], fp);fputs("\n",fp);}}fclose(fp);fp = fopen("str.txt", "r");if(fp == NULL){printf("打开文件失败!\n"); return 1;}elsefor(iLoop = 0; iLoop < N; iLoop++){fgets(str2[iLoop], LEN - 1, fp);}}fclose(fp);for(iLoop = 0; iLoop < N; iLoop++){printf("%s", str2[iLoop]);}return 0;}16.8#include#define N 10int main(){float num;int iLoop;FILE *fp;fp = fopen("num.bin", "wb+");if(fp == NULL){printf("创建文件失败!\n");return 1;}/* 从键盘读入10个数并写文件*/printf("请输入%d个数:", N); for(iLoop = 0; iLoop < N; iLoop++){scanf("%f", &num);fwrite(&num, sizeof(num), 1, fp);}/* 文件指针回到开始处*/rewind(fp);/* 从文件读出10个数并显示*/for(iLoop = 0; iLoop < N; iLoop++){fread(&num, sizeof(num), 1, fp);printf("%f\n", num);/* 移文件指针到第四个数开始处*/fseek(fp, 3L*sizeof(num), SEEK_SET);/* 读入一个新数据*/printf("请输入一个新数据:"); scanf("%f", &num);fwrite(&num, sizeof(num), 1, fp);/* 文件指针回到开始处*/rewind(fp);/* 从文件读出10个数并显示*/for(iLoop = 0; iLoop < N; iLoop++){fread(&num, sizeof(num), 1, fp);printf("%f\n", num);} /* 关闭文件*/fclose(fp);return 0;}。
第一章C语言基础知识一,选择题1 答案是AA正确B {}可以作为复合语句的标志C main 函数不是用户命名的D 分号是语句结束的标志,肯定是语句的一部分做这个题目需要对书上的概念透彻的理解2 答案是AA 错误用户标识符:命名时,标识符的选择由用户自定,但是不能与关键字相同,所以A选项错误。
这个题目考察用户标识符3 答案是B用户标识符是标识符,所以可以是有下划线,但是中划线不属于字母,数字,下划线其中一种。
这个题目考察用户标识符的概念。
4 答案是Bprintf是预定义标识符,而预定义标识符可以是用户标识符,所以printf可以是用户标识,int是关键字,而关键字不能是用户标识符,所以int不可以是用户标识符5 答案是Dlong 是关键字,参照附录二注:6--13 考察用户标识符概念6 答案是DD答案以数字2开头了,不符合标识符定义7 答案是CC答案以数字开头了8 答案是Dint 是关键字9 答案是B答案A 是关键字,答案C是以数字开头了,不符合概念,答案D出现了小数点10 答案是A答案A出现了小数点11 答案是C答案C 以数字开头了12 答案是AB答案中float 是关键字,C答案中3c以数字3开头了,D答案中-5d 中- 不属于字母,数字,下划线中一种13 答案是AB答案中-max中-错误,C答案中3COM以字母3开头了,D答案中int 是关键字,不是用户标识符14 答案是BA答案中15. 后面不应该有点,C答案中出现了逗号,D中字母B有问题15 答案是DVisual C++6.0中int类型的变量占的字节数为4。
16 答案是BB中出现了8,而八进制只能有0到7组成17 答案是D答案D中开头是0不是o18 答案是C答案A中E后面是整数,0.5是小数答案B 中E后面不能为空答案D中E前面不能为空本题目考察指数的表示形式19 答案是C答案A中2.0有问题,不能为小数形式答案B中E前面不能为空答案D中E后面不能为空本题目考察指数的表示形式20 答案是AB中八进制中不能出现数字8,C中e后面不能是小数,D中e后面不能为空21 答案是BB中0.4是小数,不正确22 答案是CC中0.5是小数,不正确23 答案是D3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8本题目考察算术运算符,需要注意整数除以整数结果只能是整数24 答案是D%不能用于实型的计算25 答案是DD答案中$不属于字母,数字,下划线26 答案是AA答案是逗号表达式,B答案中x+1=y是赋值表达式,左边只能是变量,而这里是x+1, 同理答案C中x+10也是错误的,在D答案中,考察的是强制类型转换,正确的是(double)x/1027 答案是Ab=10;这句被注释了。
c二级考试试题及答案第一部分:听力理解 (共20小题,每小题1分,共20分)请听下面的对话,根据对话内容选择正确答案。
1. A. In a library. B. In a bookstore. C. In a coffee shop.2. A. At 7:00. B. At 7:30. C. At 8:00.3. A. By bus. B. By subway. C. By taxi.4. A. Two. B. Three. C. Four.5. A. A teacher and a student. B. A doctor and a patient. C. A salesperson and a customer.请听下面的对话,根据对话内容选择正确答案。
6. A. At a hotel. B. At an airport. C. At a train station.7. A. The blue one. B. The black one. C. The red one.8. A. Next Monday. B. Next Thursday. C. Next Sunday.9. A. A police officer. B. A hotel receptionist. C. A taxi driver.10. A. Going to a museum. B. Going to a party. C. Going to a concert.请听下面的对话,根据对话内容选择正确答案。
11. A. At a bookstore. B. At a library. C. At a coffee shop.12. A. By car. B. By bus. C. By subway.13. A. Blue. B. Red. C. White.14. A. Writing a report. B. Reading a book. C. Finishing an assignment.15. A. Two days. B. Three days. C. Four days.请听下面的对话,根据对话内容选择正确答案。
第一章参考答案及解析一. 选择题1. 答案:A【解析】C语言作为计算机高级语言,用它编写的程序必须经过C语言的编译器编译后,转换为二进制的机器语言来运行。
2. 答案:B【解析】设计一个能解决实际问题的计算机程序需要经过以下几个过程:①建立模型。
②算法设计:给出解决问题的步骤,即算法。
③算法表达:选择一种表达算法的工具,对算法进行清晰的表达。
④编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写程序。
⑤程序调试:对编写好的程序进行调试,修改程序中的错误。
⑥程序文档编写与程序维护。
综上所述,B)选项是符合上述描述的,其他选项不恰当。
3. 答案:B【解析】C程序在运行过程中所有计算都以二进制方式进行,所以A)正确,B)错误。
所有C 程序先编译再链接,全都无误后才能运行。
C程序中整型变量用于存放整数,实型变量用于存放浮点数。
所以,本题答案为B)。
4. 答案:B【解析】C语言中只有函数没有过程,故选项A错误;C语言可以嵌套调用,故选项B正确;C语言函数可以单独编译成.dll文件,故选项C错误;C语言中除main函数以外,其他函数可作为单独文件形式存在,故选项D也错误。
5. 答案:D【解析】程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。
所以选项A)、B)、C)说法都不完整。
6. 答案:C【解析】函数是C程序的基本组成单位;C语言书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。
故本题答案为C)。
7. 答案:D【解析】计算机能直接执行的只能是机器语言程序,源程序和汇编程序都是用高级语言编写的程序,不能被直接执行。
目标程序也是不能被直接执行的程序,需要通过系统提供的连接程序与库函数连接装配成可执行程序,才能被计算机执行。
所以本题答案为D)。
8. 答案:D【解析】选项D)为两条语句。
9. 答案:D【解析】一个C语言的源程序(后缀名为.c)在经过编译器编译后,先生成一个汇编语言程序,然后由编译程序再将汇编语言程序翻译成机器指令程序,即目标程序(后缀名为 .obj ),目标程序不可以直接运行,它要和库函数或其他目标程序连接成可执行文件(后缀名为.exe)后方可运行。
《全国计算机等级考试二级教程——C语言程序设计》习题分析与详细解答第一章程序设计基本概念习题分析与解答1.1 【参考答案】EXE1.2 【参考答案】[1].C [2].OBJ [3].EXE1.3 【参考答案】[1]顺序结构[2]选择结构[3]循环结构第二章C程序设计的初步知识习题分析与解答一、选择题2.1 【参考答案】B)2.2 【参考答案】D)2.3 【参考答案】B)2.4 【参考答案】A)2.5 【参考答案】C)2.6 【参考答案】A)2.7 【参考答案】B)2.8 【参考答案】B)2.9 【参考答案】D)2.10 【参考答案】C)2.11 【参考答案】B)2.12 【参考答案】B)2.13 【参考答案】A)二、填空题2.14 【参考答案】[1]11 [2]122.15 【参考答案】[1]4.2 [2]4.22.16 【参考答案】[1]{ [2]} [3]定义[4]执行2.17 【参考答案】[1]关键字[2]用户标识符2.18 【参考答案】[1]int [2]float [3]double2.19 【参考答案】float a1=1.0, a2=1.0;或float a1=1, a2=1;(系统将自动把1转换为1.0)2.20 【参考答案】存储单元2.21 【参考答案】 3.52.22 【参考答案】[1]a*b/c [2]a/c*b [3]b/c*a2.23 【参考答案】把10赋给变量s2.24 【参考答案】[1]位[2]1位二进制数据(0或1)2.25 【参考答案】[1]8 [2]127 [3][4]-128 [ 5 ]2.26 【参考答案】[1]32767 [2]-32768 [3]000002.27 【参考答案】[1]十[2]八[3]十六三、上机改错题2.28 【分析与解答】第1行的错误:(1) include是一个程序行,因此在此行的最后不应当有分号(;)。
第2行的错误:(1) main()是主函数的起始行,不是语句,因此最后不应当有分号(;)。
《全国计算机等级考试二级教程C语言程序设计》课后题及参考答案第一章程序设计基本概念1.1 在TRUBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是______。
答案:.exe1.2 C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。
答案:.c .obj .exe1.3 结构化程序由_____、_____、_____三种基本结构组成。
答案:顺序、选择、循环第二章 C程序设计的初步知识一、选择题2.1 以下选项中正确的整型常量是A)12. B)-20 C)1,000 D)4 5 6 答案:B2.2 以下选项中正确的实型常量是A)0 B)3. 1415 C)0.329×10(2)(10的2次方)D).871 答案:D2.3 以下选项中不正确的实型常量是A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2 答案:B2.4 以下选项中不合法的用户标识符是A)abc.c B)file C)Main D)PRINTF 答案:A 2.5 以下选项中不合法的用户标识符是A)_123 B)printf C)A$ D)Dim 答案:C2.6 C语言中运算对象必需是整型的运算符是A)% B)/ C)! D)** 答案:A2.7 可在C程序中用作用户标识符的一组标识符是A)void define WORD B)as_b3 _123 If C)For -abc case D)2c DO SIG 答案:B2.8 若变量已正确定义并赋值,符合C语言语法的表达式是A)a=a+7;B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b 答案:B2.9 以下叙述中正确的是A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。
B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。
《二级C语言程序设计及同步训练》习题参考答案第一章同步训练:选择题:1-5:BDCDA 6-10:BCDCC填空题:1.主(或main())2.主(或main())3.{ }4. c obj exe5.确定性可行性有穷性有零个或多个输入有一个或多个输出第二章同步训练:选择题:1-5:BACBC 6-10:CADCD 11-15:ADABC 16-20:DDADA 21-25:ADCCD填空题:1.242.字母下划线字母下划线关键字3. 3.0000004.字符5. 2 46. 47. 28.1111 1111 1111 11119.0100 000110.2*x-(x+y)/(3*y+1)第三章同步训练:选择题1-5:BCDAA 6-10:BBDBA 11-15:CCACD填空题1.m=123n=456p=7892.283. 54.8,105.126.12347.78.261第四章同步训练:选择题1-5:BCDCC 6-10:BCCCB 11-15:DDDBD填空题1.72.(y%2)==1或(y%2)!=03.5,14.20,05.passwarn第五章同步训练:选择题1-5:B B ACC 6-10:DADBD 11-15:CBDDD填空题1. 62.7653. 44.85.106.b=i+17.i<10 j%3!=08.209.1710.16第六章同步训练:选择题1-5:C C BBB 6-10:ACDBD 11-15:BBDDC 16-18:ACA 填空题1.162.1533. 5 74.double f(int n) double f(int);5.void fun(); static int a=1;第七章同步训练:选择题1-5:CCBDB 6-10:CDDAB 11-12:DC填空题1.9,82.103.1230560094.235. 5 20第八章同步训练:选择题1-5:ABCDB 6-10:BCDCD 11-15:ADDAA填空题1. 12.113. 6 114.05.106.*s<*p7.t[1][2]8.*(p+5)9.543210.BCDCDD11. 612.IJKLABCDEFGH第九章同步训练:选择题1-5:DCDDB 6-10:DABAD 11-15:ABCBB 16-20:DDABB 填空题1.(double *)2.calloc(11,1)3.sizeof(struct node)4.struct STRU *5.struct node * *s p6. 57.2708.519.1610.1211.struct st12.12第十章同步训练:选择题1-5:ABCDA 6-10:DDBBC填空题1.1000 102.a,b,c3.124.85.8第十一章同步训练:选择题1-5:DADDB 6-10:DBBDA填空题1.“bi.dat”,“w”2.Hell3.!feof(fp)4. 15.fname fp选择题1-5:ABCBA 6-10:DACDD 11-15:ACCAA 16-20:BBDAA 21-25:DAACC 26-30:ACBDA 31-35:ACBDB填空题1.882.103003.25 21 374.05. 1 3 26.x=ar[i][j]7.br[i]=x8.t*109.gae10.1211.2002shangxian12.67e13.2914.415.BCDCDD模拟试题二选择题1-5:ACABD 6-10:CDCBD 11-15:BCAAA 16-20:ACBCD21-25:DDBBC 26-30:DDCBB 31-35:ADCAB填空题1. B 662. 13.p=(double *)malloc(sizeof(double));4. 35.126.8 47.158.i9.–f10.fun(10)11.j<i12.a[i][j]=a[j][i]13.1114.1015.4 3 3 4模拟试题三选择题1-5:CCACD 6-10:DBCCC 11-15:AADDB 16-20:DBACA21-25:BDDCC 26-30:ADAAA 31-35:CBCDC填空题2. 2 20.0000003.n1=%d\nn2=%d\n4.245. b6.817.0101112128. 2 19.double max10.1343111.str+strlen(str)-112.p1>p213.huiwen(str)14.m=fun(a,4)+fun(b,4)-fun(a+b,3);15.1 3 6模拟试题四选择题1-5:BBBBD 6-10:ABBAD 11-15:BABBD 16-20:BCDCB21-25:ACDCD 26-30:CCDDC 31-35:BADDA(第30题有错误:程序第4行为t=a[i];a[i]=a[j];a[j]=t;程序第10行为int x[]={2,6,1,8}; )填空题1.yes2.9 ( 此题有错误:程序第3行为c1=’0’,c2=’9’;c1=c2-c1; )3.-44. 1 B5. 66.*t7.3*sizeof(double)8.>=19.i10.abcbcc11.&a[i]12.a[i] ( 此题有错误:此填空上一行为if(a[i]>0) {count++; )13.30 2514.a[0][i]15.b[i][0]。
全国计算机等级考试二级教程--C语言程序设计课后习题答案main /* main function */ main后遗失了“()”{float a,b,c,v; /*a,b,c are sides, v is volume of cube */a=2.0; b=3.0; c=4.0 行尾遗失了“;”v=a*b*c;printf("%f\n", v) 行尾遗失了“;”}第三章一. 选择题3.1 C 3.2 C 3.3 D 3.4 C 3.5 D 3.6 B 3.7 C 3.8D 3.9 A 3.10 B3.11 C 3.12 D 3.13 D 3.14 A 3.15 C 3.16 C 3.17C 3.18 无答案 3.19 C 3.20 B二. 填空题3.21 (1)-2002500(2)i=-200,j=2500(3)i=-200j=25003.22 12 0 03.23 一条语句 ;3.24 ;3.25 100,25.81,1.89234 100 25.81 1.89234 100 25.81 1.892343.26 x=127,x= 127,x= 177,x= 7f,x= 1273.27 x=127,x=127 ,x=$127 ,x=$000127,x=%06d 3.28 a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500三. 编程题和改错题3.29 修改后的程序如下:main(){double a,b,c,s,v;printf("input a,b,c:");scanf("%lf%lf%lf",&a,&b,&c);s =a*b;v=a*b*c;printf("a=%f,b=%f,c=%f\n", a,b,c);printf("s=%f,v=%f\n",s,v);}3.30#includemain(){int a=560,b=60;printf("560 minute is %d hour and %d minute.\n",a/b,a%b);}3.31#includemain(){int a,b;a=1500;b=350;printf("a div b is : %d\n",a/b);printf("a mod b is : %d\n",a%b);}3.32#includemain(){double a,b,c,ave;printf ("input 3 double number : \n"); scanf ("%lf%lf%lf",&a,&b,&c);printf ("%.1f\n",(a+b+c)/3);}3.33#includevoid main(){int a,b,c,t;printf("请依次输入整数a,b,c:");scanf("%d%d%d",&a,&b,&c);printf("\n你输入的值是: a=%d,b=%d,c=%d\n",a,b,c);t=b;b=a;a=c;c=t;printf("交换之后的值是:a=%d,b=%d,c=%d\n",a,b,c);}第四章一. 选择题4.1 A 4.2 A 4.3 A 4.4 D 4.5 C 4.6 A 4.7 B 4.8C 4.9D 4.10 C二. 填空题4.11 非0 04.12 < > >= <=同级 == !=同级4.13 ! && ||4.15 !4.16 a == b || a < c x > 4 || x < -44.17 14.18 x <= 0 1 > 04.19 3 2 24.20 *#三. 编程题4.21 略4.22#include/* 检查日期的合法性 */int checkdate(int year, int month, int day) {if(year < 1900 || year > 2005){printf("输入的年份无效!\n");return 0;}else if(month < 0 && month > 12) {printf("输入的月份无效!\n"); return 0;}else if(day <= 0 && day > 31) {printf("输入的日期无效!\n"); return 0;}else{switch(month){case 4:case 6:case 9:case 11:if(day > 30){printf("输入的日期无效!\n");return 0;}break;case 2:if((year%4 == 0 && year%100 != 0) || year%400 == 0){if(day > 29){printf("输入的日期无效!\n");return 0;}}else{if(day > 28){printf("输入的出生日期无效!\n");return 0;}}break;}/* end of switch(m0)*/}return 1;}void main(){int y0, m0, d0; /* 生日 */int y1, m1, d1; /* 当前日期 */int years, months, days; /* 实足年龄*/printf("请输入学生的生日:");scanf("%d%d%d", &y0,&m0,&d0);if(checkdate(y0, m0, d0)){printf("请输入当前日期:");scanf("%d%d%d", &y1,&m1,&d1);/*当前日期合法性检查*/if(!checkdate(y1, m1, d1)){return;else if(y0 > y1){printf("出生年份比当前年份晚!\n"); return;}else if(y0 == y1){if(m0 > m1){printf("出生年月比当前年月晚!\n"); return;}else if(m0 == m1){if(d0 > d1){printf("出生年月日比当前年月日晚!\n"); return;}}}/* 计算实足年龄 */ years = y1 - y0; months = m1 - m0; days = d1 - d0;/* 修正实足年龄天数*/ if(days < 0){months--;switch(m1){case 1:case 5:case 7:case 10:case 12:days += 30;break;case 2:case 4:case 6:case 8:case 9:case 11:days += 31;break;case 3:if((y1%4 == 0 && y1%100 != 0) || y1%400 == 0){days += 29;}else{days += 28;}break;}/* end of switch(m1) */}/* end of if(days < 0) *//* 修正实足年龄月数*/if(months < 0){months += 12;years--;}/* end of if(months < 0) */printf("出生日期: %d年%d月%d日\n", y0, m0, d0);printf("当前日期: %d年%d月%d日\n", y1, m1, d1);printf("实足年龄: %d年%d月%d日\n", years, months, days);return;}4.23#includevoid main(){int a;printf ("请输入一个整数 :"); scanf ("%d",&a);if (a%2==0){printf ("%d 是偶数\n", a); }else{printf ("%d 是奇数\n", a); }}4.24#includevoid main(){int a,b,c,temp,max;printf ("请输入三个整数 :"); scanf ("%d %d %d",&a,&b,&c); temp=(a>b)? a:b;max=(temp>c)? temp:c;printf ("\n");printf ("你输入的数中最大的是 %d.\n",max); }4.25(1)不嵌套的if语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);if ( x>-5 && x<0 ){printf("y is %d\n",y=x);}if ( x==0 ){printf("y is %d\n",y=x-1);}if ( x>0 && x<10 )printf("y is %d\n",y=x+1); }if ( x>=10 || x<=-5){printf("error\n");}}(2)嵌套的if语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);printf("\n");if(x < 0){if(x > -5){printf("y is %d.\n",y=x);else{printf("error!\n");}}if(0 == x){printf("y is %d.\n",y=x-1); }if(x > 0){if(x < 10){printf("y is %d.\n",y=x+1); }else{printf("error!\n");}}}(3)if_else语句#includevoid main(){int x,y;printf("input x :");scanf("%d",&x);if( x>-5 && x<0 ){printf("y is %d.\n",y=x); }else if( x==0 ){printf("y is %d.\n",y=x-1); }else if( x>0 && x<10 ){printf("y is %d.\n",y=x+1); }else{printf("error!\n");}}(4)switch语句#includevoid main(){int x,y;printf("input x : ");scanf("%d",&x);switch (x){case -4:case -3:case -2:case -1:printf("y is %d.\n",y=x); break;case 0:printf("y is %d.\n",y=x-1); break;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:printf("y is %d.\n",y=x+1);break;default:printf("error!\n");}}第五章一. 选择题5.1 D 5.2 C 5.3 B 5.4 C 5.5 C 5.6 B 5.7 D 5.8A 5.9 D 5.10 D二. 填空题5.11 5 4 65.12 死循环5.13 -15.14 115.15 d=1.0 k++ k<=n5.16 x>=0 x三. 编程题5.17#includevoid main(){int i;int sig = 1;int sum = 0;for(i=1; i<=101; i++,i++) {sum += sig*i;sig *= -1;}printf("sum=%d\n", sum);5.18(1)#includevoid main(){int i;double m=1.0; double e = 1.0;for(i=1; i<50; i++) {m *= i;e += 1/m;}printf("e=%f\n",e); }(2)#includevoid main()int i=1;double m=1.0;double e = 1.0;while(1/m >= 0.0004){m *= i;e += 1/m;i++;}printf("e=%f\n",e);}5.19#includevoid main(){int year;int col = 0;for(year=1600; year<=2000; year++) {if((year%4 == 0 && year%100 != 0) || year%400 == 0){printf("%d\t", year);col++;if(col%5 == 0){printf("\n");}}}printf("\n");}5.20#include#define N 7void main(){int i;int j;int m;int k = N/2;for(i=0; i {m = i-k;if(m < 0){m *= -1;}for(j=0; j {printf(" ");}for(j=0; j<2*(k-m)+1; j++) {printf("*");}printf("\n");}}第六章一. 选择题6.1 B 6.2 D 6.3 A 6.4 A 6.5 B 6.6 D 6.7 D 6.8B 6.9 A 6.10 A 6.11 C二. 填空题6.12 -16.13 16.14 ctype.h6.15 16.16 10A 20B 30C 40D6.177.29 101.298AB6.18 A7.29B101.2986.19 A B C (每个字符后有三个空格)三. 编程题6.20#include#define N 80void main(){char str[N];int iLoop = 0;gets(str);while(str[iLoop]){printf("%c-%d\t", str[iLoop],str[iLoop]); iLoop++;if(iLoop%3 == 0){printf("\n");}}printf("\n");}6.21#include#define N 80void main(){char str[N];int num = 0;int iLoop = 0;gets(str);while(str[iLoop]){if(str[iLoop] >= '0' && str[iLoop] <= '9') {num = 10*num + (str[iLoop] - '0');}iLoop++;}printf("%d\n",num);}6.22#include#include#define N 80void main(){char str[N];int num = -1;do{gets(str);num++;}while(strcmp(str, "EOF"));printf("您输入了%d行字符!\n",num);}6.23#include#define N 80void main(){char str[N];int iLoop = 0;int num = 0;gets(str);while(str[iLoop] && iLoop < N){if(str[iLoop] >= 'a' && str[iLoop] <= 'z') {num++;}iLoop++;}printf("您输入了字符中有%d个小写字母!\n",num);}6.24#includevoid main(){int line;int iLoop1;int iLoop2;printf("请输入图案的行数(不大于26):"); scanf("%d", &line);for(iLoop1 = 0; iLoop1 < line; iLoop1++) {for(iLoop2 = 0; iLoop2 < line - iLoop1;iLoop2++){printf(" ");}for(iLoop2 = 0; iLoop2 < 2*iLoop1+1; iLoop2++){printf("%c",iLoop1 + 'A');}printf("\n");}}第七章一. 选择题7.1 C 7.2 C 7.3 B 7.4 C 7.5 A 7.6 D 7.7 A二. 填空题7.8 127.9 9.0000007.10 47.11 n=1 s7.12 <=y z*x7.13 1 s*i 0 f(k)三. 程序调试和编程题7.14fun(int n){ int k,yes;for(k=2; k<=n/2; k++){if(n%k == 0) { yes = 0; break;} else yes = 1;}return yes;}7.15int mymod(int a, int b){return a%b;}7.16double fun(int n){double sum = 0;int iLoop;int sig = -1;for(iLoop=1; iLoop<=n; iLoop++) {sig *= -1;sum += sig*1.0/iLoop;}return sum;}7.17double fun(int n){double t = 1.0;int iLoop;long tmp;for(iLoop=2; iLoop<=n; iLoop++) {tmp = iLoop*iLoop;t -= 1.0/tmp;}return t;}7.18#include#includedouble fun(double x){return x*x + 5*x + 4;}void main(){int x = 2;printf("y1=%f\n", fun(x));printf("y2=%f\n", fun(x+15));printf("y3=%f\n", fun(sin(x)));}第八章一. 选择题8.1 A 8.2 B 8.3 B 8.4 C 8.5 B 8.6 B 8.7 C 8.8D 8.9 B 8.10 C 8.11 C 8.12 C二. 填空题8.13 1108.14 7 18.15 (1)char *p=&ch; (2) p=&ch;(3)scanf("%c",p); (4)*p='A';(5)printf("%c",*p);8.16 (1)s=p+3; (2)s=s-2 (3)50 (4)*(s+1) (5)2 (6)10 20 30 40 50三. 编程题8.17void fun(double x, double y, double *sum, double *div){*sum = x + y;*div = x - y;return;}8.18void fun(double x, double y, double z, double *max, double *min){*max = x;*min = x;if(*max < y) {*max = y;}if(*max < z) {*max = z;}if(*min > y) {*min = y;}if(*min > z) {*min = z;}return;}第九章一. 选择题9.1 D 9.2 A 9.3 A 9.4 C 9.5 C 9.6 A 9.7 B 9.8D 9.9 C 9.10 C9.11 C 9.12 D 9.13 D 9.14 A 9.15 A 9.16 A 9.17C 9.18 C二. 填空题9.19 9 09.20 69.21 129.22 39.23 27219.24 -850,2,09.25 k=p k9.26 (c=getchar()) c-'A'三. 编程题9.27#include#define N 81int main(){int counter[10] = {0};int iLoop = 0;char str[N];gets(str);while(str[iLoop]){if(str[iLoop] >= '0' && str[iLoop] <= '9') {counter[str[iLoop] - '0']++;}iLoop++;}for(iLoop=0; iLoop < 10; iLoop++){printf("%d - %d\n", iLoop, counter[iLoop]); }return 0;}9.28void fun(int array[], int arraysize, int start)int iLoop;if(start < arraysize-1){if(start <=0){start = 1;}for(iLoop = start; iLoop < arraysize; iLoop++){array[iLoop-1] = array[iLoop];}}for(iLoop = 0; iLoop < arraysize; iLoop++) {printf("No.%d = %d\n", iLoop, array[iLoop]); }}9.29int fun(int arry1[], int arry2[], int arrysize)int iLoop;int counter = 0;for(iLoop = 0; iLoop < arrysize; iLoop++) {if(arry1[iLoop] % 2){arry2[counter++] = arry1[iLoop];}}return counter;}9.30void fun(char array[], int arraysize) {int iLoop1;int iLoop2;char temp;/* 冒泡排序 */for(iLoop1 = 0; iLoop1 < arraysize - 1; iLoop1++){iLoop1; iLoop2++){if(array[iLoop2] < array[iLoop2 + 1]) {temp = array[iLoop2];array[iLoop2] = array[iLoop2 + 1];array[iLoop2 + 1] = temp;}}}}9.31#includevoid fun(int array[], int arraysize, int inertNumber){int iLoop;int iLoop2;if(array[0] < array[arraysize-1]){{if(array[iLoop] > inertNumber){for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--){array[iLoop2 + 1] = array[iLoop2];}array[iLoop] = inertNumber;break;}}if(iLoop >= arraysize){array[arraysize] = inertNumber;}}else{for(iLoop = 0; iLoop< arraysize; iLoop++) {if(array[iLoop] < inertNumber){for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--){array[iLoop2 + 1] = array[iLoop2];}array[iLoop] = inertNumber;break;}}if(iLoop >= arraysize){array[arraysize] = inertNumber;}}}int main(){int iLoop;int a[20] = {7,6,5,3,2,1};for(iLoop = 0; iLoop < 6; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 6, 0);for(iLoop = 0; iLoop < 7; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 7, 4);for(iLoop = 0; iLoop < 8; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");fun(a, 8, 8);for(iLoop = 0; iLoop < 9; iLoop++) {printf("%d ", a[iLoop]);}printf("\n");return 0;}9.32int fun(int number, int array[]) {int iLoop = 0;int iLoop2;int binLen;int midNumber;int div;int remain;midNumber = number;do{div = midNumber/2;remain = midNumber%2; midNumber = div;array[iLoop++] = remain;}while(midNumber);binLen = iLoop;for(iLoop2 = 0, iLoop = binLen - 1; iLoop2 < iLoop; iLoop2++, iLoop--){midNumber = array[iLoop2];array[iLoop2] = array[iLoop];array[iLoop] = midNumber;}return binLen;}9.33#include#include#define N 15void fun(int array[], int arraysize) {int x;int iLoop;int iLoop2;for(iLoop = 0; iLoop < arraysize; iLoop++) {iLoop2 = 0;x = rand()%20;do{if(x == array[iLoop2] && iLoop > 0){x = rand()%20;iLoop2 = 0;}iLoop2++;}while(iLoop2 < iLoop);array[iLoop] = x;}}int main(){int a[N];int iLoop;。
参考答案及解析第1章C语言的基础知识1.1 对C语言的初步认识(1)【答案】C)【解析】C语言中的非执行语句例如宏定义命令,在预编译之后替换到代码中,该命令本身也就不存在了,不会转换成二进制的机器指令。
由高级语言编写的程序称为“源程序”,把由二进制代码表示的程序称为“目标程序”。
C语言编写的源程序就是一ASCII的形式存放在文本文件中的。
C 源程序经过C编译程序编译之后生成一个后缀为.obj的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。
(2)【答案】B)【解析】算法是指为解决某个特定问题而采取的确定且有限的步骤。
在C语言中一个算法是用函数来实现的。
一个C语言源程序由许多函数组成,这些函数都是根据实际任务,确定具体的算法,由用户自己编写。
C语言源程序可以放在不同的文件中,同一个源程序中的函数也可放在不同的文件中,所以一个C语言程序可以实现多种算法。
(3)【答案】C)【解析】结构化程序由顺序结构、选择结构和循环结构3种基本结构组成。
已经证明,由3种基本结构组成的算法可以解决任何复杂的问题。
由3种基本结构所构成的算法称为结构化算法;由3种基本结构所构成的程序称为结构化程序。
(4)【答案】C)【解析】算法是指为解决某个特定问题而采取的确定且有限的步骤。
一个算法应该具有以下5个特征:①有穷性。
一个算法包含的操作步骤应该是有限的。
也就是说,在执行若干个操作步骤之后,算法将结束,而且每一步都在合理的时间内完成。
②确定性。
算法中的每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。
③可行性。
算法中指定的操作,都可以通过已经验证过可以实现的基本运算执行有限次后实现。
④有零个或多个输入。
在计算机上实现的算法是用来处理数据对象的,在大多数情况下这些对象需要通过输入来得到。
⑤有一个或多个输出。
算法的目的是为了求“解”,这些“解”只有通过输出才能得到。
(5)【答案】B)【解析】如果应用结构化程序设计方法设计程序,那么可采用自顶向下,逐步细化的设计方法把若干独立模块组装成所要求的程序。
(6)【答案】C)【解析】由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。
源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件把目标文件与C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。
(7)【答案】D)【解析】算法和程序不同,算法满足以下特性:算法有5个特性,即有穷性、确定性、可行性、有零个或多个输入以及有一个或多个输出。
算法的确定性是指算法中的每一个步骤都必须有明确定义,不允许有模棱两可的解释,也不允许有多义性,因此对于相同的输入必有相同的输出,同时可以事先估计算法的时间复杂度,对于有循环的算法,以循环体内的循环次数来估测时间复杂度。
(8)【答案】B)【解析】E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
描述算法的有流程图,盒图,伪代码,文字描述以及程序代码描述。
(9)【答案】D)【解析】结构化程序有三种基本结构循环结构、选择结构、顺序结构,描述算法常见的有文字描述,流程图,盒图,伪代码等。
N-S图为盒图,可以描述比较复杂的程序结构,而计算机不能直接处理C程序,只能处理二进制代码。
(10)【答案】B)【解析】模块化设计思想,就是把复杂的任务分成简单的子任务,用函数或者过程描述子任务,C语言中一个程序可以包括多个源文件,每个源文件可以有若干个函数,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成,不一定全要包括这三种结构,而算法不等于程序。
(11)【答案】C)【解析】每一个C语言的文件或函数都可以单独编译,但只有main函数的才可以执行。
(12)【答案】B)【解析】在选项A)中,main()函数后面的分号是错误的,C语言在函数名后面不能有分号。
在C语言中注释内容必须放在“/*”和“*/”之间,“/*”和“*/”必须成对出现,按语法规定在注释之间不可以再嵌套“/*”和“*/”。
在选项C)的程序段中注释语句之间有嵌套;所以选项C)不正确。
C语言用#include命令行来实现文件包含的功能。
#include命令行的形式为:#include “文件名”,所以在选项D)中include前面少了一个#符号,因而选项D)不正确。
(13)【答案】D)【解析】C语言是结构化程序设计语言,顺序结构、选择结构、循环结构是结构化程序设计的三种基本结构,研究证明任何程序都可以由这三种基本结构组成。
但是程序可以包含一种或者几种结构,不是必须包含全部三种结构。
自从提倡结构化设计以来,goto 就成了有争议的语句。
首先,由于goto 语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格。
其次,goto 语句经常带来错误或隐患。
它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句。
Goto语句的使用会使程序容易发生错误并且也不易阅读,所以应避免使用。
由三种基本结构构成的程序几乎能解决大部分问题。
(14)【答案】B)【解析】C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。
C语言注释是比较自由的,可以写在一行或者多行。
C语言规定每条语句和数据定义的最后必须有一个分号,分号是C语句的必要组成部分。
(15)【答案】B)【解析】本题主要考查的是C语言结构中的源程序书写格式这个知识点,在C语言中注释部分对程序的运行结果不产生任何影响,它可以出现在任意位置;C语言书写自由,一行内可以写多个语句,一个语句可以写在多行上;由于C语言编写的程序有很好的移植性,可以放在多个程序文件中。
(16)【答案】D)【解析】C语言中的注释可以出现在程序中的任何位置,但是不能夹在变量或者关键字之间;C语言的变量在函数开始位置进行定义,也可以在变量使用前位置定义;一个浮点数可以和一个整数相加,运算符两侧的运算类型也可以不一致;数值常量中不允许夹带空格。
(17)【答案】D)【解析】C语言规定,在字符“/*”和其后紧跟的第一个字符“*/”中间的部分是注释内容,且注释部分的内容不参与程序的编译和运行,因此,本题中程序语句“a=10;b=20;”没有执行。
(18)【答案】B)【解析】由C语言编写的程序,通过编译、链接转换成可以让机器识别的01二进制指令。
这些二进制指令命令机器计算,这些就是机器指令,而C语言的语句条数和机器指令的条数不是一对一的关系。
(19)【答案】C)【解析】sizeof为测试内存的运算符,()为算术运算符,&&为逻辑运算符。
而<>不是C语言的运算符,C语言中!=表示不等于。
(20)【答案】C)【解析】C语言语句的表示为分号,不加分号的表达式不能看成C语句。
(21)【答案】D)【解析】C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成。
由这三种基本结构组成的算法可以解决任何复杂的问题,反之则不一定,所有算法必须在有限步骤后结束。
1.3 标识符(1)【答案】B)【解析】合法的标识符要满足组成字符为a~z以及A~Z,数字字符0到9和下划线,其中数字不开头,不能是关键字。
选项B)中,&不属于组成字符,是错误的。
(2)【答案】A)【解析】本题考查常量定义。
数据常量可有10进制、8进制、16进制、指数法等,8进制数字为0-7,第一个字符为0,而不是o。
指数法表示时,指数部分须为整型,选项A)中数字后加入L是说明此变量为长整型,是正确的常量表示形式。
(3)【答案】A)【解析】在C语言中,合法标识符的命令规则是:标识符可以由字母、数字或下划线组成,并且第一个字符必须为字母或下划线。
在C语言的标识符中,大写字母和小写字母被认为是两个不同的字符。
选项A)是连字符,不在C语言规定的命名变量标识符的范围内。
(4)【答案】A)【解析】在C语言中,用户的标识符只能由字母或下划线开始。
一般强调文见其义的命名方法。
但是C语言中的保留字不能用作用户的标识符。
而选项C)和D)全部为保留字,选项B)中以数字开头,这些都不正确。
(5)【答案】A)【解析】C语言规定,变量的标识符只能由字母、数字或下划线3种字符组成,且首字符必须为字母或下划线。
在C语言中大写字母和小写字母被认为是两个不同的字符。
选项B)定义的变量标识符int_和选项D)定义的变量标识符_int与C语言的关键字int 是不同的,是正确的变量标识。
选项C)定义的变量标识符For与C语言中的关键字for是两个不同的标识符,而在选项A)包含有特殊字符$,因而其不符合C语言的变量命名规定。
(6)【答案】B)【解析】常量指在程序运行过程中,其值不能被改变的量。
常量分为整型常量(即整常数)、实型常量、字符型常量和字符串常量。
常量也可以按数据类型分为为数据常量和非数据常量。
变量是指在程序运行过程中,其值能被改变的量。
(7)【答案】B)【解析】在C语言中的用户标识符只能由字母,数字和下划母组成,并且第一个字符必须是字母或下划线,在选项A)中出现了非法的字符--。
(8)【答案】C)【解析】在C语言中没有定义逻辑类型,而是用0代表假,用非零代表真。
(9)【答案】B)【解析】选项B)中的1,234在两侧加双引号才是C程序的合法字符串常量。
(10)【答案】B)【解析】case是C语言中的一个关键字,不能用作用户标识符来使用,所以这段程序代码在编译时就会出错。
(11)【答案】C)【解析】本题考查标识符定义。
合法标识符的要求是由下划线、英文大小写字母和数字组成的字符串,且第一个字符必须是字母或下划线。
(12)【答案】C)【解析】在C语言程序中,用一个符号名来代表一个常量,称为符号常量。
注意:这个符号名必须在程序中进行特别的“指定”,并符合标识符的命名规则。
一般在程序中都是利用宏定义来定义符号常量的,在代码中可以利用undef来结束符号常量的定义,然后进行重新定义,符号常量的大小写并没有特别的规定,一般时候为了和变量区分利用大写。
(13)【答案】B)【解析】变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。
在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。
变量命名要符合标识符的规定,其中下划线是标识符的组成字符。
程序中所有变量都必须先定义后使用。