c语言冲刺资料(答案)

c语言冲刺资料(答案)

ID:13062266

大小:375.50 KB

页数:60页

时间:2018-07-20

上传者:U-4648
c语言冲刺资料(答案)_第1页
c语言冲刺资料(答案)_第2页
c语言冲刺资料(答案)_第3页
c语言冲刺资料(答案)_第4页
c语言冲刺资料(答案)_第5页
资源描述:

《c语言冲刺资料(答案)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

一C语言基础知识一、选择题1.以下说法正确的是___C___。A)C程序是从第一个定义的函数开始执行的B)在C程序中,要调用的函数必须在main()函数中定义C)C程序是从main()函数开始执行D)C程序中的main()函数必须放在程序的开始部分2.用C语言编写的代码程序___B___。A)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行3.构成C语言的基本单位是__A____。A)函数B)变量C)子程序D)语句4.下列选项中,是C语言提供的合法关键字的是__AC____。AswitchBcherCdefaultDCase5.以下4组用户定义标识符中,全部合法的一组是AA)_main B)If C)txtD)intenclude -max REAL k_2sin turbo 3COM _0016.以下叙述中错误的是__A____。A)用户所定义的标识符允许使用关键字B)用户所定义的标识符应尽量做到“见名知意”C)用户所定义的标识符应尽量做到“见名知意”D)用户定义的标识符中,大、小写字母代表不同标识7.可在C程序中用作用户标识符的一组标识符是__A____。A)and             B)Date         C)Hi              D)case_2007          y-m-d           Dr.Tom             Bigl8.下列选项中,正确的整形常量是___B___。A)34.1B)-80C)2,000D)1239.以下选项中正确的整型常量是CA)10110BB)0386C)0XffaD)x2a210.以下关于long、int和short类型数据占用内存大小的叙述中正确的是DA)均占4个字节       B)根据数据的大小来决定所占内存的字节数C)由用户自己定义      D)由C语言编译系统决定11.以下选项中不正确的实型常量是____A______。A)124B)1e4C)3.640E-1D)0.3512.以下不合法的数值常量是CA)011 B)lel C)8.0E0.5 D)0xabcd13.以下选项中,合法的一组C语言数值常量是无答案A)028              B)12.            C).177              D)0x8A5e-3             OXa23            4c1.5             10,000-0xf                4.5e0             Oabc           3.e514.以下选项中合法的C语言字符常量是______A____。A)‘t’B)“A”C)67D)A15.以下选项中不属于字符常量的是(B)。A)'C'B)"C"C)'0'D)'72'16.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量c 中大写字母转换为对应小写字母的语句是(D)。A)c=c-'Z'+'z'                  B)c=c+32C)c=c-'A'+'a'               D)c='A'+c-'a'17.已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'。执行语句printf("%d,%d",c1,c2-2);后,输出结果是(C)。A)A,B      B)A,68       C)65,66D)65,6818.表达式3.6-5/2+1.2+5%2的值是DA)4.3B)4.8C)3.3D)3.819.设有定义:floata=2,b=4,h=3;,以下C语言表达式与代数式×h计算结果不相符的是BA)(a+b)*h/2B)(1/2)*(a+b)*hC)(a+b)*h*1/2D)h/2*(a+b)20.以下选项中合法的C语言赋值语句是__D_____。A)a=b=34B)a=34,b=34C)--i;D)m=(int)(x+y);21.设有定义:intk=0;,以下选项的4个表达式中与其他3个表达式的值不相同的是AA)k++B)k+=1C)++kD)k+122.有以下程序main(){chara1='M',a2='m';printf("%c ",(a1,a2));}以下叙述中正确的是BA)程序输出大写字母MB)程序输出小写字母mC)格式说明符不足,编译出错D)程序运行时产生出错信息23.有以下程序:main(){inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf("a+b=%d ",a+b);/*输出计算结果*/}程序运行后的结果是BA)a+b=30B)a+b=10C)30D)程序出错24.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是AA)a^bB)a|bC)a&bD)a<<425.有以下程序#include  main(){  int   a=1,b=2,c=3,x;  x=(a^b)&c;  printf("%d ",x);}程序的运行结果是DA)0B)1C)2D)326.有以下程序 main(){unsigned char a=2,b=4,c=5,d;   d=a|b; d&=c; printf("%d ",d);}程序运行后的输出结果是BA)3 B)4C)5D)627.若变量已正确定义,则以下语句的输出结果是(B)。s=32;s^=32;printf("%d",s);A)-1B)0C)1D)3228.设有以下语句      inta=1,b=2,c;      c=a^(b<<2);执行后,c的值为DA)6 B)7 C)8 D)929.设变量已正确定义并赋值,以下正确的表达式是(C)A)x+n=jB)int(17%3)C)x=y+z+5,++yD)x=12.5%5二、填空题1.设有定义:floatx=123.4567;,则执行以下语句后输出的结果是_123.46____。printf("%f ",(int)(x*100+0.5)/100.0);2一个C语言编写的程序总是从___main____开始执行的。3通常一个字节包含__8__个二进制位,在一个字节中能存放的最大整数(十进制)是__127___,最小整数(十进制)的是___-128____,它的二进制是____10000000__________。4在C语言中,用关键字___int____定义整形变量,用关键字___float______定义单精度实型变量,用关键字_______double__________定义双精度实型变量。5.若a为整型变量,且有初始值15,经过a++运算后该表达式的值为____15_______,变量a的值为______16_____。6字符串”ab34\x79”的长度是____5_____。7若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值为__1___。8若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为___6__,b值为___4___,c值为____2___。9若有定义:charc=’10’;则变量c中包含的字符个数为___1___。10C语言中的标识符只能由3种字符组成,它们是__数字___、__字母____和___下划线_____。 第二章数据的输出输入选择结构一、选择题1.以下叙述中错误的是(C)A)C语句必须以分号结束。C)空语句出现在任何位置都不会影响程序运行。B)复合语句在语法上被看作一条语句。D)赋值表达式末尾加分号就构成赋值语句。2.以下为合法的C语言赋值语句的是(B)A)a=10B)x=y=20;C)i++D)m=2,n=53.以下程序的输出结果为(C)main(){intx=13,y=4;printf("%d ",x=x/y);}A)0B)1C)3D)出错4.以下程序段中,变量c的值为(A)inta,b,c;a=1;b=2;c=a/b;A)0B)1/2C)0.5D)15.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序编译时出错。main(){intr;floats;scanf("%d",&r);s=p*r*r;printf("s=%f ",s);}程序出错的原因是(D)A)注释语句书写位置错误。B)存放圆半径的变量r不应该定义为整型。C)输出语句中格式描述符非法。D)计算圆面积的赋值语句中使用了非法变量。6.设有如下程序段:intx=2002,y=2003;printf("%d ",(x,y));则以下叙述中正确的是(D)A)输出语句中格式说明符的个数少于输出项个数,不能正确输出。B)运行时产生出错信息。C)输出值为2002。D)输出值为2003。7.若有以下程序段(n所赋的是八进制数)intm=32767,n=032767printf("%d,%o ",m,n);执行后输出结果是(A)A)32767,32767B)32767,032767C)32767,77777D)32767,0777778.若有以下程序段intm=0xabc,n=0xabc;m-=n;printf("%X ",m);执行后输出结果是(C) A)0X0B)0x0C)0D)0XABC9.有以下程序main(){inti=10,j=1;printf("%d,%d ",i--,++j);}执行后输出结果是(B)A)9,2B)10,2C)9,1D)10,110.有以下程序main(){intm=0256,n=256;  printf("%o%o ",m,n);}程序运行后的输出结果是(C)A)02560400B)0256256C)256400D)40040011.有以下程序main(){intx=102,y=012;printf("%2d,%2d ",x,y);}执行后输出结果是(C)A)10,01B)02,12C)102,10D)02,1012.有以下程序main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f ",a,c,f,x);}程序运行后的输出结果是(B)A)16516.5B)1651.56.5C)1651.06.5D)2651.56.513.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf("%d,%d ",m,i);}执行后的输出结果是()A)8,6B)8,3C)6,4D)7,414.以下程序段的输出结果是(C)inta=1234;printf("%2d ",a);A)12B)34C)1234D)提示出错、无结果15.变量x,y,z均为int型变量,如要从键盘上对该3个变量输入值,则以下语句中正确的是(D)A)read(x,y,z);B)scanf("%d%d%d",x,y,z);C)scanf("%D%D%D",x,y,z);D)scanf("%d%d%d",&x,&y,&z); 16.有以下程序main(){  int  m,n,p;  scanf("m=%dn=%dp=%d",&m,&n,&p);  printf("%d%d%d ",m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是(A)A)m=123n=456p=789B)m=123  n=456  p=789C)m=123,n=456,p=789D)123  456  78917.在以下给出的表达式中,与if(E)中的(E)不等价的表达式是(C)A)(!E==0)       B)(E>0||E<0)  C)(E==0)       D)(E!=0)18.以下关于逻辑运算符两侧运算对象的叙述中正确的是(D)A)只能是整数0或1。B)只能是整数0或非0整数。C)不能是浮点数。D)可以是任意合法的表达式。19.已有定义:intx=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是(D)A)6B)0C)2D)120.以下程序的输出结果是(B)main(){inta=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d ",c);}A)1B)0C)非0的数D)-121.设有定义:inta=2,b=3,c=4;则以下选项中值为0的表达式是(A)A)(!a==1)&&(!b==0)B)(a-10&&x-y<10C)(x-y)<-10||!(y-x)>10D)(x-y)*(x-y)<10027.下列条件语句中,功能与其他语句不同的是()A)if(a)printf("%d ",x);elseprintf("%d ",y)。B)if(a==0)printf("%d ",y);elseprintf("%d ",x)。C)if(a!=0)printf("%d ",x);elseprintf("%d ",y)。D)if(a==0)printf("%d ",x);elseprintf("%d ",y)。28.以下选项中非法的表达式是(D)A)0<=x<100B)i=j==0C)(char)(65+3)D)x+1=x+129.有以下程序main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=amain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d ",a,b);}程序的运行结果是(D)A)a=1,b=0B)a=2,b=2C)a=1,b=1D)a=2,b=1B)二、填空题1.复合语句在语法上被认为是__一条语句_________,C语言的语句最后用_____;______结尾。2.以下程序运行后的输出结果是___88________。main(){intx=0210;printf("%x ",x);}3.以下程序段执行后的输出结果是_____9______。 inti=9;printf("%o ",i);4.以下程序运行后的输出结果是____252137_______。main(){inta,b,c;  a=25;  b=025;  c=0x25;  printf("%d  %d  %d ",a,b,c);}5.有以下语句段intn1=10,n2=20;printf("_n1=%d n2=%d______________",n1,n2);要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。n1=10n2=206.若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的输出语句______。7.以下程序运行后的输出结果是___________。main(){int  a,b,c  a=10;b=20;c=(a%b<1)||(a/b>1);  printf("%d%d%d ",a,b,c);}8.以下程序运行后的输出结果是___________。main(){inta=1,b=2,c=3;if(c=a)printf("%d ",c);elseprintf("%d ",b);}9.以下程序运行后的输出结果是___________。main(){  int  a=3,b=4,c=5,t=99;   if(b0?p/10:p%3));} 第三章循环结构一、选择题1.有以下程序main(){intn=10;while(n>7){n=n-1;printf("%d",n);}}以上程序段执行后的输出结果是(B)A)1098B)987C)10987D)98762.有以下程序main(){intk=5;while(--k)printf("%d",k-=3);printf(" ");}执行后的输出结果是(A)A)1B)2C)4D)死循环3.有以下程序main(){intx=0,y=5,z=3;while(z>0&&x<4){y=y-1;z--;x++;}printf("%d,%d,%d ",x,y,z);}程序执行后的输出结果是()A)3,2,0B)3,2,-1C)4,3,-1D)5,-2,-54.有以下程序main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;}printf("%d ",n); }程序运行后的输出结果是()A)0B)4C)6D)75.有以下程序main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d ",s);}若要使程序的输出值为2,则应该从键盘给n输入的值是(B)A)-1B)-3C)-5D)06.有以下程序段intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;}while(t!=n);printf("%d",s);从键盘输入-3,输出的结果是()A)0B)1C)-1D)-37.有以下程序段intx=3;do{printf("%3d",x-=2);}while(!x);输出的结果是(A)A)1B)30C)1-2D)死循环8.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是(B)A)for(i=1,p=1;i<=5;i++)p*=i;B)for(i=1;i<=5;i++){p=1;p*=i;}C)i=1;p=1;while(i<=5){p*=i;i++;}D)i=1;p=1;do{p*=i;i++;}while(i<=5);9.有以下程序main(){inti,s=0;for(i=1;i<10;i+=2)s+=i+1;printf("%d ",s);}程序执行后的输出结果是(C)A)自然数1~9的累加和B)自然数1~10的累加和C)自然数1~9中的奇数之和D)自然数1~10中的偶数之和10.要求以下程序的功能是计算:main(){intn;floats;s=1.0;for(n=10;n>1;n--)s=s+1/n;printf("%6.4f ",s) }程序运行后输出结果错误,导致错误结果的程序行是(D)A)s=1.0;B)for(n=10;n>1;n--)C)s=s+1/n;D)printf("%6.4f ",s)11.以下程序的输出结果是(A)main(){inta,b;a=18;b=11;while(a!=b){while(a>b)a-=b;while(b>a)b-=a;}printf("%3d%3d ",a,b);}A)11B)43C)44D)7712.以下关于break语句的说法正确的是(C)A)break语句只能出现在循环中。B)break语句可以出现在任何位置。C)break语句只能出现在switch结构和循环体中。D)break语句的功能是结束本轮循环,接着判断是否进行下一轮循环。13.以下程序运行后的输出结果是(C)main(){intx=15;while(x>10){x++;if(x%3){x++;break;}}printf("%d ",x);}A)15B)16C)17D)1814.以下程序的输出结果是(D)main(){intx=0;for(;x<10;x++)if(x%3==0)printf("%d",++x);}A)147B)258C)369D)1471015.有以下程序main(){    inti=0,s=0;      for(;;)      {  if(i==3||i==5)continue;          if(i==6)break;          i++;     s+=i;       }        printf("%d ",s);} 程序运行后的输出结果是(D)A)10B)13C)21D)程序进入死循环16.有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序运行后的输出结果是(无答案应为2345)A)235B)0235C)02356D)235617.以下不构成无限循环的语句或者语句组是()A)n=0;B)n=0;do{++n;}while(n<=0);while(1){n++;}C)n=10;D)for(n=0,i=1;;i++)n+=i;while(n);{n--;}18.若变量已正确定义,有以下程序段    i=0;doprintf("%d,",i);while(i++);printf("%d ",i)执行后其输出结果是(B)A)0,0B)0,1 C)1,1D)程序进入无限循环19.有以下程序#includemain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}printf("%d,",--x);}}程序的运行结果是(D)A)7,4,2B)8,7,5,2C)9,7,6,4D)8,5,4,220.有以下程序 #includemain(){inty=9;for(;y>0;y--)if(y%3==0) printf("%d",--y);}程序的运行结果是(C)A)741B)963 C)852D)87542121.有以下程序  #include  main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d ",m);}程序的运行结果是(B)A)0 B)1 C)2 D)322.有以下程序main(){inti,j; for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf(" ");}}程序运行后的输出结果是(A)A)  1*1=1 1*2=2 1*3=3         B)1*1=1 1*2=2 1*3=32*1=2 2*2=4                   2*2=4 2*3=63*1=3                          3*3=9C)1*1=1                        D)1*1=1    1*2=2  2*2=4                  2*1=2  2*2=4     1*3=3  2*3=6  3*3=9          3*1=3  3*2=6 3*3=923.有以下程序main(){intn=0;for(;n<4;){n++;if(n%3!=0)continue;}printf("%d ",n); }程序运行后的输出结果是(D)A)1B)2C)3D)424.下面程序的功能是输出以下右侧形式的金字塔图案:main()*{inti,j;***for(i=1;i<=4;i++)*****{for(j=1;j<=4-i;j++)printf("");*******for(j=1;j<=_______;j++)printf("*");printf(" ");}}在下划线处应填入的是(B)A)iB)2*i-1C)2*i+1D)i+225.以下程序的输出结果是(A)#includemain(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=21;a+=i;}printf("%d ",a);}A)21B)32C)33D)1126.以下程序中,while循环的循环次数是(D)main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}…}A)1B)10C)6D)死循环,不能确定次数二、填空题1.以下程序的输出结果是________。main(){intx=2;while(x--);printf("%d",x); }2.以下程序段的输出结果是________。inti=0,sum=1;do{sum+=i;i++;}while(i<5);printf("%d",sum);3.以下程序的功能是:将输入的正整数按逆序输出,例如:若输入135,则输出531。请填空。#includemain(){intn,s;printf("Enteranumber:");scanf("%d",&n);printf("Output:");do{s=n%10;printf("%d",s);;}while(n!=0);printf(" ");}4.有以下程序main(){intt=1,i=5;for(;i>=0;i--)t*=i;printf("%d ",t);}执行后输出的结果是___________。5.以下程序执行后输出的结果是___________。main(){ints,i;for(s=0,i=1;i<3;i++,s+=i);printf("%d ",s);}6.执行以下程序后,输出‘#’号的个数是___________。#includemain(){inti,j;for(i=1;i<5;i++)for(j=2;j<=i;j++)putchar('#');}7.当执行以下程序时,输入1234567890<回车>,则其中while循环体将执行___________次。#includemain(){charch;while((ch=getchar())=='0')printf("#");}8.以下程序的输出结果是________。#include   main(){    int n=12345,d;while(n!=0){ d=n%10; printf("%d",c);n/=10;}}9.有以下程序段,且变量已正确定义和赋值:for(s=1.0,k=1;k<=n;k++)      s=s+1.0/(k*(k+1));printf("s=%f ",s);请填空,使下面程序段的功能完全相同。s=1.0;k=1;while(____k<=n____){s=s+1.0/(k*(k+1));____k++____;}printf("s=%f ",s);10.以下程序的输出结果是__ACE______。#include    main(){   int  i;    for(i='a';i<'f';i++,i++)  printf("%c",i-'a'+'A');    printf(" ");}11.以下程序的输出结果是__120______。main(){inti=1,sum=1;while(i<=5){sum=sum*i;i++;}printf("sum=%d",sum);}12.以下程序运行后的输出结果是__29_______。main(){inta=0,i;for(i=1;i<4;i++){switch(i){case0:a++; case3:a+=2;case2:a+=3;default:a+=5;}}printf("%d ",a);}13.以下程序运行后的输出结果是__132_________。main(){inti,m=0,n=0,k=0;for(i=9;i<=11;i++)switch(i/10){case0:m++;n++;break;case10:n++;break;default:k++;n++;}printf("%d%d%d ",m,n,k);} 四、函数一、选择题(1)有以下程序#includeintf(intx);main(){intn=1,m;m=f(f(f(n)));printf("%d ",m);}intf(intx){returnx*2;}程序运行后的输出结果是DA)1B)2C)4D)8(2)有以下程序#includevoidfun(intx){if(x/2>1)fun(x/2);Printf("%d",x);}main(){fun(7);printf(" ");}程序运行后的输出结果是DA)137B)731C)73D)37(3)有以下程序#includeintfun(){staticintx=1;x+=1;returnx;}main(){inti,s=1;for(i=1;i<=s;i++)s+=fun();printf("%d ",s);}程序运行后的输出结果是BA)11B)21C)6D)120(4)以下关于return语句的叙述中正确的是BA)一个自定义函数中必须有一条return语句B)一个自定义函数中可以根据不同情况设置多条return语句C)定义成viod类型的函数中可以有带返回值的return语句D)没有return语句的自定义函数在执行结束时不能返回到调用处(5)有以下程序#includeintfun(){staticintx=1;x*=2;returnx; }main(){intI,s=1;for(i=1;i<=2;i++)s=fun();printf("%d ",s);}程序运行后的输出结果是A)0B)1C)4D)8(6)有以下程序#includevoidfun(intp){intd=2;p=d++;printf("%d",p);}main(){inta=1;fun(a);printf("%d ",a);}程序运行后的输出结果是A)32B)12C)21D)22(7)有以下程序#includeintf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf("%d ",s);}intf(intn){staticinta=1;n+=a++;returnn;}程序运行后的输出结果是A)7B)8C)9D)10(8)有以下程序#includeintf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf("%d ",d);}程序运行后的输出结果是BA)10B)9C)8D)7(9)有以下程序#includeintfun(intx,inty){if(x==y)return(x); elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d ",fun(2*a,fun(b,c)));}程序运行后的输出结果是BA)3B)6C)8D)12(10)下面的函数调用语句中func函数的实参个数是Afunc(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));A)3B)4C)5D)8(11)以下叙述中错误的是BA)用户定义的函数中可以没有return语句B)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C)用户定义的函数中若没有return语句,则应当定义函数为void类型D)函数的return语句中可以没有表达式(12)有以下程序#include#includeintfun(intn){int*p;p=(int*)malloc(sizeof(int));*p=n;return*p;}main(){inta;a=fun(10);printf("%d ",a+fun(10));}程序的运行结果是CA)0B)10C)20D)出错(13)有以下程序#includevoidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2)fun(c[i],c[i+1]);for(i=0;i<10;i++)printf("%d,",c[i]);printf(" ");}程序的运行结果是AA)1,2,3,4,5,6,7,8,9,0,B)2,1,4,3,6,5,8,7,0,9,C)0,9,8,7,6,5,4,3,2,1,D)0,1,2,3,4,5,6,7,8,9,(14)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是DA)函数的实参和其对应的形参共占同一存储单元 B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元(15)以下叙述中错误的是CA)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL(16)有以下程序#includeinta=1;intf(intc){staticinta=2;c=c+1;return(a++)+c;}main(){inti,k=0;for(i=0;i<2;i++){inta=3;k+=f(a);}k+=a;printf("%d ",k);}程序的运行结果是A)14B)15C)16D)17(17)在C语言中,函数返回值的类型最终取决于AA)函数定义时在函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型(18)有以下程序inta=4;intf(int n){int t=0; staticint a=5;if(n%2){int a=6; t+=a++;} else{int  a=7;t+=a++;} return t+a++;}main(){int s=a,i=0;for(;i<2;i++)  s+=f(i);printf("%d ",s);}程序运行后的输出结果是BA)24B)28C)32D)36(19)有以下程序fun(intx,inty){return(x+y);}main() {inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d ",sum);}执行后的输出结果是A)6B)7C)8D)9(20)有以下程序fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d ",k);}执行后的输出结果是A)5,5B)5,11C)11,11D)11,5(21)若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函数声明语句中正确的是DA)intfun(doublex,int*n);B)intfun(double,int);C)intfun(double*x,intn);D)intfun(double*,int*);(22)有以下程序intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;…}则以下函数调用语句错误的是AA)k=(*f)(a,b);B)k=add(a,b);C)k=*f(a,b);D)k=f(a,b);(23)已定义以下函数intfun(int  *p){ return  *p; }fun函数返回值是CA)不确定的值B)一个整数C)形参p中存放的值D)形参p的地址值(24)有以下程序intfun1(double a){return a*=a;}intfun2(double x,double y){double  a=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);}main(){double w;w=fun2(1.1,2.0);……} 程序执行后变量w中的值是A)5.21B)5C)5.0D)0.0(25)以下叙述中错误的是DA)C程序必须由一个或一个以上的函数组成B)函数调用可以作为一个独立的语句存在C)若函数有返回值,必须通过return语句返回D)函数形参的值也可以传回给对应的实参(26)设函数fun的定义形式为voidfun(charch,floatx){…}则以下对函数fun的调用语句中,正确的是DA)fun("abc",3.0);B)t=fun('D',16.5);C)fun('65',2.8);D)fun(32,32);(27)有以下程序int f1(int x,int y){return x>y?x:y;}int f2(int x,int y){return x>y?y:x;}main(){  int a=4,b=3,c=5,d=2,e,f,g;   e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));   g=a+b+c+d-e-f;   printf("%d,%d,%d ",e,f,g);}程序运行后的输出结果是A)4,3,7B)3,4,7C)5,2,7D)2,5,7二、填空题(1)有以下程序#includeinta=5;voidfun(intb){inta=10;a+=b;printf("%d",a);}main(){intc=20;fun(c);a+=c;printf("%d ",a);}程序运行后的输出结果是______________。(2)有以下程序#includefun(intx){if(x/2>0)fun(x/2);printf("%d",x);}main(){fun(6);printf(" ");}程序运行后的输出结果是_________136_____。 (3)请将以下程序中的函数声明语句补充完整。#includeint______________;main(){intx,y,(*p)();scanf("%d%d",&x,&y);p=max;printf("%d ",(*p)(x,y));}intmax(inta,intb){return(a>b?a:b);}(4)以下程序的输出结果是______________。#includeintfun(intx){staticintt=0;return(t+=x);}main(){ints,i;for(i=1;i<=5;i++)s=fun(i);printf("%d ",s);}(5)以下程序的运行结果是______________。intk=0;voidfun(intm){m+=k;k+=m;printf("m=%dk=%d",m,k++);}main(){inti=4;fun(i++);printf("i=%dk=%d ",i,k);}(6)以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:y1=(x+8)2-2(x+8)+6y2=sin2(x)-2sin(x)+6请填空。#include"math.h"doublefun(doublex){return(x*x-2*x+6);}main(){doublex,y1,y2;printf("Enterx:");scanf("%lf",&x);y1=fun(______________);y2=fun(______________);printf("y1=%lf,y2=%lf ",y1,y2);}(7)以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。请填空int isprime(int a){int i;     for(i=2;i<=a/2;i++)       if(a%i==0)______________;     ______________; }(8)有以下程序intsub(intn){return(n/10+n%10);}main(){intx,y;scanf("%d",&x);y=sub(sub(sub(x)));printf("%d ",y);} 若运行时输入:1234<回车>,程序的输出结果是______________。(9)以下程序运行后的输出结果是______________。voidswap(int x,inty){int t;t=x;x=y;y=t;printf("%d%d",x,y);}main(){  int a=3,b=4;   swap(a,b);printf("%d %d ",a,b);}(10)以下函数求x的y次方,请填空。doublefun(doublex,inty){inti;doublez=1.0;for(i=1;i<=y;i++)z=z*x;returnz;}(11)下列程序的输出结果是______________。#includeintt(intx,inty,intcp,intdp){cp=x*x+y*y;dp=x*x–y*y;}main(){inta=4,b=3,c=5,d=6;t(a,b,c,d);prinf("%d%d ",c,d);} 五、指针一、选择题(1)以下程序段完全正确的是CA)int*p;scanf("%d",&p);B)int*p;scanf("%d",p);C)intk,*p=&k;scanf("%d",p);D)intk,*p;*p=&k;scanf("%d",p);(2)下列定义数组的语句中,正确的是BA)intN=10;B)#defineN10intx[N];intx[N];C)intx[0..10];D)intx[];(3)若要定义一个具有5个元素的整型数组,以下错误的定义句是DA)inta[5]={0};B)intb[]={0,0,0,0,0};C)intc[2+3];D)inti=5,d[i];(4)下列选项中,能够正确定义数组的语句是DA)intnum[0..2008];B)intnum[];C)intN=2008;D)#defineN2008intnum[N];intnum[N](5)有以下程序#includevoidfun(char*c,intd){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);printf("%c,%c ",b,a);}程序运行后的输出结果是AA)b,B,b,AB)b,B,B,AC)a,B,B,aD)a,B,a,B(6)有以下程序#includemain(){inta[5]={1,2,3,4,5},b[5]={0,2,1,3,0},is=0for(i=0;i<5;i++)s=s+a[b[i]];printf("%d ",s);}程序运行后的输出结果是CA)6B)10C)11D)15(7)有以下程序#includemain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)For(j=i;j<=i;j++)t+=b[i][b[j][i]];Printf("%d ",t);}程序运行后的输出结果是 A)1B)3C)4D)9(8)有以下程序#includemain(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d ",m,n,*p,*q);}程序运行后的输出结果是BA)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2(9)下列函数的功能是Afun(char*a,char*b){while((*b=*a)!=''){a++;b++;}}A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有''(10)有以下程序#includevoidfun(int*a,int*b){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d ",*p,*q);}程序运行后的输出结果是BA)3,5,5,3B)3,5,3,5C)5,3,3,5D)5,3,5,3(11)有以下程序#includevoidf(int*p,int*q);main(){intm=1,n=2,*r=&m;f(r,&n);printf("%d,%d",m,n);}voidf(int*p,int*q){p=p+1;*q=*q+1;}程序运行后的输出结果是A)1,3B)2,3C)1,4D)1,2(12)若有定义语句:intm[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是CA)m[--i]B)m[2*2]C)m[m[0]]D)m[m[i]](13)有以下程序#includevoidfun(inta,intb) {intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2)fun(c[i],c[i+1]);for(i=0;i<10;i++)printf("%d,",c[i]);printf(" ");}程序的运行结果是A)1,2,3,4,5,6,7,8,9,0,B)2,1,4,3,6,5,8,7,0,9,C)0,9,8,7,6,5,4,3,2,1,D)0,1,2,3,4,5,6,7,8,9,(14)有以下程序#includevoidfun(inta[],intn){inti,t;for(i=0;i2][!1](17)有以下程序#includemain(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf("%d",c[i]);printf(" ");}程序的运行结果是A)1234B)2344C)4332D)1123 (18)若有定义语句:inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是BA)a[0][4]B)a[1][3]C)a[0][3]D)a[1][4](19)有以下程序#includeintfun(chars[]){intn=0;while(*s<='9'&&*s>='0')  {n=10*n+*s-'0';s++;}return(n);}main(){chars[10]={'6','1','*','4','*','9','*','0','*'};printf("%d ",fun(s));}程序运行的结果是A)9B)61490C)61D)5(20)有以下函数intfun(char*s){char*t=s;    while(*t++);    return(t-s); }该函数的功能是BA)比较两个字符串的大小B)计算s所指字符串占用内存字节的个数C)计算s所指字符串的长度D)将s所指字符串复制到字符串t中(21)设已有定义:floatx;,则以下对指针变量p进行定义且赋初值的语句中正确的是DA)float *p=1024;B)int *p=(float)x;C)float  p=&x;D)float*p=&x;(22)有以下程序#include  main(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);printf("outputn:");printf("%d ",p);}该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是AA)intn,*p=NULL;B)*p=&n;C)scanf("%d",&p)D)printf("%d ",p);(23)以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。voidf(intb[],intn,intflag){inti,j,t;for(i=0;ib[j]:b[i]a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/for(i=0;i<4;i++)printf("%d,",a[i][i]);}程序运行后的输出结果是AA)1,6,5,7,B)8,7,3,1,C)4,7,5,2,D)1,6,2,1,(26)有以下程序main(){int[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,k,t;for(i=0;i<3;i++)for(k=i+1;k<4;k++)if(a[i][i],则输出结果为AA)200B)204C)240D)246(29)若有说明语句:double *p,a;,则能通过scanf语句正确给输入项读入数据的程序段是DA)*p=&a;scanf("%lf",p);B)*p=&a;scanf("%f",p);C)p=&a;scanf("%lf",*p);D)p=&a;scanf("%lf",p);(30)有以下程序intfun(int x[],int n){staticint sum=0,i; for(i=0;imain(){inti,n[]={0,0,0,0,0};for(i=1;i<=4;i++){n[i]=n[i-1]*3+1;printf("%d",n[i]);}}程序运行后的输出结果是。(2)以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回。请填空。(设N已定义)intfun(intx[N]){inti,k=0;for(i=0;iint*f(int*p,int*q);main() {intm=1,n=2,*r=&m;r=f(r,&n);printf("%d ",*r);}int*f(int*p,int*q){return(*p>*q)?p:q;}程序运行后的输出结果是2。(4)以下fun函数的功能是在N行M列的整数二维数组中,选出一个最大值作为函数值返回,请填空。(设M,N已定义)intfun(inta[N][M]){inti,j,row=0,col=0;for(i=0;ia[row][col]){row=i;col=j;}return(a[row][col]);}(5)有以下程序#includemain(){intn[2],i,j;for(i=0;i<2;i++)n[i]=0;for(i=0;i<2;i++)for(j=0;j<2;j++)n[j]=n[i]+1;printf("%d ",n[1]);}程序运行后的输出结果是。(6)有以下程序#includemain(){inti,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=1;i<3;i++)for(j=I;j<3;j++)printtf("%d",a[i][j]);printf(" ");}程序运行后的输出结果是。(7)有以下程序#includemain(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};intb[3]={0},i;for(i=0;i<3;i++)b[i]=a[i][2]+a[2][i];for(i=0;i<3;i++)printf("%d",b[i]);printf(" ");}程序运行后的结果是10,14,18。(8)以下程序的输出结果是。#include voidswap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){inti=3,j=5,*p=&i,*q=&j;swap(p,q);printf("%d%d ",*p,*q);}(9)执行以下程序的输出结果是。#include  main(){int   i,n[4]={1};for(i=1;i<=3;i++){  n[i]=n[i-1]*2+1;  printf("%d",n[i]);}}(10)设有定义语句:inta[][3]={{0},{1},{2}};,则数组元素a[1][2]的值为。(11)以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。main(){intx[10],a[9],i;for(i=0;i<10;i++)scanf("%d",&x[i]);for(i=1;i<10;i++)a[i-1]=x[i]+x[i-1];for(i=0;i<9;i++)printf("%d",a[i]);printf(" ");}(12)以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上。请填空。main(){intx,y,z,max,*px,*py,*pz,*pmax;scanf("%d%d%d",&x,&y,&z);px=&x;py=&y;pz=&z;pmax=&max;*pmax=*px;if(*pmax<*py)*pmax=*py;if(*pmax<*pz)*pmax=*pz;printf("max=%d ",max);} 第六章文件、用户定义类型、编译预处理、标识符的作用域,动态存储分配一、选择题1、有以下程序#includeintfun(){staticintx=1;x+=1;returnx;}main(){inti,s=1;for(i=1;i<=s;i++)s+=fun();printf("%d ",s);}程序运行后的输出结果是BA)11B)21C)6D)1202、有以下程序#include#includemain(){int*a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b;printf("%d,%d,%d ",*a,*b,*c);}程序运行后的输出结果是AA)3,3,3B)2,2,3C)1,2,3D)1,1,33、有以下程序#includemain(){ints,t,A=10;doubleB=6;s=sizeof(A);t=sizeof(B);printf("%d,%d ",s,t);}在VC6平台上编译运行,程序运行后的输出结果是CA)2,4B)4,4C)4,8D)10,64、有以下程序#includeintfun(){staticintx=1;x*=2;returnx;}main(){intI,s=1;for(i=1;i<=2;i++)s=fun(); printf("%d ",s);}程序运行后的输出结果是CA)0B)1C)4D)85、以下程序#include#defineSUB(a)(a)-(a)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf("%d ",d);}程序运行后的结果是CA)0B)-12C)-20D)106、以下程序#includemain(){FILE*fp;charstr[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fp=fopen("myfile.dat","a+");rewind(fp,"gd",28);rewind(fp);fscanf(fp,"gs",str);puts(str);fclose(fp);}程序运行后的输出结果是错题A)abcB)28cC)abc28D)因类型不一致而出错7、有以下程序#includeintf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf("%d ",s);}intf(intn){staticinta=1;n+=a++;returnn;}程序运行后的输出结果是A)7B)8C)9D)108、有以下程序#include#definef(x)x*x*xmain() {inta=3,s,t;s=f(a+1);t=f((a+1));printf("%d,%d ",s,t);}程序运行后的输出结果是AA)10,64B)10,10C)64,10D)64,649、下列关于C语言文件的叙述中正确的是CA)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件10、有以下程序#include#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf("%4.1f ",S(a+b));}程序运行后的输出结果是DA)14.0B)31.5C)7.5D)程序有错无输出结果11、设有宏定义:#defineIsDIV(k,n)((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是DA)判断m是否能被5或者7整除B)判断m是否能被5和7整除C)判断m被5或者7整除是否余1D)判断m被5和7整除是否都余112、有以下程序#includemain(){FILE*f;f=fopen("filea.txt","w");fprintf(f,"abc");fclose(f);}若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt中的内容为CA)helloabcB)abcloC)abcD)abchello13、以下关于宏的叙述中正确的是DA)宏名必须用大写字母表示B)宏定义必须位于源程序中所有语句之前C)宏替换没有数据类型限制D)宏调用比函数调用耗费时间14、有以下程序#include#includeintfun(intn){int*p;p=(int*)malloc(sizeof(int));*p=n;return*p;}main(){inta; a=fun(10);printf("%d ",a+fun(10));}程序的运行结果是CA)0B)10C)20D)出错15、有以下程序#includemain(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是BA)ChinaB)ChinangC)ChinaBeijingD)BeijingChina16、以下叙述中错误的是DA)在程序中凡是以“#”开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#defineMAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的17、有以下程序#includemain(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp," ");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d ",n);}程序的运行结果是BA)12300B)123C)1D)32118、在C语言中,只有在使用时才占用内存单元的变量,其存储类型是AA)auto和registerB)extern和registerC)auto和staticD)static和register19、在一个C源程序文件中所定义的全局变量,其作用域为DA)所在文件的全部范围B)所在程序的全部范围C)所在函数的全部范围D)由具体定义位置和extern说明来决定范围20、有以下程序#include inta=1;intf(intc){staticinta=2;c=c+1;return(a++)+c;}main(){inti,k=0;for(i=0;i<2;i++){inta=3;k+=f(a);}k+=a;printf("%d ",k);}程序的运行结果是A)14B)15C)16D)1721、若程序中有宏定义行:#define N  100  则以下叙述中正确的是BA)宏定义行中定义了标识符N的值为整数100B)在编译程序对C源程序进行预处理时用100替换标识符NC)对C源程序进行编译时用100替换标识符ND)在运行时用100替换标识符N22、以下关于typedef的叙述错误的是AA)用typedef可以增加新类型B)typedef只是将已存在的类型用一个新的名字来代表C)用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D)用typedef为类型说明一个新名,通常可以增加程序的可读性23、读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是CA)一个文件指针,指向待读取的文件B)一个整型变量,代表待读取的数据的字节数C)一个内存块的首地址,代表读入数据存放的地址D)一个内存块的字节数24、有以下程序#include main(){FILE   *fp;int a[10]={1,2,3,0,0},i;fp=fopen("d2.dat","wb");fwrite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);fp=fopen("d2.dat","rb");fread(a,sizeof(int),10,fp);fclose(fp);for(i=0;i<10;i++)printf("%d,",a[i]);}程序的运行结果是DA)1,2,3,0,0,0,0,0,0,0,B)1,2,3,1,2,3,0,0,0,0,C)123,0,0,0,0,123,0,0,0,0,D)1,2,3,0,0,1,2,3,0,0, 25、有以下程序inta=4;intf(int n){int t=0; staticint a=5;if(n%2){int a=6; t+=a++;} else{int  a=7;t+=a++;} return t+a++;}main(){int s=a,i=0;for(;i<2;i++)  s+=f(i);printf("%d ",s);}程序运行后的输出结果是BA)24B)28C)32D)3626、有一个名为init.txt的文件,内容如下:#defineHDY(A,B)A/B#definePRINT(Y)printf("y=%d ",Y)有以下程序#include"init.txt"main(){inta=1,b=2,c=3,d=4,k;k=HDY(a+c,b+d);PRINT(k);}下面针对该程序的叙述正确的是DA)编译有错B)运行出错C)运行结果为y=0D)运行结果为y=627、有以下程序#includemain(){FILE*fp;intk,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d ",a[0],a[1],a[2]);fprintf(fp,"%d%d%d ",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d ",k,n);fclose(fp);}程序运行后的输出结果是DA)12B)14C)1234D)12345628、有以下程序#includemain(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen("d3.dat","w+b");fwrite(a,sizeof(int),6,fp); fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/fread(a,sizeof(int),3,fp);fclose(fp);for(i=0;i<6;i++)printf("%d,",a[i]);}程序运行后的输出结果是AA)4,5,6,4,5,6,B)1,2,3,4,5,6,C)4,5,6,1,2,3,D)6,5,4,3,2,1,29、有以下程序fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d ",k);}执行后的输出结果是A)5,5B)5,11C)11,11D)11,530、有以下程序#include#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d ",i1,i2);}程序的运行结果是A)1212B)117C)1111D)12731、以下叙述中正确的是DA)C语言中的文件是流式文件,因此只能顺序存取数据B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失32、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为BA)EOFB)非0值C)0D)NULL33、以下叙述中错误的是CA)C语言中对二进制文件的访问速度比文本文件快B)C语言中,随机文件以二进制代码形式存储数据C)语句FILEfp;定义了一个名为fp的文件指针D)C语言中的文本文件以ASCII码形式存储数据二、填空题 1、以下程序打开新文件f.txt,并调用字符输出函数将a数组中的字符写入其中,请填空。#includemain(){FILE*fp;chara[5]={'1','2','3','4','5'),i;fp=fopen("f.txt","w");for(i=0;i<5;i++)fputc(a[1],fp);fclose(fp);}2、有以下程序#includeinta=5;voidfun(intb){inta=10;a+=b;printf("%d",a);}main(){intc=20;fun(c);a+=c;printf("%d ",a);}程序运行后的输出结果是。3、以下程序用来判断指定文件是否能正常打开,请填空。#includemain(){FILE*fp;if(((fp=fopen("test.txt","r"))==NULL))printf("未能打开文件! ");elseprintf("文件打开成功! ");}4、以下程序的输出结果是。#includeintfun(intx){staticintt=0;return(t+=x);}main(){ints,i;for(i=1;i<=5;i++)s=fun(i);printf("%d ",s);}5、以下程序从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上,请填空。#includemain(){FILE*fp;charch;fp=fopen(“filea.dat”,”rb”);ch=fgetc(fp);while(!feof(fp)){putchar(ch);ch=fgetc(fp);} putchar(' ');fclose(fp);}6、以下程序的输出结果是。#include   #define     M      5#define     N      M+Mmain(){int   k;k=N*N*5;    printf("%d ",k);}7、以下程序的输出结果是40。#includemain(){char*s1,*s2,m;s1=s2=(char*)malloc(sizeof(char));*s1=15;*s2=20;m=*s1+*s2;printf("%d ",m);}8、设有定义:FILE*fw;,请将以下打开文件的语句补充完整,以便可以向文本文件readme.txt的最后续写内容。fw=fopen("readme.txt",ab);9、已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元p=(double*)malloc(sizeof(double));。10、以下程序运行后的输出结果是   。#define S(x)  4*x*x+1main(){  int i=6,j=8;  printf("%d ",S(i+j));}11、以下程序运行后的输出结果是 。fun(int a){intb=0;static intc=3;  b++;  c++;  return(a+b+c);}main(){  inti,a=5;  for(i=0;i<3;i++)printf("%d%d",i,fun(a));  printf(" ");} 第七章函数指针、函数的递归、结构体、共用体、链表一、选择题1、有以下程序#includemain(intargc,char*argv[]){inti=1,n=0;while(inext;p=s;while(p->next)p=p->next;p->next=q;q->next=NULL;该程序段实现的功能是(A)A)首结点成为尾结点B)尾结点成为首结点C)删除首结点D)删除尾结点16、有以下程序#includestructtt   {intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++)  {printf("%d,",p->x);  p=p->y;}}程序的运行结果是(D)A)20,30,B)30,17C)15,30,D)20,15,17、有以下程序#include  #include  typedefstruct{charname[9];char sex;float score[2]; } STU;STU  f(STU   a){STU   b={"Zhao",'m',85.0,90.0};    int i;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++) a.score[i]=b.score[i];return  a;}main(){STU   c={"Qian",'f',95.0,92.0},d;d=f(c);printf("%s,%c,%2.0f,%2.0f ",d.name,d.sex,d.score[0],d.score[1]);}程序的运行结果是(C)A)Qian,f,95,92B)Qian,m,85,90C)Zhao,m,85,90D)Zhao,f,95,9218、设有以下定义uniondata {  int d1;    float  d2;  }demo;则下面叙述中错误的是DA)变量demo与成员d2所占的内存字节数相同B)变量demo中各成员的地址相同C)变量demo和各成员的地址相同D)若给demo.d1赋99后,demo.d2中的值是99.019、以下结构体类型说明和变量定义中正确的是(A)A)typedefstructB)structREC;{intn;charc;}REC;{intn;charc;};RECt1,t2;RECt1,t2;C)typedefstructREC;D)struct{intn=0;charc='A';}t1,t2;{intn;charc;}REC;RECt1,t2;20、有以下程序#include#includetypedefstruct{charname[9];charsex;floatscore[2];}STU;voidf(STUa){STUb={"Zhao",'m',85.0,90.0};inti;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];}main(){STUc={"Qian",'f',95.0,92.0};f(c);printf("%s,%c,%2.0f,%2.0f ",c.name,c.sex,c.score[0],c.score[1]);}程序的运行结果是(A)A)Qian,f,95,92B)Qian,m,85,90C)Zhao,f,95,92D)Zhao,m,85,9021、设有定义语句int(*f)(int);,则以下叙述正确的是(B)A)f是基类型为int的指针变量B)f是指向函数的指针变量,该函数具有一个int类型的形参C)f是指向int类型一维数组的指针变量D)f是函数名,该函数的返回值是基类型为int类型的地址22、假定已建立以下链表结构,且指针p和q已指向如图所示的结点:headacbdatanext↑q↑p则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是(D)A)(*p).next=(*q).next;free(p);B)p=q->next;free(q);C)p=q;free(q);D)p->next=q->next;free(q);23、设有以下函数voidfun(intn,char*s){……}则下面对函数指针的定义和赋值均是正确的是(B)A)void(*pf)();pf=fun;B)void*pf();pf=fun;C)void*pf();*pf=fun;D)void(*pf)(int,char);pf=&fun;24、下面结构体的定义语句中,错误的是(B) A)structord{intx;inty;intz;};structorda;B)structord{intx;inty;intz;}structorda;C)structord{intx;inty;intz;}a;D)struct{intx;inty;intz;}a;25、若有定义int(*pt)[3];,则下列说法正确的是(B)A)定义了基类型为int的三个指针变量B)定义了基类型为int的具有三个元素的指针数组pt。C)定义了一个名为*pt、具有三个元素的整型数组D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组26、设有定义structcomplex{intreal,unreal;}datal={1,8},data2;则以下赋值语句中的错误的是BA)data2=data1;B)data2=(2,6);C)data2.real1=data1.real;D)data2.real=data1.unreal;27、若有以下语句typedefstructS{intg;charh;}T;以下叙述中正确的是(B)A)可用S定义结构体变量B)可用T定义结构体变量C)S是struct类型的变量D)T是structS类型的变量28、有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向此链表中3个连续结点。struct node{intdata; structnode *next;}*p,*q,*r;datanextdatanextdatanextPqr现要将q所指结点从链表中删除,同时保持链表的连续,以下不能完成指定操作的语句是(D)A)p->next=q->next;B)p->next=p->next->next;C)p->next=r;D)p=q->next;29、现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中连续的三个结点。structnode{char  data; structnode   *next;}*p,*q,*r;datanextdatanext↑r↑q↑pdatanext…………ABC现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是(D)A)q->next=r->next;p->next=r;r->next=q;B)p->next=r;q->next=r->next;r->next=q;C)q->next=r->next;r->next=q;p->next=r;D)r->next=q;p->next=r;q->next=r->next;二、填空题1、以下程序的输出结果是【1】efgh。 #include#includechar*fun(char  *t){char     *p=t;    return(p+strlen(t)/2);}main(){char  *str="abcdefgh";    str=fun(str);    puts(str);}2、以下程序的输出结果是【2】10。intfun(int*x,intn){if(n==0)returnx[0];elsereturnx[0]+fun(x+1,n-1);}main(){inta[]={1,2,3,4,5,6,7};printf("%d ",fun(a,3));}3、设有说明structDATE{intyear;intmonth;intday;};请写出一条定义语句,该语句定义d为上述结构体类型变量,并同时为其成员year、month、day依次赋初值2006、10、1:【3】。4、下面程序的运行结果是:【4】。#includeintf(inta[],intn){if(n>1)returna[0]+f(a+1,n-1);elsereturna[0];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},s;s=f(aa+2,4);printf("%d ",s);}5、函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空#include    struct node{int  data;struct node   *next;};intmin(struct node*first)/*指针first为链表头指针*/{struct node  *p;  int  m;p=first->next;  m=p->data;p=p->next;for(;p!=NULL;p=【5】p->next)if(p->datadata;return  m;} 6、以下程序的输出结果是【6】。#includevoidfun(intx){if(x/2>0)fun(x/2);printf("%d",x);}main(){fun(3);printf(" ");}7、以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空。#includestructnode{intdata;structnode*next;};typedefstructnodeNODETYPE;main(){NODETYPEa,b,c,*h,*p;a.data=10;b.data=20;c.data=30;h=&a;a.next=&b;b.next=&c;c.next='';p=h;while(p){printf("%d,",p->data);【7】p=p->next;}printf(" ");}8、设有定义:structperson{intID;charname[12];}p;请将scanf("%d",【8】);语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。9、以下程序运行后的输出结果是  【9】13431。struct NODE{int k;  structNODE *link;};main(){struct NODE m[5],*p=m,*q=m+4;int i=0;while(p!=q){p->k=++i;  p++;q->k=i++;  q--;}q->k=i;for(i=0;i<5;i++)printf("%d",m[i].k);printf(" ");}10、以下程序中函数huiwen的功能是检查一个字符串是否是回文。当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。#include  char *huiwen(char *str){char*p1,*p2;   int i,t=0;p1=str; p2= 【10】;  for(i=0;i<=strlen(str)/2;i++)if(*p1++!=*p2--){ t=1;break; }if(【11】) return("yes!");else   return("no!");}main(){char str[50];printf("Input:"); scanf("%s",str);printf("%s",  【12】);}11、以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为:Hello!,c中的字符为e,则函数返回字符串:ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回NULL。请填空。char*fun(char *str,char c){ int n=0; char *p=str;   if(p!=NULL)         while(p[n]!=c&&p[n]!='')n++;    if(p[n]=='') returnNULL;    return(【13】); }12、以下程序运行后的输出结果是【14】。#includechar*ss(char*s){char*p,t;p=s+1;t=*s;while(*p){*(p-1)=*p;p++;}*(p-1)=t;returns;}main(){char*p,str[10]="abcdefgh";p=ss(str);printf("%s ",p);} 第八章数组与指针,数组与函数的综合题目一、选择题1、有以下程序main(){char s[]="159",*p;  p=s;  printf("%c",*p++);printf("%c",*p++);}程序运行后的输出结果是(A)A)15B)16C)12D)592、有以下程序main(){  int a[]={1,2,3,4,5,6,7,8,9,0},*p;   for(p=a;pvoidfun(char*s){while(*s){if(*s%2==0)printf("%c",*s);s++;}}main(){chara[]={"good"};fun(a);printf(" ");}注意:字母a的ASCII码值为97,程序运行后的输出结果是(A)A)dB)goC)godD)good12、若有定义:intw[3][5];,则以下不能正确表示该数组元素的表达式是(D)A)*(*w+3)B)*(w+1)[4]C)*(*(w+1))D)*(&w[0][0]+1)13、有以下程序#define N 20fun(int a[],int n,intm) {  inti,j;   for(i=m;i>=n;i--)a[i+1]=a[i];}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};  fun(a,2,9);  for(i=0;i<5;i++)printf("%d",a[i]);}程序运行后的输出结果是(C)A)10234B)12344C)12334D)1223414、有以下程序voidchange(intk[]){k[0]=k[5];}main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4){change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf(" ");}程序运行后输出的结果是(A)A)678910B)13579C)12345D)6234515、有以下程序#include#includemain(){charstr[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));printf("%s ",p);}程序运行后的输出结果是(C)A)9,One*WorldB)9,One*Dream!C)10,One*Dream!D)10,One*World16、有以下程序#includemain(){char*a[]={"abcd","ef","gh","ijk"};inti;for(i=0;i<4;i++)printf("%c",*a[i]);}程序运行后的输出结果是(D)A)aegiB)dfhkC)abcdD)abcdefghijk17、有以下程序#includeintb=2;intfun(int*k){b=*k+b;return(b);}main(){inta[10]={1,2,3,4,5,6,7,8},i;for(i=2;i<4;i++){b=fun(&a[i])+b;printf("%d",b);}printf(" ");} 程序运行后的输出结果是(C)A)1012B)810C)1028D)101618、有以下程序#includevoidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2)fun(c[i],c[i+1]);for(i=0;i<10;i++)printf("%d,",c[i]);printf(" ");}程序的运行结果是(A)A)1,2,3,4,5,6,7,8,9,0,B)2,1,4,3,6,5,8,7,0,9,C)0,9,8,7,6,5,4,3,2,1,D)0,1,2,3,4,5,6,7,8,9,19、有以下程序#includeintfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;im)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};printf("%d ",fun(a,4,0));}程序的运行结果是(C)A)4B)34C)31D)3220、有以下程序#includevoidfun(int*s,intnl,intn2){inti,j,t;i=n1;j=n2;while(ivoidfun(char **p){++p;   printf("%s ",*p);}main(){char *a[]={"Morning","Afternoon","Evening","Night"};fun(a);}程序的运行结果是(A)A)AfternoonB)fternoonC)MorningD)orning22、若有定义语句:inta[2][3],*p[3];,则以下语句中正确的是(A)A)p=a;B)p[0]=a;C)p[0]=&a[1][2];D)p[1]=&a;23、有定义语句:int*p[4];以下选项中与此语句等价的是(C)A)intp[4];B)int**p;C)int*(p[4]);D)int(*p)[4];24、有以下程序#includevoidf(int*p);main(){inta[5]={1,2,3,4,5},*r=a;f(r);printf("%d ",*t);}voidf(int*p){p=p+3;printf("%d,",*p);}程序运行后的输出结果是(D)A)1,4B)4,4C)3,1D)4,125、有以下程序#includeintfun(chars[]){intn=0;while(*s<='9'&&*s>='0')  {n=10*n+*s-'0';s++;}return(n);}main(){chars[10]={'6','1','*','4','*','9','*','0','*'};printf("%d ",fun(s));}程序运行的结果是(C)A)9B)61490C)61D)526、有以下程序#include#includevoidfun(chars[][10],intn){chart;inti,j;for(i=0;is[j][0]){t=a[i][0];s[i][0]=s[j][0];s[j][0]=t;} }main(){charss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s ",ss[0],ss[4]);}程序的运行结果是(D)A)xy,aaaaccB)aaaacc,xyC)xcc,aabccD)acc,xabcc27、有以下程序#includevoidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;ivoidf(char*p[],intn){char*t;inti,j;for(i=0;i0){t=p[i];p[i]=p[j];p[j]=t;} }main(){char*p[5]={"abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d ",strlen(p[1]));}程序运行后的输出结果是(D)A)2B)3C)6D)430、有以下程序voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf("%d ",a[2]);}程序运行后的输出结果是(A)A)6B)7C)5D)8二、填空题1、以下程序的输出结果是【1】3。#include#defineN5intfun(int*s,inta,intn){intj;*s=a;j=n;while(a!=s[j])j--;returnj;}main(){ints[N+1];intk;for(k=1;k<=N;k++)s[k]=k+1;printf("%d ",fun(s,4,N));}2、有以下程序#includemain(){int[]={1,2,3,4,5,6},*k[3],i=0;while(i<3){k[i]=&a[2*i];printf("%d",*k[i]);i++;}}程序运行后的输出结果是【2】135。 3、以下程序的功能是:借助指针变量找出数据元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。#includemain(){inta[10],*p,*s;for(p=a;p-a<10;p++)scanf("%d",p);for(p=a,s=a;p-a<10;p++)if(*p>*s)s=p;printf("max=%d ",【3】*s;);}4、以下程序的输出结果是【4】。#includemain(){inta[5]={2,4,6,8,10},*p;p=a;p++;printf("%d",*p);}5、以下程序的定义语句中,x[1]的初值是【5】,程序运行后输出的内容是【6】。#includemain(){intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;for(i=0;i<4;i++){p[i]=&x[2*i+1];printf("%d",p[i][0]);}printf(" ");}6、有以下程序,程序执行后,输出结果是【7】。#includevoidfun(int*a){a[0]=a[1];}main(){inta[10]={10,9,8,7,6,5,4,3,2,1},i;for(i=2;i>=0;i--)fun(&a[i]);for(i=0;i<10;i++)printf("%d",a[i]);printf(" ");}7、以下程序运行后的输出结果是【8】。intf(inta[],intn){if(n>=1)returnf(a,n-1)+a[n-1];elsereturn0;}main(){intaa[5]={1,2,3,4,5},s;s=f(aa,5);printf("%d ",s);}8、有以下程序,程序执行后,输出结果是【9】。#includevoidfun(int*a) {a[0]=a[1];}main(){inta[10]={10,9,8,7,6,5,4,3,2,1},i;for(i=2;i>=0;i--)fun(&a[i]);for(i=0;i<10;i++)printf("%d",a[i]);printf(" ");}9、以下程序运行后的输出结果是 【10】。#includevoidfun(char *s,intp,intk){inti;for(i=p;i#includevoidstrcpy2(char*s,char*t){char*p=t;while(*s++=*t++);s=【11】;while(【12】=*p++);}main(){charstr1[100]="abcd",str2[]="efgh";strcpy2(str1,str2);printf("%s ",str1);}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭