• 239.00 KB
  • 2022-04-22 11:47:54 发布

才智教育二级C语言《二级教程》课后习题答案.doc

  • 34页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'陪您进步伴您成长说明:1、原先的少部分题目有错,请用红色的部分替换掉;2、如果红色部分有文字“删除该行”,就直接删除该行;第一章C语言的基础知识第一节对C语言的初步认识习题1.下列叙述中错误的是BA)任何一个C程序都必须有且仅有一个main函数,C语言总是从main函数开始执行。B)C语言中的变量,可以先使用后定义。C)所有的C语言语句最后都必须有一个分号D)C程序书写格式自由,语句可以从任一列开始书写,一行内可以写多个语句。第二节熟悉VisualC++习题1.C语言源程序名的后缀是BA).exeB).cC).objD).cp2.下列叙述中错误的是DA)计算机不能直接执行用C语言编写的源程序B)C程序经C编译后,生成后缀为.obj的文件是一个二进制文件C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行3.用C语言编写的代码程序BA)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行第三节标识符习题1.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是BA)大写字母B)连接符C)数字字符D)下划线2.以下选项中不合法的标识符是CA)printB)FORC)&aD)_003.以下叙述中错误的是AA)用户所定义的标识符允许使用关键字B)用户所定义的标识符应尽量做到“见名知意”C)用户所定义的标识符必须以字母或下划线开头D)用户定义的标识符中,大、小写字母代表不同标识34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长4.可在C程序中用作用户标识符的一组标识符是AA)andB)DateC)HiD)case_2007y-m-dDr.TomBigl5.以下不合法的用户标识符是CA)j2_KEYB)DoubleC)4dD)_8_6.以下不能定义为用户标识符的是DA)MainB)_0C)_intD)sizeof7.下列选项中,不能用作标识符的是DA)_1234_B)_1_2C)int_2_D)2_int_8.以下4组用户定义标识符中,全部合法的一组是AA)_mainB)IfC)txtD)intenclude-maxREALk_2sinturbo3COM_001第四节数制转换习题1.十进制整数360的八进制为__________,十六进制为_____________。550168第五节整数和实数习题1.以下选项中正确的整型常量是CA)10110BB)0386C)0XffaD)x2a22.以下关于long、int和short类型数据占用内存大小的叙述中正确的是DA)均占4个字节B)根据数据的大小来决定所占内存的字节数C)由用户自己定义D)由C语言编译系统决定3.以下选项中不属于C语言的类型的是DA)signedshortintB)unsignedlongintC)unsignedintD)longshort4.以下选项中合法的实型常数是CA)5E2.0B)E-3C).2E0D)1.3E5.以下选项中,不能作为合法常量的是BA)1.234e04B)1.234e0.4C)1.234e+4D)1.234e06.以下选项中可作为C语言合法常量的是AA)-80.B)-080C)-8e1.0D)-80.0e7.以下符合C语言语法的实型常量是CA)1.2E0.5B)3.14.159EC).5E-3D)E158.以下不合法的数值常量是CA)011B)lelC)8.0E0.5D)0xabcd9.以下选项中,合法的一组C语言数值常量是BA)028B)12.C).17734长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长D)0x8A5e-3OXa234c1.510,000-0xf4.5e0Oabc3.e510.下列定义变量的语句错误的是DA)int_int;B)doubleint_;C)longFor;D)floatUS$;第六节算术表达式与赋值表达式习题1.表达式3.6-5/2+1.2+5%2的值是DA)4.3B)4.8C)3.3D)3.82.设有定义:floatx=123.4567;,则执行以下语句后输出的结果是_____。123.46printf("%fn",(int)(x*100+0.5)/100.0);3.设有定义: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)第七节自加自减运算符、逗号表达式习题1.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为______。32.设有定义:intk=0;,以下选项的4个表达式中与其他3个表达式的值不相同的是AA)k++B)k+=1C)++kD)k+13.有以下程序Bmain(){chara1="M",a2="m";printf("%cn",(a1,a2));}以下叙述中正确的是A)程序输出大写字母MB)程序输出小写字母mC)格式说明符不足,编译出错D)程序运行时产生出错信息4.有以下程序:Bmain(){inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf("a+b=%dn",a+b);/*输出计算结果*/}程序运行后的结果是A)a+b=30B)a+b=10C)30D)程序出错第八节字符习题34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长1.以下选项中不属于字符常量的是()。BA)"C"B)"C"C)"0"D)"72"2.已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是()。BA)kk>="A"&&kk<="Z"B)!(kk>="A"‖kk<="Z")C)(kk+32)>="a"&&(kk+32)<="z"D)kk>=48&&kk<913.已知字符"A"的ASCⅡ代码值是65,字符变量c1的值是"A",c2的值是"D"。执行语句printf("%d,%d",c1,c2-2);后,输出结果是()。CA)A,BB)A,68C)65,66D)65,684.以(25)以下合法的字符型常量是A)"x13"B)"18"C)"65"D)"n"5.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量c中大写字母转换为对应小写字母的语句是()。DA)c=c-"Z"+"z"B)c=c+32C)c=c-"A"+"a"D)c="A"+c-"a"第九节位运算习题1.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是AA)a^bB)a|bC)a&bD)a<<42.有以下程序#includemain(){inta=1,b=2,c=3,x;x=(a^b)&c;printf("%dn",x);}程序的运行结果是DA)0B)1C)2D)33.有以下程序main(){unsignedchara=2,b=4,c=5,d;  d=a|b;d&=c;printf("%dn",d);}程序运行后的输出结果是BA)3B)4C)5D)64.若变量已正确定义,则以下语句的输出结果是()。Bs=32;s^=32;printf("%d",s);A)-1B)0C)1D)325.设有以下语句inta=1,b=2,c;34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长c=a^(b<<2);执行后,c的值为DA)6B)7C)8D)9第二章数据输出与输入第一节第二节数据输出2节合在一起只有1个课件习题1.有以下程序段charch;intk;ch="a";k=12;printf("%c,%d,",ch,ch,k);printf("k=%dn",k);已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是DA)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=122.若变量已正确定义,有以下程序段删除该题inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf("%d,%d,%dn",a,b,c);其输出结果是BA)程序段有语法错B)3,5,3C)3,5,5D)3,5,73.有以下程序,其中%u表示按无符号整数输出main(){unsignedshortx=0xFFFF;/*x的初值为十六进制数*/printf("%un",x);}程序运行后的输出结果是BA)-1B)65535C)32767D)0XFFFF4.以下叙述中不正确的是AA)调用printf函数时,必须要有输出项34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长B)使用putchar函数时,必须在之前包含头文件stdio.hC)在C语言中,整数可以以十进制、八进制或十六进制的形式输出D)使用putchar函数可以不要输出项5.设有以下程序main(){intc=35;printf("%d",c&c);}程序运行后的输出结果是CA)0B)70C)35D)536.以下程序运行后的输出结果是______________。88main(){intx=0210;printf("%Xn",x);}第三节数据输入习题1.以下程序运行时若从键盘输入:102030<回车>。输出结果是____。A#includemain(){inti=0,j=0,k=0;scanf("%d%*d%d",&i,&j,&k);printf("%d,%d,%d",i,j,k);}A)10,30,0B)10,20,30C)0,0,0D)程序出错2.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>。输出结果是A#include"stdio.h"main(){chara,b;a=getchar();scanf("%d",&b);a=a-A+0;b=b*2;printf("%c%c",a,b);}A)程序段有语法错B)1BC)165D)1b3.有以下程序main(){intm=0256,n=256;34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长printf("%o%on",m,n);}程序运行后的输出结果是( )。A)02560400B)0256256C)256400D)4004004.有以下程序main(){inta=666,b=888;printf("%dn",a,b);}程序运行后的输出结果是( )。BA)错误信息B)666C)888D)666,8885.设有以下程序main(){intx=102,y=012;printf("%2d,%dn",x,y);}执行后输出结果是CA)10,01B)02,12C)102,10D)02,106.执行以下程序时输入1234567,则输出结果是________。#includemain(){inta=1,b;scanf("%2d%2d",&a,&b);printf("%d%dn",a,b);}第三章选择结构第一节关系运算与逻辑运算习题1.已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是BA)kk>="A"&&kk<="Z"B)!(kk>="A"‖kk<="Z")C)(kk+32)>="a"&&(kk+32)<="z"D)isalpha(kk)&&(kk<91)2.当变量c的值不为2、4、6时,值也为“真”的表达式是BA)(c==2)‖(c==4)‖(c==6)B)(c>=2&&c<=6)‖(c!=3)‖(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&&c<=6)&&(c%2!=1)3.以下选项中,当x为大于1的奇数时,值为0的表达式DA)x%2==1B)x/2C)x%2!=0D)x%2==04.以下关于逻辑运算符两侧运算对象的叙述中正确的是()。D34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长A)只能是整数0和1B)只能是整数0或非0整数C)可以是结构体类型的数据D)可以是任意合法的表达式5.设有定义:intk=1,m=2;floatf=7;,则以下选项中错误的表达式是CA)k=k>=kB)-k++C)k%int(f)D)k>=f>=m6.设有定义:inta=2,b=3,c=4;,则以下选项中值为0的表达式是AA)(!a==1)&&(!b==0)B)(!a==1)||(!b==0)C)a&&bD)a||(b+b)&&(c-a)第二节if语句习题1.若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf("%d,%d,%dn",a,b,c);其输出结果是BA)程序段有语法错B)3,5,3C)3,5,5D)3,5,72.当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是DA)k%2B)k%2==1C)(k%2)!=0D)!k%2==13.下列条件语句中,功能与其他语句不同的是DA)if(a)printf("%dn",x);elseprintf("%dn",y);B)if(a==0)printf("%dn",y);elseprintf("%dn",x);C)if(a!=0)printf("%dn",x);elseprintf("%dn",y);D)if(a==0)printf("%dn",x);elseprintf("%dn",y);4.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是CA)if(x++);B)if(x>y&y!=0);C)if(x>y)x--D)if(y<0){;}elsey++:elsex++;第三节嵌套的if语句习题1.在嵌套使用if语句时,C语言规定else总是CA)和之前与其具有相同缩进位置的if配对B)和之前与其最近的if配对C)和之前与其最近的且不带else的if配对D)和之前的第一个if配对2.有以下程序main(){inta=5,b=4,c=3,d=2;if(a>b>c)printf("%dn",d);elseif((c-1>=d)==1)printf("%dn",d+1);34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长elseprintf("%dn",d+2)}执行后输出结果是DA)2B)3C)4D)编译时有错,无结果3.以下程序的输出结果是Cmain(){inta=5,b=4,c=6,d;printf("%dn",d=a>b?(a>c?a:c):(b));}A)5B)4C)6D)不确定第四节条件表达式、switch语句、goto语句习题1.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是AA)if((a>b)&&(b>c))k=1;B)if((a>b)||(b>c))k=1;elsek=0;elsek=0;C)if(a<=b)k=0;D)if(a>b)k=1;elseif(b<=c)k=1;elseif(b>c)k=1;elsek=0;2.下列叙述中正确的是DA)beak语句只能用于switchB)在switch语句中必须使用defaultC)break语句必须与switch语句中的case配对使用D)在switch语句中,不一定使用break语句3.有以下程序段Bintk=0,a=1,b=2,c=3;k=ac?c:k;执行该程序段后,k的值是A)3B)2C)1D)04.有以下程序D#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%dn",a,b);}程序的运行结果是A)a=1,b=0B)a=2,b=2C)a=1,b=1D)a=2,b=15.以下叙述中正确的是CA)break语句只能用于switch语句题中B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环C)break语句只能用在循环体内和switch语句体内D)在循环体内使用break语句和continue语句的作用相同6.有以下程序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);}程序运行后的输出结果是A)235B)0235C)02356D)2345第四章循环结构第一节while语句习题1.有以下程序main(){inty=10;while(y--);printf("y=%dn",y);}程序执行后的输出结果是B34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长A)y=0B)y=-1 C)y=1 D)while构成无限循环2.有以下程序main(){intk=5;while(--k)printf("%d",k-=3);printf("n");}执行后的输出结果是AA)1B)2C)4D)死循环第二节do-while语句习题1.若变量已正确定义,有以下程序段i=0;doprintf("%d,",i);while(i++);printf("%dn",i)其输出结果是BA)0,0B)0,1C)1,1D)程序进入无限循环2.有以下程序段Dintn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;}while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是A)任意正奇数B)任意负偶数C)任意正偶数D)任意负奇数3.以下程序的功能是:将输入的正整数按逆序输出。例如,若输入135,则输出531,请填空。n/=10#includemain(){intn,s;printf("Enteranumber:");scanf("%d",&n);printf("Output:");do{s=n%10;printf("%d",s);_____;}while(n!=0);printf("n");}34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长第三节for语句习题1.有以下程序#includemain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}printf("%d,",--x);}}程序的运行结果是DA)7,4,2B)8,7,5,2C)9,7,6,4D)8,5,4,22.以下不构成无限循环的语句或者语句组是AA)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--;}第四节循环结构的嵌套习题1.有以下程序  main(){inti,n=0;for(i=2;i<5;i++){do{if(i%3)continue;n++;}while(!i);n++;}printf("n=%dn",n);34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长}程序执行后的输出结果是DA)n=5B)n=2C)n=3D)n=42.有以下程序main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%dn",x);}程序执行后的输出结果是BA)x=4B)x=8C)x=6D)x=123.下面程序的功能是输出以下形式的金字塔图案****************main(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf("");for(j=1;j<=_______;j++)printf("*");printf("n");}}在下划线处应填入的是BA)iB)2*i-1C)2*i+1D)i+2第五节循环结构的分析方法习题1.以下程序段中的变量已正确定义34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长for(i=0;j<4;i++,i++)for(k=1;k<3;k++);printf("*");程序段的输出结果是()DA)********B)****C)**D)*第五章函数第一节函数的定义、库函数习题1.在C语言中,函数返回值的类型最终取决于AA)函数定义时在函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主函数所传递的实参类型D)函数定义时形参的类型2.有以下函数intfun(char*s){char*t=s;while(*t++);return(t-s);  }该函数的功能是BA)比较两个字符的大小B)计算s所指字符串占用内存字节的个数C)计算s所指字符串的长度D)将s所指字符串复制到字符串t中3.程序中对fun函数有如下说明Cvoid*fun();此说明的含义是A)fun函数无返回值B)fun函数的返回值可以是任意的数据类型C)fun函数的返回值是无值型的指针类型D)指针fun指向一个函数,该函数无返回值第二节函数的调用与函数说明习题1.有以下程序#includeintf(intx){inty;if(x==0||x==1)return(3);34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf("%dn",z);}程序的运行结果是CA)0B)9C)6D)82.以下叙述中错误的是CA)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以在函数内部定义函数D)调用sin函数需要包含头文件math.h3.若程序中定义了以下函数doublemyadd(doublea,doubleb){return(a+b);}并将其放在调用语句之后,则在调用之前应进行函数声明,以下选项中错误的是AA)doublemyadd(doublea,b);B)doublemyadd(double,double);C)doublemyadd(doubleb,doublea);D)doublemyadd(doublex,doubley);第三节函数的数据传递习题1.有以下程序voidf(intv,intw){intt;t=v;v=w;w=t;}main(){intx=1,y=3,z=2;if(x>y)f(x,y);elseif(y>z)f(y,z);elsef(x,z);34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长printf("%d,%d,%dn",x,y,z);}执行后输出结果是CA)1,2,3B)3,1,2C)1,3,2D)2,3,12.以下程序的输出结果是_________。13#includevoidfun(intx){if(x/2>0)fun(x/2);printf("%d",x);}main(){fun(3);printf("n");}第六章指针第一节变量的地址和指针习题1.以下叙述中错误的是CA)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL2.以下定义语句中正确的是DA)inta=b=0;B)char‘A’=65+1,b="b";C)floata=1,*b=&a,*c=&b;D)doublea=0.0,b=1.1;3.设已有定义:floatx;则以下对指针变量p进行定义且赋初值的语句中正确的是D  A)float*p=1024;B)int*p=(floatx);C)floatp=&x;D)float*P=&x;第二节指针变量赋值及运算习题1.设有定义:intn=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是DA)p=1;B)*q=2;C)q=p;D)*p=5;2.有以下程序main(){34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%dn",c);}执行后的输出结果是CA)1B)2C)3D)43.设有定义:intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是AA)*p=*q;B)p=q;C)*p=&n1;D)p=*q;4.有以下程序#includemain(){intn,*p=NULL;*p=&n;  printf("Inputn:");scanf("%d",&p);printf("outputn:");printf("%dn",p);  }该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是AA)intn,*p=NULL;B)*p=&n;C)scanf("%d",&p)D)printf("%dn",p);第三节函数之间地址值的传递习题1.以下程序的功能是:利用指针指向3个整型变量,并通过指针运算找出3个数中的最大值,输出到屏幕上,请填空:*pmax=x;(或者max=x)main(){intx,y,z,max,*px,*py,*pz,*pmax;scanf("%d%d%d",&x,&y,&z);px=&x;py=&y;pz=&z;pmax=&max;__________________if(*pmax<*py)*pmax=*py;if(*pmax<*pz)*pmax=*pz;printf("max=%dn",max);}34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长2.voidf(inty,int*x){y=y+*x;*x=*x+y;}main(){intx=2,y=4;f(y,&x);printf("%d%dn",x,y);}执行后输出的结果是。843.以下程序的输出结果是__________。35#includevoidswap(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%dn",*p,*q);}第七章数组第一节一维数组习题1.有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为BA)55566.0B)566.0C)7777.0D)566777.02.有以下程序main(){charch[]="uvwxyz",*pc;pc=ch;printf("%cn",*(pc+5));}程序运行后的输出结果是AA)zB)0C)元素ch[5]地址D)字符y的地址3.有以下程序#includemain()34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长{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("n");}程序的运行结果是CA)1234B)2344C)4332D)1123第二节二维数组习题1.以下错误的定义语句是CA)intx[][3]={{0},{1},{1,2,3}};B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C)intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};D)intx[][3]={1,2,3,4};2.若有定义:inta[2][3];,以下选项中对a数组元素正确引用的是DA)a[2][!1]B)a[2][3]C)a[0][3]D)a[1>2][!1]3.若有定义语句:inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是BA)a[0][4]B)a[1][3]C)a[0][3]D)a[1][4]第三节数组应用举例习题1.有以下程序main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf("%d",t[2-i][i]);}程序执行后的输出结果是BA)753B)357C)369D)7512.有以下程序main(){inta[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+i;k<4;k++)if(a[i][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][j]);}程序运行后的输出结果是AA)1,2,5,7,B)8,7,3,1,C)4,7,5,2,D)1,6,2,1,第八章字符串第一节字符串与字符串数组习题1.以下关于字符串的叙述正确的是DA)C语言中有字符串类型的常量和变量B)两个字符串中的字符个数相同时才能进行字符串大小的比较C)可以用关系运算符对字符串的大小进行比较D)空串一定比空格打头的字符串小2.以下正确的字符串常量是DA)"\"B)"abc"C)OlympicGamesD)""3.设有如下程序段Achars[20]="Bejing",*p;p=s;则执行p=s;语句后,以下叙述正确的是A)可以用*p表示s[0]B)s数组中元素的个数和p所指字符串长度相等C)s和p都是指针变量D)数组s中的内容和指针变量p中的内容相等4.以下能正确定义字符串的语句是DA)charstr[]={"64"};B)charstr="x43";C)charstr=";D)charstr[]="";34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长第二节字符串的输入输出习题1.当用户要求输入的字符串中含有空格时,应使用的输入函数是BA)scanf()B)getchar()C)gets()D)getc()2.有以下程序#includevoidfun(char*a,char*b){while(*a=="*")a++;while(*b=*a){b++;a++;}}main(){char*s=”****a*b****”,t[80];fun(s,t);puts(t);}程序的运行结果是CA)*****a*bB)a*bC)a*b****D)ab第三节对字符串的操作习题1.若有定义:char*x="abcdefghi";,以下选项中正确运用了strcpy函数的是DA)chary[10];strcpy(y,x[4]);B)chary[10];strcpy(++y,&x[1]);C)chary[10],*s;strcpy(s=y+5,x);D)chary[10],*s;strcpy(s=y+1,x+1);2.有以下程序#includemain(){charp[20]={"a","b","c","d"},q[]="abc",r[]="abcde"strcat(p,r);strcpy(p+strlen(q),q);printf("%dn",strlen(p));}程序运行后的输出结果是A)9B)6C)11D)73.有以下程序  #includevoidf(charp[][10],intn)/*字符串从小到大排序*/{34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长chart[10];inti,j;for(i=0;i0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[i],t);}}main(){charp[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%dn",strlen(p[0]));}程序运行后的输出结果是DA)2 B)4C)6D)3第九章文件第一节文件的基础知识习题1.以下叙述中正确的是DA)C语言中文件是流式文件,因此只能顺序存取数据B)打开一个已存在的文件进行了写操作后,原有文件中的全部数据必定被覆盖C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据D)当对文件的读(写)操作完成之后,应关闭文件,否则可能导致数据丢失2.以下叙述中错误的是CA)C语言中对二进制文件的访问速度比文本文件快B)C语言中,随机文件以二进制代码形式存储数据C)语句FILEfp;定义了一个名为fp的文件指针D)C语言中的文本文件以ASCII码形式存储数据第二节文件的操作习题1.以下叙述中错误的是BA)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长D)fwrite函数用于以二进制形式输出数据到文件2.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是CA)一个文件指针,指向待读取的文件B)一个整型变量,代表待读取的数据的字节数C)一个内存块的首地址,代表读入数据存放的地址D)一个内存块的字节数3.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为BA)EOFB)非0值C)0D)NULL第三节文件例题习题1.有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)#includemain(){FILE*fp;inti,a[4]={1,2,3,4},b;fp=fopen("data.dat","wb");for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);fclose(fp);fp=fopen("data.dat","rb");fseek(fp,-2L*sizeof(int),SEEK_END);fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/fclose(fp);printf("%dn",b);}执行后输出结果是DA)2B)1C)4D)32.有以下程序  #include  main(){FILE*fp;intk,n,a[6]={1,2,3,4,5,6};  fp=fopen("d2.dat","w");  fprintf(fp,"%d%d%dn",a[0],a[1],a[2]);fprintf(fp,"%d%d%dn",a[3],a[4],a[5]);  fclose(fp);  fp=fopen("d2.dat","r");  fscanf(fp,"%d%d",&k,&n);printf("%d%dn",k,n);fclose(fp);}程序运行后的输出结果是DA)12B)14C)1234D)1234563.有以下程序34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长#includemain(){FILE*fp;inta[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,第十章对C语言的深入讨论第一节用户定义类型、编译预处理习题1.以下关于typedef的叙述错误的是AA)用typedef可以增加新类型B)typedef只是将已存在的类型用一个新的名字来代表C)用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D)用typedef为类型说明一个新名,通常可以增加程序的可读性2.以下叙述中错误的是DA)在程序中凡是以“#”开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#defineMAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的3.若程序中有宏定义行:#defineN100,则以下叙述中正确的是BA)宏定义行中定义了标识符N的值为整数100B)在编译程序对C源程序进行预处理时用100替换标识符NC)对C源程序进行编译时用100替换标识符ND)在运行时用100替换标识符N第二节标识符的作用域和存储分类习题1.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是AA)auto和registerB)extern和register34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长C)auto和staticD)static和register2.有以下程序: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("%dn",k);}执行后的输出结果是BA)5,5B)5,11C)11,11D)11,53.有以下程序inta=4;intf(intn){intt=0;staticinta=5;if(n%2){inta=6;t+=a++;}else{inta=7;t+=a++;}returnt+a++;}main(){ints=a,i=0;for(;i<2;i++)s+=f(i);printf("%dn",s);}程序运行后的输出结果是BA)24B)28C)32D)36第三节动态存储分配习题1.已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元_______________________。p=(double*)malloc(sizeof(double))2.以下程序中给指针p分配3个double型动态内存单元,请填空。3*sizeof(double)  #include  main()  {34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长double*p;p=(double*)calloc(_______________);p[0]=1.5;p[1]=2.5;p[2]=3.5;printf(“%f%f%fn”,p[0],p[1],p[2]);  }3.以下程序的输出结果是______________。40#includemain(){char*s1,*s2,m;s1=s2=(char*)malloc(sizeof(char));*s1=15;*s2=20;m=*s1+*s2;printf(“%dn”,m);}第四节main函数的参数与函数指针习题1.设有定义语句int(*f)(int);,则以下叙述正确的是BA)f是基类型为int的指针变量。B)f是指向函数的指针变量,该函数具有一个int类型的形参。C)f是指向int类型一维数组的指针变量。D)f是函数名,该函数的返回值是基类型为int类型的地址。2.有以下程序:intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;…}则以下函数调用语句错误的是CA)k=(*f)(a,b);B)k=add(a,b);C)k=*f(a,b);D)k=f(a,b);3.有以下程序floatf1(floatn){returnn*n;}floatf2(floatn){return2*n;}34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长main(){float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;p1=f1;p2=f2;y1=p2(p1(2.0));t=p1;p1=p2;p2=t;y2=p2(p1(2.0));printf("%3.0f,%3.0fn",y1,y2);}程序运行后的输出结果是AA)8,16B)8,8C)16,16D)4,8第五节函数的递归调用与对C语言的补充说明习题1.有以下程序:fun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%dn",fun(7));}执行后的输出结果是CA)7B)3C)2D)02.有以下程序intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%d",&x);x=fun(x);printf("%dn",x);}34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长程序执行时,给变量x输入10,程序的输出结果是AA)55B)54C)65D)453.有以下程序#includevoidfun(intn,int*p){intf1,f2;if(n==1||n==2)*p=1;else{fun(n-1,&f1);fun(n-2,&f2);*p=f1+f2;}}main(){ints;fun(3,&s);printf("%dn",s);}程序的运行结果是AA)2B)3C)4D)54.以下叙述中正确的是()。BA)C语言程序将从源程序中第一个函数开始执行。B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行。C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束。D)main可作为用户标识符,用以命名任意一个函数作为主函数。第十一章结构体与共用体第一节结构体习题1.有以下程序段typedefstructnode{intdata;structnode*next;}*NODE;NODEp;以下叙述正确的是CA)p是指向structnode结构变量的指针的指针。B)NODEp;语句出错。C)p是指向structnode结构变量的指针。34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长D)p是structnode结构变量。2.以下结构体类型说明和变量定义中正确的是AA)typedefstructB)structREC{intn;charc;}REC;{intn;charc;};RECt1,t2;RECt1,t2;C)typedefstructREC;D)struct{intn=0;charc="A";}t1,t2;{intn;charc;}RECt1,t2;3.有以下程序#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;}}程序的运行结果是DA)20,30,B)30,17,C)15,30,D)20,15,4.有以程序#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","p",95.0,92.0};f(c);printf("%s,%c,%2.0f,%2.0fn",c.name,c.sex,c.score[0],c.score[1]);}程序的运行结果是A34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长A)Qian,p,95,92B)Qian,m,85,90C)Zhao,f,95,92D)Zhao,m,85,90第二节共用体习题1.若有以下定义和语句uniondata{inti;charc;floatf;}x;inty;则以下语句正确的是BA)x=10.5B)x.c=101C)y=x;D)printf("%dn",x);2.设有以下定义uniondata{intd1;floatd2;}demo;则下面叙述中错误的是DA)变量demo与成员d2所占的内存字节数相同。B)变量demo中各成员的地址相同。C)变量demo和各成员的地址相同。D)若给demo.d1赋99后,demo.d2中的值是99.0。3.若有以下说明和定义uniondt{inta;charb;doublec;}data;以下叙述中错误的是CA)data的每个成员起始地址都相同。B)变量data所占内存字节数与成员c所占字节数相等。C)程序段:data.a=5;printf("%f",data.c);输出结果为5.000000。D)data可以作为函数的实参。第三节链表习题1.假定已建立以下链表结构,且指针p和q已指向如图所示的结点:则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是()DA)(*p).next=(*q).next;free(p);B)p=q->next;free(q);C)p=q;free(q);D)p->next=q->next;free(q);第十二章数组与指针34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长第一节一维数组与指针习题1.有以下程序#includevoidfun(char**p){++p;printf("%sn",*p);}main(){char*a[]={"Morning","Afternoon","Evening","Night"};fun(a);}程序的运行结果是AA)AfternoonB)fternoonC)MorningD)orning2.有以下程序删除该题#includevoidfun(char*a,char*b){while(*a=="*")a++;while(*b=*a){b++;a++;}}main(){char*s=”****a*b****”,t[80];fun(s,t);puts(t);}程序的运行结果是A)*****a*bB)a*bC)a*b****D)ab3.有以下程序#include#includevoidfun(char*s[],intn){char*t;inti,j;for(i=0;istrlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%sn",ss[0],ss[4]);}程序的运行结果是AA)xy,aaaaccB)aaaacc,xyC)bcc,aabccD)aabcc,bcc第二节二维数组与指针习题1.有以下定义和语句inta[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是CA)a[0][1]B)a[1][0]C)a[1][1]D)a[1][2]2.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序运行后的输出结果是DA)012B)123C)234D)3453.有以下程序  #include  main()删除该行voidf(charp[][10],intn)/*字符串从小到大排序*/{chart[10];inti,j;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[i],t);}}main(){charp[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长f(p,5);printf("%dn",strlen(p[0]));}程序运行后的输出结果是DA)2 B)4C)6D)3第三节数组与函数习题1.有以下程序intf(intb[][4]){inti,j,s=0;for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};printf("%dn",f(a));}执行后的输出结果是DA)12B)11C)18D)162.有以下程序#include#includetypedefstruct{charname[9];charsex;floatscore[2];}STU;STUf(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];returna;}main(){34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析 陪您进步伴您成长STUc={"Qian","f",95.0,92.0},d;d=f(c);printf("%s,%c,%2.0f,%2.0fn",d.name,d.sex,d.score[0],d.score[1]);}程序的运行结果是CA)Qian,f,95,92B)Qian,m,85,90C)Zhao,m,85,90D)Zhao,f,95,923.以下程序中,函数sumColumM的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。#defineM2#defineN4voidSumColumMin(inta[M][N],int*sum){inti,j,k,s=0;for(i=0;ia[j])k=j;s+=_______;a[k][i]}*sum]=s;}main(){intx[M][N]={3,2,5,1,4,1,8,3},s;SumColumMin(_______);x,&sprintf("%dn",s);}34长沙才智教育全国计算机等级考试二级C语言教程课后习题解析'