• 317.50 KB
  • 2022-04-22 11:17:54 发布

全国计算机等级考试二级教程(高教版)习题(有答案).doc

  • 93页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案(教育部考试中心)高等教育出版社出版(第一章、第二章、第三章)第一章程序设计基本概念1.3结构化程序由_____、_____、_____三种基本结构组成。答案:顺序、选择、循环二、填空题2.16函数体由符号____开始,用符号____结束。函数体的前面是____部分,其后是____部分。答案:{、}、定义、执行第三章、顺序结构一、选择题3.13.2以下选项中不是C语句的是A){inti;i++;printf("%d\n",i);}B);C)a=5,c=10D){;}答案:C分析:语句必须以分号结尾。 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析选项A是一个复合语句,复合语句是用{}括号多条语句。选项B是一个空语句,只有一个分号。选项C不是语句,因为没有以分号结尾。3.6若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是A)102233B)10.0,22.0,33.0C)10.022.033.0D)102233scanf("%f%f%f",&a,&b,&c);答案:B分析:使用scanf输入整数,输入的每个整数中间以空格、回车、tab作分隔,输入整数时要看scanf的格式控制符,如果格式控制符中除空格以外有其它字符要原样输入。选项B格式不正确,因为scanf的格式控制符为"%f%f%f"并没有逗号,而输入10.0,22.0,33.0是不对的。3.7若变量以正确定义,要将a和b中的数进行交换,下面不正确的语句组是A)a=a+b,b=a-b,a=a-b;B)t=a,a=b,b=t;C)a=t;t=b;b=a;D)t=b;b=a;a=t;答案:C 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析分析:可以假设a和b的值分别为3、5通过执行A、B、D中的语句发现都可以实现a和b的值交换。选项C不能实现a、b值交换。3.83.93.103.11当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是A)a=98,b=765,c=4321B)a=10,b=432,c=8765C)a=98,b=765.000000,c=4321.000000D)a=98,b=765,c=4321.0main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c);}答案:C分析:该题目考察对scanf格式控制符宽度的掌握。在scanf函数格式控制符中间加一个整数用来表示匹配数据的宽度。 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析scanf("%2d%3f%4f",&a,&b,&c);匹配输入数据2位赋值给a,匹配输入数据3位赋值给b,匹配输入数据4位赋值给c,本题目输入9876543210然后回车,即将98赋值给a,765赋值给b,4321赋值给c,使用printf("\na=%d,b=%f,c=%f\n",a,b,c);输出a、b、c的值,a以整型输出,b和c以小数形式输出,即输出:98,765.000000,4321.000000选项C正确。scanf在输入多个数据是以回车、空格、tab作为分隔符,而当在格式控制符中间使用宽度时会依次配置输入数据的宽度,如果从输入数据中能够匹配到指定宽度的数据则scanf就对变量进行赋值,但是如果匹配不到则还是停留在输入状态让用户输入,例如:输入:123回车这时scanf先匹配两位数据12赋值给a,现在只剩下一位3赋值给b这时再输入4回车,将4赋值给c例如:输入:123456回车将12赋值给a将345赋值给b将6赋值给c大家多多练习体会一下格式控制符宽度的使用。3.12以下程序的输出结果是A)a=%2,b=%5B)a=2,b=5C)a=%%d,b=%%dD)a=%d,b=%d 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析main(){inta=2,b=5;printf("a=%%d,b=%%d\n",a,b);}答案:D分析:本题目考察输出%的问题。格式控制符以%开头,如果要输出%符号则必须使用两个%号。printf("a=%%d,b=%%d\n",a,b);该语句输出:a=%d,b=%d,并没有输出a和b的值,可见当两个%符号一起使用时则输出%,而格式控制符不起作用。3.133.14以下程序段的输出是A)*496*B)*496*C)*000496*D)输出格式符不合法intx=496;printf("*%-06d*\n",x);答案:A分析:考察对printf格式控制符中宽度和对齐的用法printf("*%-06d*\n",x);表示输出x的值,总共输出6位,并且左对齐,如果x的位数比6小则在右边补足空格,输出:*496*也可以写为:printf("*%-6d*\n",x);输出:*496*如果:printf("*%06d*\n",x);则输出:*000496*如果:printf("*%6d*\n",x);则输出:*496* 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析3.15以下程序段的输出是A)|3.1415|B)|3.0|C)|3|D)|3.|floata=3.1415;printf("|%6.0f|\n",a);答案:C分析:考察%f中间加整数1.整数2的形式整数1表示总位数,整数2表示小数位,如果总位数比整数1小,则在左边补空格。输出:|3|(注意:3前边有5个空格,因为3.1415不输出小数位只能输出一位3,%f中间的整数1部分是6,所以在3前边补5个空格)如果改为:printf("|%-6.0f|\n",a);则输出:|3|(加-符号左对齐显示)3.16以下程序段的输出是A)|2345.67800|B)|12345.6780|C)|12345.67800|D)|12345.678|printf("|%10.5f|\n",12345.678);答案:C分析:%10.5f表示输出5位小数位,不够小数位的补0,总位数是10,那么12345.678以%10.5f形式输出为:|12345.67800|3.17以下程序段的输出是A)*0000057.66*B)*57.66*C)*0000057.67*D)*57.67* 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析floata=57.666;printf("*%010.2f*\n",a);答案:C分析:%010.2f格式控制符表示显示2位小数,总位数是10,如果输出数据的总位数比10小则左边补0。本题目输出57.666,两位整数+一位小数位+两位小数总共5,所以还需要在前边补5个0凑够10位。输出:*0000057.67*,注意小数第三位进行了四舍五入。3.19若变量已正确说明,要求用以下语句给a赋予3.12、给b赋予9.0,则正确的输入形式是(□代表空格)A)3.12□□9.0B)a=□□3.12b=□□□9C)a=3.12,b=9D)a=3.12□□,b=9□□□□scanf("a=%f,b=%f",&a,&b);表示Enter键答案:C分析:考察对scanf的使用scanf中格式控制符中除了格式控制符的其它字符要原样输入,把原样输入的字符称为固定字符。以上选项中原样输入固定字符的是选项C3.20以下程序的输出结果是 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析A)98B)89C)66D)以上三个都不对#include"math.h"main(){doublea=-3.0,b=2;printf("%3.0f%3.0f\n",pow(b,fabs(a)),pow(fabs(a),b));}答案:B分析:pow二、填空题3.21若有以下定义,请写出以下程序段中输出语句执行后的输出结果。(1)____(2)____(3)____inti=-200,j=2500;printf("(1)%d%d",i,j);printf("(2)i=%d,j=%d\n",i,j);printf("(3)i=%d\nj=%d\n",i,j);答案:-2002500i=-200,j=2500i=-200j=25003.22变量i、j、k已定义为int类型并有初值0 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析,用以下语句进行输入时scanf("%d",&i);scanf("%d",&j);scanf("%d",&k);当执行第一个输入语句,从键盘输入:12.3表示Enter键则变量i、j、k的值分别是____、____、____。答案:12、0、03.23复合语句在语法上被认为是____。空语句的形式是____。答案:一条语句、;3.24C语句的最后用____结束。答案:;3.25以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式____、_____、____。intk;floata;doublex;scanf("%d%f%lf",&k,&a,&x);printf("k=%d,a=%f,x=%f\n",k,a,x);答案:(1)10025.811.89234(2)10025.811.89234(3)10025.811.892343.26以下程序段的输出结果是____。 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析intx=0177;printf("x=%3d,x=%6d,x=$%6o,x=%6x,x=%6u\n",x,x,x,x,x);答案:x=127,x=127,x=177,x=7f,x=1273.27以下程序段的输出结果是____。intx=0177;printf("x=%-3d,x=%-6d,x=$%-06d,x=$%06d,x=%%06d\n",x,x,x,x,x);答案:27、x=127,x=127,x=$127,x=$000127,x=%06d3.28以下程序段的输出结果是____。doublea=513.789215;printf("a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lf\n",a,a,a,a);答案:a=513.789215,a=513.79,a=513.78921500,a=513.78921500第四章、选择结构一、选择题4.1下列运算符中优先级最高的运算符是A)!B)%C)-=D)&&答案:A4.2下列运算符中优先级最低的运算符是A)||B)!=C)<=D)+答案:A4.3为表示关系x≥y≥z,应使用的C语言表达式是A)(x>=y)&&(y>=z)B)(x>=y)AND(y>=z) 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析C)(x>=y>=z)D)(x>=y)&(y>=z)答案:A4.4设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是A)a&&bB)a<=bC)a||b+c&&b-cD)!((a0)1(x<0)B)y=-1(x=0)0(x>0)0(x<0)C)y=-1(x=0)1(x>0) 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析-1(x<0)D)y=1(x=0)0(x>0)y=-1;if(x!=0)y=1;if(x>0)y=1;elsey=0;答案:本题没有正确答案。程序片段所表示的数学函数关系应该是0(x<0)y=0(x=0)1(x>0)4.9运行以下程序后,输出A)****B)&&&&C)####&&&&D)有语法错误不能通过编译main(){intk=-3;if(k<=0)printf("****\n")elseprintf("&&&&\n");}答案:D4.10若a和b均是正整型变量,以下正确的switch语句是A)switch(pow(a,2)+pow(b,2)) 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析{case1:case3:y=a+b;break;case0:case5:y=a-b;}B)switch(a*a+b*b);{case3:case1:y=a+b;break;case0:y=b-a;break;}C)switcha{default:x=a+b;case10:y=a-b;break;case11:x=a*d;break;}D)switch(a+b){case10:x=a+b;break;case11:y=a-b;break;}答案:没有正确答案。如果C选项改为:switch(a){default:x=a+b;case10:y=a-b;break;case11:x=a*b;break; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析}则答案可以选择C二、填空题4.11C语言中用____表示逻辑值“真”,用____表示逻辑值“假”。答案:非0、04.12C语言中的关系运算符按优先级别是____、____、____、____。答案:>、>=、<、<=、==、!=4.13C语言中的逻辑运算符按优先级别是____、____、____。答案:!、&&、||4.14C语言中的关系运算符和逻辑运算符的优先级别是____、____、____、____、____、____、____。答案:!、<、>、==、!=、&&、||4.15C语言中逻辑运算符____的优先级高于算术运算符。答案:!4.16将下列数学式改写成C语言的关系表达式或逻辑表达式A)____B)____。A)a=b或a4答案:A)a==b||a4||x<-44.17请写出以下程序的输出结果____。main(){inta=100;if(a>100)printf("%d\n",a>100); 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析elseprintf("%d\n",a<=100);}答案:14.18请写出与以下表达式等价的表达式A)____B)____。A)!(x>0)B)!0答案:A)x<=0B)14.19当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为____、____、____。if(a>c)b=a;a=c;c=b;答案:3、2、24.20若变量已正确定义,以下语句段的输出结果是____。x=0;y=2;z=3;switch(x){case0:switch(y==2){case1:printf("*");break;case2:printf("%");break;}case1:switch(z){case1:printf("$");case2:printf("*");break;default:printf("#"); 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析}}答案:*#第五章、循环结构一、选择题5.1以下程序段的输出结果是A)9B)1C)11D)10intk,j,s;for(k=2;k<6;k++,k++){s=1;for(j=k;j<6;j++)s+=j;}printf("%d\n",s);答案:D5.2以下程序段的输出结果是A)12B)15C)20D)25inti,j,m=0;for(i=1;i<=15;i+=4)for(j=3;j<=19;j+=4)m++;printf("%d\n",m);答案:C5.3以下程序段的输出结果是 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析A)1098B)987C)10987D)9876intn=10;while(n>7){n--;printf("%d\n",n);}答案:B5.4以下程序段的输出结果是A)1B)30C)1-2D)死循环 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析intx=3;do{printf("%3d",x-=2);}while(!(--x));答案:C5.5以下程序段的输出结果是A)15B)14C)不确定D)0main(){inti,sum;for(i=1;i<6;i++)sum+=sum;printf("%d\n",sum);}答案:C5.6以下程序段的输出结果是A)741B)852C)963D)875421main(){inty=10;for(;y>0;y--)if(y%3==0){printf("%d",--y);continue;}}答案:B 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析5.7若x是int型变量,以下程序段的输出结果是A)**3##4**5B)##3**4##5C)##3**4##5D)**3##4**5for(x=3;x<6;x++)printf((x%2)?("**%d"):(##%d\n"),x);答案:D5.8以下程序的输出结果是A)*#*#*#$B)#*#*#*$C)*#*#$D)#*#*$main(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elsecontionue;printf("#"); 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析}printf("$\n");}答案:A5.9以下叙述正确的是A)do_while语句构成的循环不能用其它语句构成的循环来代替。B)do_while语句构成的循环只能用break语句退出。C)用do_while语句构成循环时,只有在while后的表达式为非零时结束循环。D)用do_while语句构成循环时,只有在while后的表达式为零时结束循环。答案:D5.10以下程序的输出结果是A)3981B)4284C)2668D)2870main(){intx,i;for(i=1;i<=100;i++){x=i;if(++x%2==0)if(++x%3==0)if(++x%7==0)printf("%d",x); 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析}printf("\n");}答案:D二、填空题5.11当执行以下程序段后,i的值是____、j的值是____、k的值是____。inta,b,c,d,i,j,k;a=10;b=c=d=5;i=j=k=0;for(;a>b;++b)i++;while(a>++c)j++;dok++;while(a>d++);答案:5、4、65.12以下程序段的输出结果是____。intk,n,m;n=10;m=1;k=1;while(k<=n)m*=2;printf("%d\n",m);答案:死循环5.13以下程序的输出结果是____。main(){intx=2; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析while(x--);printf("%d\n",x);}答案:-15.14以下程序段的输出结果是____。inti=0,sum=1;do{sum+=i++;}while(i<5);printf("%d\n",sum);答案:115.15有以下程序段:s=1.0;for(k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf("%f\n",s);请填空,使下面的程序段的功能完全与之等同。s=0.0;____;k=0;do{s=s+d;____;d=1.0/(k*(k+1));} 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析while(____);printf("%f\n",s);答案:d=1.0、k++、k<=n5.16以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。main(){floatx,amax,amin;scanf("%f",&x);amax=x;amin=x;while(____){if(x>amax)amax=x;if(____)amin=x;scanf("%f",&x);}printf("\namax=%f\namin=%f\n",amax,amin);}答案:x>=0、x=""A"")&(c<=""Z"")C)(""A""<=c)AND(""Z"">=c)D)(c>=""A"")&&(c<=""Z"")答案:D6.7以下程序的输出结果是 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析A)因输出格式不合法,无正确输出B)65,90C)A,YD)65,89main(){charc1=""A"",c2=""Y"";printf("%d,%d\n",c1,c2);}答案:D6.8以下程序段的输出结果是A)AB)aC)ZD)zmain(){charx=""A"";x=(x>=""A""&&x<=""Z"")?(x+32):x;printf("%c\n",x);}答案:B6.9以下程序的输出结果是A)67,CB)B,CC)C,DD)不确定的值main(){charch1,ch2;ch1=""A""+""5""-""3"";ch2=""A""+""5""-""3"";printf("%d,%c\n",ch1,ch2); 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析}答案:A6.10对以下程序,从第一列开始输入数据:2473代表Enter。程序的输出结果是A)668977B)668966C)66778777D)6688766#include"stdio.h"main(){intc;while((c=getchar())!=""\n""){switch(c-""2""){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;}printf("\n");}}答案:A6.11若变量已正确说明,要求用以下语句给c1赋予字符%、给c2赋予字符#、给a赋予2.0、给b赋予4.0, 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析则正确的输入形式是(□代表空格)A)2.0□%□4.0□#B)2.0%4.0#C)2%□□4#D)2□%□4□scanf("%f%c%f%c",&a,&c1,&b,&c2);(代表Enter键)答案:B二、填空题6.12EOF的十进制值是____。答案:-16.13C语言中,字符占内存____个字节。答案:16.14调用C语言对字符处理的库函数时,在#include命令行中应包括的头文件是____。答案:string.h6.15若输入字符A,在以下while语句执行后ch的值是____。while(ch=getchar()==""A"");答案:16.16若要通过以下语句给a、b、c、d分别输入字符A、B、C、D,给w、x、y、z分别输入10、20、30、40,正确的输入形式是____,请用代表Enter键。scanf("%d%c%d%c%d%c%d%c",&w,&a,&x,&b,&y,&c,&z,&d);答案:10A20B30C40D 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析6.17若有以下说明和输入语句,要求给c1、c2输入字符A和B,给a1、a2输入7.29和101.298,从键盘正确输入数据的形式是____。charc1,c2;floata1,a2;scanf("%f%f",&a1,&a2);scanf("%c%c",&c1,&c2);答案:7.29101.298AB6.18若有以下说明和输入语句,要求给c1、c2输入字符A和B,给a1、a2输入7.29和101.298,从键盘正确输入数据的形式是____。charc1,c2;floata1,a2;scanf("%c%f%c%f",&c1,&a1,&c2,&a2);答案:A7.29B101.2986.19若有以下说明和输入语句,要求给c1、c2、c3输入字符A、B和C,请写出各种从键盘正确输入数据的形式。charc1,c2,c;scanf("%4c",&c1);scanf("%4c",&c2);scanf("%4c",&c3);答案:A□□□B□□□C□□□第七章、函数一、选择题7.1以下说法中正确的是A)C语言程序总是从第一个定义的函数开始执行 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析B)在C语言程序中,要调用的函数必须在main函数中定义C)C语言程序总是从main函数开始执行D)C语言程序中的main函数必须放在程序的开始部分答案:C7.2以下函数的类型是A)与参数x的类型相同B)void类型C)int类型D)无法确定fff(floatx){printf("%d\n",x*x);}答案:C7.3以下函数调用语句中,含有的实参个数是A)1B)2C)4D)5func((exp1,exp2),(exp3,exp4,exp5));答案:B7.4以下程序的输出结果是A)11B)20C)21D)31fun(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析r=func((x--,y++,x+y),z--);printf("%d\n",r);}答案:C7.5以下程序的输出结果是A)-1B)0C)1D)2main(){inti=2,p;p=f(i,i+1);printf("%d",p);}intf(inta,intb){intc;c=a;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}答案:A7.6以下程序的输出结果是A)0B)1C)6D)无定值 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析fun(inta,intb,intc){c=a*b;}main(){intc;fun(2,3,c);printf("%d\n",c);}答案:D7.7以下程序的输出结果是A)5.500000B)3.000000C)4.000000D)8.25doublef(intn){inti;doubles;s=1.0;for(i=1;i<=n;i++)s+=1.0/i;returns;}main(){inti,m=3;floata=0.0;for(i=0;ieps;n++){s+=t;t=n*t/(2*n+1);}return(2.0*_____);}答案:n=1、s7.12以下函数用以求x的y次方。请填空。doublefun(doublex,inty){inti;doublez;for(i=1;i_____;i++)z=_____;returnz;}答案:<=y、z*x7.13以下程序的功能是计算s=0!+1!+2!+3!+...+n!。请填空。longf(intn) 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析{inti;longs;s=_____;for(i=1;i<=n;i++)s=_____;returns;}main(){longs;intk,n;scanf("%d",&n);s=_____;for(k=0;k<=n;k++)s=s+_____;printf("%ld\n",s);}答案:1L、s*i、0、f(k)第八章指针一、选择题8.1若有定义:intx,*pb;则以下正确的赋值表达式是A)pb=&xB)pb=xC)*pb=&xD)*pb=*x答案:A8.2以下程序的输出结果是A)因变量无定义输出不定值B)0C)-1D)1#includemain() 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析{printf("%d\n",NULL);}答案:B8.3以下程序的输出结果是A)5,2,3B)-5,-12,-7C)-5,-12,-17D)5,-2,-7voidsub(intx,inty,int*z){*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,%d\n",a,b,c);}答案:B8.4以下程序的输出结果是A)4B)6C)8D)10main(){intk=2,m=4,n=6;int*pb=&k,*pm=&m,*p;*(p=&n)=*pk*(*pm);printf("%d\n",n);}答案:C8.5已知指针p的指向如图8.5所示,则执行语句*p++;后,*p的值是 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析A)20B)30C)21D)31答案:B8.6已知指针p的指向如图8.5所示,则表达式*++p的值是A)20B)30C)21D)31答案:B8.7已知指针p的指向如图8.5所示,则表达式++*p的值是A)20B)30C)21D)31答案:C8.8以下程序的输出结果是A)23B)24C)25D)26voidprtv(int*x){printf("%d\n",++*x);}main(){inta=25;prtv(&a);}答案:D8.9以下程序的输出结果是A)运行出错B)100C)a的地址D)b的地址main(){int**k,*ab=100;a=&b;k=&a; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析printf("%d\n",**k);}答案:B8.10以下程序的输出结果是A)4,3B)2,3C)3,4D)3,2voidfun(float*a,float*b){floatw;*a=*a+*a;w=*a;*a=*b;*b=w;}main(){floatx=2.0,y=3.0;float*px=&x,*py=&y;fun(px,py);printf("%2.0f,%2.0f\n",x,y);}答案:C8.11以下程序的输出结果是A)9.000000B)1.500000C)8.000000D)10.500000voidsub(floatx,float*y,float*z) 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析{*y=*y-1.0;*z=*z+x;}main(){floata=2.5,b=9.0,*pa,*pb;pa=&a,pb=&b;sub(b-a,pa,pa);printf("%f\n",a);}答案:C8.12以下四个程序中不能对两个整形值进行交换的是A)main(){inta=10,b=20;swap(&a,&b);printf("%d%d\n",a,b);}swap(int*p,int*q){int*t,a;t=&a;*t=*p;*p=*q;*q=*t;}B)main() 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析{inta=10,b=20;swap(&a,&b);printf("%d%d\n",a,b);}swap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}C)main(){int*a,*b;*a=10,*b=20;swap(a,b);printf("%d%d\n",*a,*b);}swap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}D)main(){inta=10,b=20;int*x=&a,*y=&b;swap(x,y); 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析printf("%d%d\n",a,b);}swap(int*p,int*q){intt;t=*p;*p=*q;*q=st;}答案:C二、填空题8.13以下程序段的输出结果是_____。int*var,ab;ab=100;var=&ab;ab=*var+10;printf("%d\n",*var);答案:1008.14以下程序的输出结果是_____。intast(intx,inty,int*cp,int*dp){*cp=x+y;*dp=x-y;}main(){inta,b,c,d;a=4;b=3;ast(a,b,&c,&d); 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析printf("%d%d\n",c,d);}答案:718.15若有定义:charch;(1)使指针p可以指向变量ch的定义语句是_____。答案:char*p=&ch;(2)使指针p可以指向变量ch的赋值语句是_____。答案:p=&ch;(3)通过指针p给变量ch读入字符scanf函数调用语句是_____。答案:scanf("%c",*p);(4)通过指针p给变量ch的赋字符的语句是_____。答案:ch=*p;5)通过指针p输出ch中字符的语句是_____。答案:printf("%c",*p);8.16若有如图8.5所示五个连续的int类型的存储单元并赋值如图,且p和s的基类型皆为int,p已指向存储单元a[1]。(1)通过指针p,给s赋值,使其指向最后一个存储单元a[4]的语句是____。答案:s=p+3;(2)用以移动指针s,使之指向中间的存储单元a[2]的表达式是____。答案:s=s-2; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析(3)已知k=2,指针s已指向存储单元a[2],表达式*(s+k)的值是____。答案:50(4)指针s已指向存储单元a[2],不移动指针s,通过s引用存储单元a[3]的表达式是____。答案:*(a+1)5)指针s已指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是____。答案:26)若p指向存储单元a[0],则以下语句的输出结果是____。for(i=0;i<5;i++)printf("%d",*(p+i));printf("\n");答案:1020304050第九章数组一、选择题9.1若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素的引用不正确的是A)a[p-a]B)*(&a[i])C)p[i]D)*(*(a+i))答案:D9.2以下程序段给数组所有元素输入数据,应在下划线处填入的是 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析A)a+(i++)B)&a(i+1)C)a+iD)&a[++i]main(){inta[10],i=0;while(i<10)scanf("%d",_________);...}答案:D9.3以下程序的输出结果是A)3B)4C)1D)2main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}答案:A9.4、以下程序的输出结果是A)不确定的值B)3C)2D)1main(){ 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析intn[2]={0},i,j,k=2;for(i=0;i代表Enter键:abcdef则程序的输出结果是A)abcdefB)aC)aD)abbbccdcdef 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析def#include"stdio.h"#defineN6main(){charc[N];inti=0;for(i=0;i=10){uu[n++]=t/10;uu[n]=t%10;}elseuu[n]=t;} 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析main(){inti,n,aa[10]={0};scanf("%d%d%d",&n,&aa[0],&aa[1]);for(i=1;is[k])____;return____;}答案:k=pk9.26以下程序统计从终端输入的字符中每个大写字母的个数,num[0]中统计字母A的个数,其它依次类推.用#号结束输入,请填空.#include"stdio.h"#include"ctype.h"main(){intnum[26]={0},i;charc;while(____!=""""#"""")if(isupper(c))num[___]+=1;for(i=0;i<26;i++)if(num[i])printf("%c:%d\n",i+""""A"""",num[i]);}答案:(c=getchar())c-""""A"""第十章字符串一、选择题 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析10.1以下能正确进行字符串赋值,赋初值的语句是A)chars[5]={""a"",""e"",""i"",""o"",""u""};B)char*s;s="good!";C)chars[5]="good!";D)chars[5];s="good!";答案:B10.2以下程序段的输出结果是A)68B)0C)字符D的地址D)不确定的值charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));答案:B10.3以下程序段的输出结果是A)11B)10C)9D)8printf("%d\n",strlen("ATS\n012\1\\"));答案:C10.4当运行以下程序时输入OPENTHEDOOR(此处代表Enter键),则输出结果是A)oPENtHEdOORB)openthedoorC)OPENTHEDOORD)OpenTheDoor#include"stdio.h"charfun(char*c) 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析{if(*c<=""Z""&&*c>=""A"")*c-=""A""-""a"";return*c;}main(){chars[81],*p=s;gets(s);while(*p){*p=fun(p);putchar(*p);p++;}putchar(""\n"");}答案:B10.5以下程序的输出结果是A)GFEDCBAB)AGADAGAC)AGAAGAGD)GAGGAGA#include"stdio.h"#include"string.h"voidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;while(p1""\0""&&p[i][j]<=""9"";j+=2)s=10*s+p[i][j]-""0"";printf("%d\n",s);}答案:A10.9以下程序的输出结果是A)ABCDEFGHIJKLB)ABCDC)ABCDEFGHIJKLMNOPD)AELMmain(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析p=alpha;for(i=0;i<4;i++)printf("%s",p[i]);printf("\n");}答案:C10.10库函数strcpy用以复制字符串。若有以下定义和语句:charstr1[]="string",str2[8],*str3,*str4="string";则对库函数strcpy的不正确调用是A)strcpy(str1,"HELLO1");B)strcpy(str2,"HELLO2");C)strcpy(str3,"HELLO3");D)strcpy(str4,"HELLO4");答案:C二、填空题10.11以下程序的输出结果是____。#include"stdio.h"main(){charb[]="ABCDEFG",*chp=&b[7];while(--chp>&b[0])putchar(*chp);putchar(""\n"");}答案:GFEDCB10.12以下程序的输出结果是_____。#include"stdio.h" 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析voidfun(char*a1,char*a2,intn){intk;for(k=0;k0;i--,i--)printf("%c",*p[i]);printf("\n");}答案:SO10.14当运行以下程序时从键盘输入字符串qwerty和abcd,则程序的输出结果是____。 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析#include"string.h"#include"stdio.h"strle(chara[],charb[]){intnum=0,n=0;while(*(a+num)!=""\0"")num++;while(b[n]){*(a+num)=b[n];num++;n++;}return(num);}main(){charstr1[81],str2[81],*p1=str1,*p2=str2;gets(p1);gets(p2);printf("%d\n",strle(p1,p2));}答案:1010.15以下程序的输出结果是____。#include"string.h"#include"ctype.h"voidfun(charstr[]){inti,j;for(i=0,j=0;str[i];i++)if(isalpha(str[i]))str[j++]=str[i];str[j]=""\0""; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析}main(){charss[80]="Itis!";fun(ss);printf("%s\n",ss);}答案:Itiss!10.16以下fun函数的功能是将一个字符串的内容颠倒过来,请填空。#include"string.h"voidfun(charstr[]){inti,j,k;for(i=0,j=____;i2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(6));}答案:C二、填空题11.5假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在DOS提示符下键入PROGABCDEFGHIJKL(此处代表Enter键)则输出结果为_____。main(intargc,char*argv[]) 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析{while(--argc>0)printf("%s",argv[argc]);printf("\n");}答案:IJKLEFGHABCD11.6以下程序的输出结果是_____。fun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(9));}答案:711.7以下程序的输出结果是_____。fun(intn,int*s){intf1,f2;if(n==1||n==2)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析}}main(){intx;fun(6,&x);printf("%d\n",x);}答案:811.8以下程序调用invert函数按逆序重新放置a数组中元素的值,a数组中的值在main函数中读入。请填空。#defineN10voidinvert(int*s,inti,intj){intt;if(inB)p->n++C)(*p).n++D)++p->nstructst{intn; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析structst*next;};structsta[3],*p;a[0].n=5;a[0].next=&a[1];a[1].n=7;a[1].next=&a[2];a[2].n=9;a[2].next="\0";p=&a[0];答案:D14.4已知字符0的ASCII代码值的十进制数为48,且数组的第0个元素元素在低位,以下程序的输出结果是A)39B)9C)38D)8main(){union{inti[2];longk;charc[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf("%x\n",s->c[0]);}答案:A14.5以下程序的输出结果是A)32B)16C)8D)24 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析typedefunion{longx[2];inty[4];charz[8];}MYTYPE;MYTYPEthem;main(){printf("%d\n",sizeof(them));}答案:C14.6以下程序的输出结果是A)10B)50C)51D)602060607020211131structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[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); 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析printf("%d\n",++(*p->y));}答案:C14.7若已建立下面的链表结构,指针p,s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾的语句组是A)s->next=NULL;p=p->next;p->next=s;B)p=p->next;s->next=p->next;p->next=s;C)p=p->next;s->next=p;p->next=s;D)p=(*p).next;(*s).next=(*p).next;(*p).next=s;答案:C14.8以下程序的输出结果是A)25B)30C)18D)8typedefunion{longi;intk[5];charc;}DATE;structdate{intcat;DATEcow;doubledog; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析}too;DATEmax;main(){printf("%d\n",sizeof(structdate)+sizeof(max));}答案:B二、填空题14.9为了建立如图所示的存储结构(即每个结点含两个域,date是数据域,next是指向结点的指针域),请填空。structlink{chardata;_________;}node;答案:structlink*next14.10以下MIN函数的功能是:查找带有头结点的单向链表中,结点数据域的最小值作为函数值返回。请填空。structnode{intdata;structnode*next;};intMIN(structnode*first){structnode*p; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析intm;p=first->next;m=p->data;for(p=p->next;p!="\0";p=_____)if(______)m=p->data;returnm;}答案:p->nextp->datadata=ch;q->next=p;q=p;ch=getchar();}p->next="\0";________;}答案:(structlist*)、structlist、(structlist*)、structlist、returnh第十五章一、选择题15.1以下程序的输出结果是A)100B)160C)120D)64main(){charx=040;printf("%d\n",x=x<<1);}答案:D 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析15.2以下程序中c的二进制值是A)00011011B)00010100C)00011100D)00011000chara=3,b=6,c;c=a^b<<2;答案:A15.3以下程序的输出结果是A)0B)1C)2D)3main(){intx=35;charz="A";printf("%d\n",(x&15)&&(z<"a"));}答案:B15.4以下程序的输出结果是A)0B)1C)2D)3main(){inta=5,b=6,c=7,d=8,m=2,n=2;printf("%d\n",(m=a>b)&(n=c>d));}答案:A二、填空题15.5设变量a的二进制数是00101101,若想通过运算a^b使a的高4位取反,低4位不变,则b的 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析二进制数应是_______。答案:1111000015.6a为任意整数。能将变量a清零的表达式是______。答案:a&015.7a为任意整数。能将变量a中的各二进制位均置成1的表达式是_____。答案:a=a|0xffff15.8能将两字节变量x的高8位置全1,低字节保持不变的表达式是_____。答案:x=x|0xff0015.9运用位运算,能将八进制数012500除以4,然后赋给变量a的表达式是_____。答案:a=012500>>215.10运用位运算,能将变量ch中的大写字母转换成小写字母的表达式是_____。答案:ch|0x20第十六章一、选择题16.1标准库函数fgets(s,n,f)的功能是A)从文件f中读取长度为n的字符串存入指针s所指的内存B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存D)从文件f中读取n个字符串存入指针s所指的内存 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析D)从文件f中读取长度为n-1的字符串存入指针s所指的内存答案:D16.2若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是A)EOFB)-1C)非零值D)NULL答案:C二、填空题16.3以下C程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。(假定文件名无误),请填空。#include"stdio.h"main(intargc,char*argv[]){FILE*f1,f2;charch;if(argc<_____){printf("命令行参数错!\n");exit(0);}f1=fopen(argv[1],"r");f2=fopen(argv[2],"w");while(_____)fputc(fgetc(f1),______);________;_________;}答案:1!feof(f1)f2fclose(f1)fclose(f2)16.4以下程序由终端键盘输入一个文件名,然后把终端键盘输入的字符依次存放到该文件中, 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析用#号作为结束输入标志。请填空。#include"stdio.h"main(){FIlE*fp;charch,fname[10];printf("Enterthenameoffile\n");gets(fname);if((fp=_____)==NULL){printf("Openerror\n");exit(0);}printf("Enterdata:\n");while((ch=getchar())!="#")fputc(_____,fp);fclose(fp);}答案:fopen(fname,"w")ch16.5以下程序用来统计文件中字符的个数。请填空。#include"stdio.h"main(){FILE*fp;longnum=0;if((fp=fopen("fname.dat",____)==NULL){printf("Openerror\n");exit(0);}while_____{_____;num++;}printf("num=%d\n",num);fclose(fp);) 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析答案:"r"(!feof(fp))fgetc(fp)16.6以下程序编译,连接后生成可执行文件cpy.exe。假定磁盘当前目录下有三个文本文件其文件名和内容分别为:文件名内容aaaaa#bbbbb#ccccc#当在DOS当前目录下键入:cpyabc(此处的代表Enter键)则程序输出_______。#include"stdio.h"voidfc(FILE*);main(intargc,char*argv[]){FILE*fp;inti=1;while(--argc>0){fp=fopen(argv[i++],"r");fc(fp);fclose(fp);}}voidfc(FILE*ifp){charc; 快动网(www.kuaido.com)推出计算机等级考试自学平台提供免费视频教程在线试题及解析while(c=getc(ifp)!="#")putchar(c-32);}答案:AAAABBBBCCCC'