《2010年20套大学计算机C语言期末考试复习试题及答案(免费).pdf》由会员分享,可在线阅读,更多相关《2010年20套大学计算机C语言期末考试复习试题及答案(免费).pdf(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、判断共10题(共计 10分)第1题(1.0 分)题号:1488 函数即可以嵌套定义,又可以嵌套调用.答案:N 第2题(1.0 分)题号:1256 unsigned 和 void 在 C 中都是保留字.答案:Y 第3题(1.0 分)题号:1280 表达式 +i 表示对变量i 自加 1.答案:Y 第4题(1.0 分)题号:1282 C 语言源程序的基本结构单位是main 函数.答案:N 第5题(1.0 分)题号:1276 字符常量的长度肯定为1.答案:Y 第6题(1.0 分)题号:1469 char a=a,b,c;char b=abc;数组 a和数组 b 占用的内存空间大小不一样.答案:Y
2、第7题(1.0 分)题号:1249 若有 int i=10,j=2;则执行完i*=j+8;后 i 的值为 28.答案:N 第8题(1.0 分)题号:33 int i,*p=&i;是正确的C 说明。答案:Y 第9题(1.0 分)题号:1250 While 循环语句的循环体至少执行一次.答案:N 第10 题(1.0分)题号:1510 有数组定义int a22=1,2,3;则 a01的值为 0.答案:Y 二、单项选择共30题(共计 30分)第1题(1.0 分)题号:456 执行下面程序后,输出结果是()。main()a=45,b=27,c=0;c=max(a,b);printf(%dn,c);int
3、 max(x,y)int x,y;int z;if(xy)z=x;else z=y;return(z);A:45 B:27 C:18 D:72 答案:A 第2题(1.0分)题号:437 下列数组说明中,正确的是()。A:int array4;B:int array;C:int array5;D:int array3;答案:A 第3题(1.0分)题号:2396 下面有关for 循环的正确描述是()A:for循环只能用于循环次数已经确定的情况B:for循环是先执行循环体语句,后判断表达式C:在 for 循环中,不能用 break 语句跳出循环体D:for循环的循环体语句中,可以包含多条语句,但必须
4、用花括号括起来答案:D 第4题(1.0分)题号:2817 以下程序的输出结果是().main()int i,j,k,a=3,b=2;i=(-a=b+)?-a:+b;j=a+;k=b;printf(i=%d,j=%d,k=%dn,i,j,k);A:i=2,j=1,k=3 B:i=1,j=1,k=2 C:i=4,j=2,k=4 D:i=1,j=1,k=3 答案:D 第5题(1.0分)题号:2866 若有下列定义,则对a 数组元素地址的正确引用是().int a5,*p=a;A:*(p+5)B:*p+2 C:*(a+2)D:*&a5 答案:C 第6题(1.0分)题号:711 下列选项中正确的语句组是
5、()。A:char s8;s=Beijing;B:char*s;s=Beijing;C:char s8;s=Beijing;D:char*s;s=Beijing;答案:D 第7题(1.0 分)题号:3191 若变量 a,i 已正确定义,且 i 已正确赋值,合法的语句是()A:a=int(i);B:a=1 C:+i;D:a=a+=5;答案:C 第8题(1.0 分)题号:490 以下字符中不是转义字符的是()。A:a B:b C:c D:答案:C 第9题(1.0 分)题号:184 下列定义不正确的是()。A:#define PI 3.141592 B:#define S345 C:int max(
6、x,y);int x,y;D:static char c;答案:C 第10 题(1.0分)题号:3028 char h,*s=&h;可将字符 H 通过指针存入变量 h 中的语句是().A:*s=H;B:*s=H;C:s=H;D:s=H 答案:B 第11题(1.0 分)题号:690 设 char 型变量x 中的值为 10100111,则表达式(2+x)(3)的值是()。A:10101001 B:10101000 C:11111101 D:01010101 答案:D 第12 题(1.0分)题号:2381 设以下变量均为int 类型,表达式的值不为7的是()A:x=y=6,x+y,x+1 B:x=y
7、=6,x+y,y+1 C:x=6,x+1,y=6,x+y D:y=6,y+1,x=y,x+1 答案:C 第13题(1.0分)题号:3124 若有说明 int a34;则对 a 数组元素的正确引用是().A:a24 B:a1,3 C:a1+10 D:a(2)(1)答案:C 第14题(1.0分)题号:679 在 C 语言中,形参的缺省存储类是()。A:auto B:register C:static D:extern 答案:A 第15题(1.0分)题号:1343 C 语言源程序的基本单位是().A:过程B:函数C:子程序D:标识符答案:B 第16题(1.0分)题号:3023 C 语言程序中必须有的
8、函数是().A:#include stdio.h B:main C:printf D:scanf 答案:B 第17题(1.0分)题号:3228 有 定 义:int a=8,b=5,c;,执 行 语 句c=a/b+0.4;后,c 的值为 ()A:1.4 B:1 C:2.0 D:2 答案:B 第18题(1.0分)题号:640 以下对二维数组a 的正确说明是()。A:int a3 B:float a(3,4)C:double a14 D:float a(3)(4)答案:C 第19题(1.0分)题号:2884 以下标识符中,不能作为合法的C 用户定义标识符的是().A:answer B:to C:si
9、gned D:_if 答案:C 第20 题(1.0分)题号:652 在 C 语言中,引用数组元素时,其数组下标的数据类型允许是()。A:整型常量B:整型表达式C:整型常量或整型表达式D:任何类型的表达式答案:C 第21 题(1.0分)题号:381 以下标识符中,不能作为合法的C 用户定义标识符的是()。A:answer B:to C:signed D:_if 答案:C 第22 题(1.0分)题号:2898 已 知year为 整 型 变 量,不 能 使 表 达 式(year%4=0&year%100!=0)|year%400=0 的值为 真的数据是().A:1990 B:1992 C:1996
10、D:2000 答案:A 第23 题(1.0分)题号:177 以下描述中,正确的是()。A:预处理是指完成宏替换和文件包含中指定的文件的调用B:预处理指令只能位于C 源文件的开始C:C源程序中凡是行首以#标识的控制行都是预处理指令D:预处理就是完成C 编译程序对C 源程序第一遍扫描,为编译词法和语法分析作准备答案:C 第24 题(1.0分)题号:156 执行下列语句后的输出为()。int j=-1;if(j1;i-)for(j=1;ji;j+)putchar(#);A:无B:#C:#D:#答案:B 第27题(1.0 分)题号:2830 下列程序的输出结果是().main()int x=1,y=0
11、,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;case 3:a+;b+;break;printf(a=%d,b=%dn,a,b);A:a=1,b=0 B:a=2,b=1 C:a=1,b=1 D:a=2,b=2 答案:B 第28题(1.0分)题号:573 C 语言中运算对象必须是整型的运算符是()。A:%=B:/C:=D:=答案:A 第29 题(1.0分)题号:647 以下能对二维数组a 进行正确初始化的语句是()。A:int a2=1,0,1,5,2,3;B:int a3
12、=1,2,3,4,5,6;C:int a24=1,2,3,4,5,6;D:int a3=1,0,1,1,1;答案:B 第30 题(1.0分)题号:3135 以下数组定义中不正确的是().A:int a23;B:int b3=0,1,2,3;C:int c100100=0;D:int d3=1,2,1,2,3,1,2,3,4;答案:D 三、程序填空共2题(共计 24分)第1题(12.0 分)题号:417/*-【程序填空】-题目:利用全局变量计算长方体的体积及三个面的面积。-*/int s1,s2,s3;int vs(int a,int b,int c)int v;/*SPACE*/v=【?】;s
13、1=a*b;/*SPACE*/s2=【?】;s3=a*c;return v;main()int v,l,w,h;clrscr();printf(ninput length,width and height:);/*SPACE*/scanf(%d%d%d,【?】,&w,&h);/*SPACE*/v=【?】;printf(v=%d s1=%d s2=%d s3=%dn,v,s1,s2,s3);getch();答案:=(答案 1)=a*b*c=或=a*b*c=(答案 2)=b*c=或=b*c=(答案 3)=&l=(答案 4)=vs(l,w,h)=或=vs(l,w,h)第2题(12.0分)题号:441
14、/*-【程序填空】-题目:给定程序中函数fun 的功能是:从低位开始取出长整型变量s 中奇数位上的数,依次构成一个新数放在t 中。-*/#include#include void fun(long s,long*t)long sl=10;s/=10;/*SPACE*/*t=s【?】10;while(s0)/*SPACE*/s=【?】;/*SPACE*/*t=s%10*sl【?】;/*SPACE*/sl=sl【?】10;main()long s,t;clrscr();printf(nPlease enter s:);scanf(%ld,&s);fun(s,&t);printf(The resul
15、t is:%ldn,t);答案:=(答案 1)=%=(答案 2)=s/100=(答案 3)=+*t=(答案 4)=*四、程序改错共2题(共计 22分)第1题(11.0分)题号:383/*-【程序改错】-题目:给定程序的功能是:读入一行英文文本,将其中每个单词的最后一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。例如,若输入I am a student to take the examination.,则应输出 I aM A studenT tO takE thE examination.。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include
16、 conio.h#include stdio.h#include ctype.h#include string.h up1st(char*p)/*FOUND*/integer k=0;for(;*p;p+)if(k)/*FOUND*/if(*p=)k=0;/*FOUND*/*(p-1)=toupper(*(p-1);else if(*p!=)k=1;*(p-1)=toupper(*(p-1);main()char chrstr81;printf(nPlease enter a string:);gets(chrstr);printf(nnBefore changing:n%s,chrstr);
17、up1st(chrstr);printf(nAfter changing:n%s,chrstr);答案:=(答案 1)=int k=0;=(答案 2)=if(*p=)=(答案 3)=*(p-1)=toupper(*(p-1);第2题(11.0分)题号:431/*-【程序改错】-题目:编写函数fun 求1000 以内所有 8的倍数之和。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#includestdio.h#define N 1000 main()int sum;sum=fun(8);printf(%d以 内 所 有%d的 倍 数 之 和为:%dn,N,8,sum);getc
18、h();int fun(int m)/*FOUND*/int s=0;i;/*FOUND*/for(i=1;iN;i+)/*FOUND*/if(i/m=0)s+=i;return s;答案:=(答案 1)=int s=0,i;=(答案 2)=for(i=1;iN;i+)=(答案 3)=if(i%m=0)五、程序设计共1题(共计 14分)第1题(14.0 分)题号:390/*-【程序设计】-题目:求一批数中最大值和最小值的差。-注意:部分源程序给出如下。请勿改动主函数main 和其它函数中的任何内容,仅在函数的花括号中填入所编写的若干语句。-*/int max_min(int a,int n)/
19、*Program*/*End */#define N 30#include stdlib.h#include stdio.h main()int aN,i,k;clrscr();for(i=0;iN;i+)ai=random(51)+10;for(i=0;iN;i+)printf(%5d,ai);if(i+1)%5=0)printf(n);k=max_min(a,N);printf(the result is:%dn,k);yzj();getch();yzj()FILE*IN,*OUT;int n;int i30;int o;IN=fopen(in.dat,r);if(IN=NULL)prin
20、tf(Read File Error);OUT=fopen(out.dat,w);if(OUT=NULL)printf(Write File Error);for(n=0;n5;n+)fscanf(IN,%d,&in);o=max_min(i,5);fprintf(OUT,%dn,o);fclose(IN);fclose(OUT);答案:-int i,max,min;max=min=a0;for(i=1;imax)max=ai;else if(aib)=c 的值为 真。答案:Y 第10 题(1.0分)题号:1502 对二维数组a 来说,由于 a+1与*(a+1)的值相等,因此二者的含义是一样的
21、.答案:N 二、单项选择共30题(共计 30分)第1题(1.0 分)题号:177 以下描述中,正确的是()。A:预处理是指完成宏替换和文件包含中指定的文件的调用B:预处理指令只能位于C 源文件的开始C:C源程序中凡是行首以#标识的控制行都是预处理指令D:预处理就是完成C 编译程序对C 源程序第一遍扫描,为编译词法和语法分析作准备答案:C 第2题(1.0 分)题号:2789 设 C 语言中,int 类型数据占4个字节,则short 类型数据占().A:1个字节B:2个字节C:4个字节D:8个字节答案:B 第3题(1.0 分)题号:693 以下各选项企图说明一种新的类型名,其中正确的是()。A:t
22、ypedef v1 int;B:typedef v2=int;C:typedef int v3;D:typedef v4:int;答案:C 第4题(1.0 分)题号:104 以下运算符中,优先级最高的运算符是()。A:|B:%C:!D:=答案:C 第5题(1.0 分)题号:138 以下程序的输出结果是()。main()int i,j,k,a=3,b=2;i=(-a=b+)?-a:+b;j=a+;k=b;printf(i=%d,j=%d,k=%dn,i,j,k);A:i=2,j=1,k=3 B:i=1,j=1,k=2 C:i=4,j=2,k=4 D:i=1,j=1,k=3 答案:D 第6题(1.
23、0分)题号:2907 以下程序段的执行结果是().double x;x=218.82631;printf(%-6.2en,x);A:输出格式描述符的域宽不够,不能输出B:输出为 21.38e+01 C:输出为 2.2e+02 D:输出为-2.14e2 答案:C 第7题(1.0分)题号:152 以下程序的运行结果是()。main()int n;for(n=1;ny?+x:+y的值为().int x=1,y=2,z=3;A:2 B:3 C:6 D:5 答案:C 第19题(1.0分)题号:526 用户定义的函数不可以调用的函数是()。A:非整型返回值的B:本文件外的C:main 函数D:本函数下面定
24、义的答案:C 第20题(1.0分)题号:2567 以下标识符中,不能作为合法的C 用户定义标识符的是().A:a3_b3 B:void C:_123 D:IF 答案:B 第21 题(1.0分)题号:2401 下 面 程 序 段 的 输 出 结 果 为()int a,b;b=(a=3*5,a*4,a*5);printf(%d,b);A:60 B:75 C:65 D:无确定值答案:B 第22 题(1.0分)题号:3063 若有定义:int a=7;float x=2.5,y=4.7;则表达式 x+a%3*(int)(x+y)%2/4的值是().A:2.500000 B:2.750000 C:3.5
25、00000 D:0.000000 答案:A 第23 题(1.0分)题号:3129 若有说明:int a4=0,0;则下面不正确的叙述是().A:数组 a 的每个元素都可得到初值0 B:二维数组a 的第一维大小为1 C:因为二维数组a 中第二维大小的值除经初值个数的商为1,故数组 a 的行数为 1 D:有元素a00 和 a01 可得到初值 0,其余元素均得不到初值0 答案:D 第24 题(1.0分)题号:3186 若有说明:int i,j=2,*p=&i;,则能完成i=j 赋值功能的语句是().A:i=*p;B:*p=*&j;C:i=&j;D:i=*p;答案:B 第25 题(1.0分)题号:30
26、16 与实际参数为实型数组名相对应的形式参数不可以定义为().A:float a;B:float*a;C:float a;D:float(*a)3;答案:C 第26 题(1.0分)题号:515 int i,j,a23;按照数组a 的元素在内存的排列次序,不能将数1,2,3,4,5,6 存入 a 数组的是()。A:for(i=0;i2;i+)for(j=0;j3;j+)aij=i*3+j+1;B:for(i=0;i3;i+)for(j=0;j2;j+)aji=j*3+i+1;C:for(i=0;i6;i+)ai/3i%3=i+1;D:for(i=1;i=6;i+)aii=i;答案:D 第27题(
27、1.0分)题号:2799 下列运算符中,不属于关系运算符的是().A:C:=D:!答案:D 第28题(1.0分)题号:662 C 语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是()。A:void B:int C:float D:double 答案:B 第29题(1.0分)题号:196 若有下列定义,则对a 数组元素地址的正确引用是()。int a5,*p=a;A:*(p+5)B:*p+2 C:*(a+2)D:*&a5 答案:C 第30题(1.0分)题号:2993 下列程序段的输出结果为().int a=7,b=9,t;t=a*=ab?a:b;printf(%d,t);A:7 B:9
28、C:63 D:49 答案:C 三、程序填空共2题(共计 24 分)第1题(12.0分)题号:591/*如果ab,就将两个数的位置调换;否则,保持不变。*/main()int a,b,temp;printf(nPlease input two int number:);scanf(%d%d,&a,&b);if(ab)/*SPACE*/【?】;/*SPACE*/a=【?】;b=temp;printf(%d,%dn,a,b);答案:=(答案 1)=temp=a=(答案 2)=b 第2题(12.0 分)题号:30/*-【程序填空】-题目:以下程序的功能是用冒泡法对数组a 进行由小到大的排序。-*/vo
29、id fun(int a,int n)int i,j,t;/*SPACE*/for(j=0;【?】;j+)/*SPACE*/for(i=0;【?】;i+)/*SPACE*/if(【?】)t=ai;ai=ai+1;ai+1=t;main()int i,a10=3,7,5,1,2,8,6,4,10,9;/*SPACE*/【?】;for(i=0;i10;i+)printf(%3d,ai);答案:=(答案 1)=j=j=或=j=j=或=jj=(答案 2)=ii=或=ii=或=i=n-j-2=或=ia i+1 =或=a i+1 ai=(答案 4)=fun(a,10)四、程序改错共2题(共计 22 分)第
30、1题(11.0分)题号:417/*-【程序改错】-题目:读取 7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include stdio.h main()int i,a,n=1;/*FOUND*/while(n7)do scanf(%d,&a);/*FOUND*/while(a50);/*FOUND*/for(i=0;i=a;i+)printf(*);printf(n);n+;getch();答案:=(答案 1)=while(n=7)=或=while(n8)=(答案 2)=while(a50);=或=while(a
31、50|a1);=(答案 3)=for(i=1;i=a;i+)第2题(11.0分)题号:429/*-【程序改错】-题目:求 0-7 这8个数字所能组成的奇数个数。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include stdio.h main()/*FOUND*/long sum=4;s=4;int j;for(j=2;j=8;j+)/*FOUND*/printf(n%d,sum);/*FOUND*/if(j2)s*=7;else s*=8;sum+=s;printf(nsum=%ld,sum);getch();答案:=(答案 1)=long sum=4,s=4;=(答案
32、 2)=printf(n%ld,sum);=(答案 3)=if(j=2)=或=if(j3)五、程序设计共1题(共计 14 分)第1题(14.0分)题号:49/*-【程序设计】-题目:请用for 循环编写编写函数fun,函数的功能是:计算n 门课程的平均值,计算结果作为函数值返回。例如,若有 5门课程的成绩是:92,76,69,58,88,则函数的值为76.600000。-注意:部分源程序给出如下。请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。-*/#include stdio.h float fun(int a,int n)/*Program
33、*/*End */main()int a=92,76,69,58,88;printf(y=%fn,fun(a,5);yzj();yzj()FILE*IN,*OUT;int iIN10,i,j;float fOUT;IN=fopen(18.in,r);if(IN=NULL)printf(Please Verify The Currernt Dir.It May Be Changed);OUT=fopen(18.out,w);if(OUT=NULL)printf(Please Verify The Current Dir.It May Be Changed);for(j=0;j10;j+)for(
34、i=0;i5;i+)fscanf(IN,%d,&iINi);fOUT=fun(iIN,5);fprintf(OUT,%fn,fOUT);fclose(IN);fclose(OUT);答案:-int i;float y=0;for(i=0;in;i+)y+=ai;y=y/n;return y;-一、判断共10题(共计 10分)第1题(1.0 分)题号:7 在 C 语言中,此定义和语句是合法的:enum aa a=5,b,cbb;bb=(enum aa)5;答案:Y 第2题(1.0 分)题号:1475 表达式 1/4+2.75 的值是 3.答案:N 第3题(1.0 分)题号:1510 有数组定义i
35、nt a22=1,2,3;则 a01的值为 0.答案:Y 第4题(1.0 分)题号:1262 C 语言规定:在一个源程序中,main 函数的位置必须在最开始.答案:N 第5题(1.0 分)题号:1263 for(表达式 1;表达式 3)可理解为for(表达式1;1;表达式 3).答案:Y 第6题(1.0 分)题号:1512 将一个字符串 abc 赋给字符串变量str 的方法是 str=abc.答案:N 第7题(1.0 分)题号:22 关系运算符=与=的优先级相同。答案:N 第8题(1.0 分)题号:1252 break 语句可用于循环体内,它将退出该重循环.答案:Y 第9题(1.0分)题号:1
36、504 语句char*p=Turbo C的含义是将字符串赋给字符型指针变量p.答案:N 第10题(1.0分)题号:1241 在标准 C 中,while 和 do_while 的功能完全相同.答案:N 二、单项选择共30题(共计 30分)第1题(1.0分)题号:3148 C 语言允许函数类型缺省定义,此时函数值隐含的类型是().A:float B:int C:long D:double 答案:B 第2题(1.0分)题号:624 以*于运算符优先顺序的描述中正确的是()。A:关系运算符算术运算符 赋值运算符 逻辑运算符B:逻辑运算符关系运算符 算术运算符 赋值运算符C:赋值运算符 逻辑运算符 关系
37、运算符 算术运算符D:算术运算符 关系运算符 赋值运算符 C:*D:&答案:A 第11题(1.0 分)题号:3212 C 语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符()A:必须为字母B:必须为下划线C:必须为字母或下划线D:可以是字母,数字和下划线中任一字符答案:C 第12题(1.0分)题号:416 以下程序的输出结果为()。main()int i=010,j=10;printf(%d,%dn,+i,j-);A:11,10 B:9,10 C:010,9 D:10,9 答案:B 第13题(1.0分)题号:542 若有 int*p=(int*)malloc(sizeof(in
38、t);则向内存申请到内存空间存入整数 123 的语句为()。A:scanf(%d,p);B:scanf(%d,&p);C:scanf(%d,*p);D:scanf(%d,*p);答案:A 第14题(1.0分)题号:464 关于指针概念说法不正确的是()。A:一个指针变量只能指向同一类型变量B:一个变量的地址称为该变量的指针C:只有同一类型变量的地址才能放到指向该类型变量的指针变量之中D:指针变量可以由整数赋,不能用浮点赋答案:D 第15题(1.0分)题号:687 表达式,0 x13&0 x17 的值是()。A:0 x17 B:0 x13 C:0 xf8 D:0 xec 答案:B 第16题(1.
39、0分)题号:3000 int a=1,b=2,c=3;if(ac)b=a;a=c;c=b;则 c 的值为().A:1 B:2 C:3 D:不一定答案:B 第17 题(1.0分)题号:138 以下程序的输出结果是()。main()int i,j,k,a=3,b=2;i=(-a=b+)?-a:+b;j=a+;k=b;printf(i=%d,j=%d,k=%dn,i,j,k);A:i=2,j=1,k=3 B:i=1,j=1,k=2 C:i=4,j=2,k=4 D:i=1,j=1,k=3 答案:D 第18 题(1.0分)题号:441 下列语句中,不正确的是()。A:static char a2=1,2
40、;B:static int a2=1,2;C:static char a2=1,2,3;D:static char a2=1;答案:C 第19 题(1.0分)题号:477 以下对枚举类型名的定义中正确的是()。A:enum a=sum,mon,tue;B:enum a sum=9,mon=-1,tue;C:enum a=sum,mon,tue;D:enum a sum,mon,tue;答案:B 第20 题(1.0分)题号:661 以下正确的描述是:在C 语言程序中()。A:函数的定义可以嵌套,但函数的调用不可以嵌套B:函数的定义不可以嵌套,但函数的调用可以嵌套C:函数的定义和函数的调用均不可以
41、嵌套D:函数的定义和函数的调用均可以嵌套答案:B 第21 题(1.0分)题号:3103 以下描述中正确的是().A:由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B:do-while 循环由 do 开始,用 while 结束,在 while(表达式)后面不能写分号C:在 do-while 循环体中,一定要有能使while 后面表达式的值变为零(假)的操作D:do-while 循 环 中,根 据 情 况 可 以 省 略while 答案:C 第22题(1.0分)题号:2994 下列表达式中,可作为 C 合法表达式的是().A:3,2,1,0 B:(3,2
42、,1,0)C:3=2=1=0 D:3/2/1/0 答案:B 第23题(1.0分)题号:591 设有 int x=11;则表达式 (x+*1/3)的值是()。A:3 B:4 C:11 D:12 答案:A 第24题(1.0分)题号:622 putchar 函数可以向终端输出一个()。A:整型变量表达式值B:实型变量值C:字符串D:字符或字符型变量值答案:D 第25题(1.0分)题号:3232 有如下定义#define D 2 int x=5;float y=3.83;char c=D;则下面选项中错误的是()A:x+;B:y+;C:c+;D:D+;答案:D 第26题(1.0分)题号:196 若有下
43、列定义,则对a 数组元素地址的正确引用是()。int a5,*p=a;A:*(p+5)B:*p+2 C:*(a+2)D:*&a5 答案:C 第27题(1.0分)题号:2377 下列数据中,不合法的C 语言实型数据的是()A:0.123 B:123e3 C:2.1e3.5 D:789.0 答案:C 第28 题(1.0分)题号:2872 在位运算中,操作数每右移一位,其结果相当于().A:操作数乘以 2 B:操作数除以 2 C:操作数乘以 16 D:操作数除以 16 答案:B 第29 题(1.0分)题号:685 在位运算中,操作数每左移一位,其结果相当于()。A:操作数乘以 2 B:操作数除以 2
44、 C:操作数除以 4 D:操作数乘以 4 答案:A 第30 题(1.0分)题号:132 若 ch 为 char 型变量,k 为 int 型变量(已知字符 a 的 ASCII 十进制代码为97),则以下程序段的执行结果是()。ch=a;k=12;printf(%x,%o,ch,ch,k);printf(k=%dn,k);A:因变量类型与格式描述符的类型不匹配,输出无定值B:输出项与格式描述符个数不符,输出为零值或不定值C:61,141,k=%d D:61,141,k=%12 答案:C 三、程序填空共2题(共计 24分)第1题(12.0 分)题号:605/*用辗转相除法求解两个整数的最大公约数。*
45、/main()int a,b,r;scanf(%d%d,&a,&b);/*SPACE*/【?】;while(r!=0)a=b;/*SPACE*/【?】;r=a%b;printf(%d,b);答案:=(答案 1)=r=a%b=(答案 2)=b=r 第2题(12.0分)题号:606/*输出九九乘法表*/*1*1=1 1*2=2 1*3=3 1*4=4.1*9=9*/*2*1=1 2*2=4 2*3=6 2*4=8.2*9=18*/main()int i,j;/*SPACE*/for(【?】;i=9;i+)for(j=1;j=9;j+)/*SPACE*/printf(%d*%d=%d,i,j,【?】
46、);printf(n);答案:=(答案 1)=i=1=(答案 2)=i*j 四、程序改错共2题(共计 22 分)第1题(11.0分)题号:441/*-【程序改错】-题目:输入字符序列,字符序列以特殊字符“#”结束。程序从前向后依次读入字符,并翻译出新的字符输出。翻译的规则是:如果当前读入的字符是数字符,如果该字符的面值为 n,则它的后一个字符(包括数字符)需重复输出n+1 次如果当前读入的字符不是数字符,则输出该字符。输出时,以上述一次翻译为一组,不同组间输出用一个空白字符隔开。翻译直至当前读入的字符为字符#,结束翻译和输出 .-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#i
47、nclude void main()char ch,nch;int count;int k;printf(Enter string.n);scanf(%c,&ch);/*FOUND*/while(ch=#)if(ch=0&ch=9)/*FOUND*/count=ch-0-1;scanf(%c,&nch);for(k=0;kcount;k+)printf(%c,nch);else/*FOUND*/printf(%f,ch);printf();scanf(%c,&ch);printf(#n);答案:=(答案 1)=while(ch!=#)=(答案 2)=count=ch-0+1;=(答案 3)=p
48、rintf(%c,ch);第2题(11.0分)题号:5/*-【程序改错】-题目:将一个字符串中第m 个字符开始的全部字符复制成为另一个字符串。程序中共有 4条错误语句,请改正错误。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void strcopy(char*str1,char*str2,int m)/*FOUND*/char p1,p2;int i,j;/*FOUND*/=str1+m;p2=str2;/*FOUND*/if(*p1);*p2+=*p1+;*p2=0;main()int i,m;char*p1,*p2,str180,str280;p1=st
49、r1;p2=str2;gets(p1);scanf(%d,&m);/*FOUND*/strcat(str10,str20,m);puts(p1);puts(p2);答案:=(答案 1)=char*p1,*p2;=或=char*p2,*p1;=(答案 2)=p1=str1+m-1;=或=p1=-1+str1+m;=(答案 3)=while(*p1)=(答案 4)=strcopy(str1,str2,m);五、程序设计共1题(共计 14 分)第1题(14.0分)题号:377/*-【程序设计】-题目:编写函数实现两个数据的交换,在主函数中输入任意三个数据,调用函数对这三个数据从大到小排序。-注意:部
50、分源程序给出如下。请勿改动主函数main 和其它函数中的任何内容,仅在函数的花括号中填入所编写的若干语句。-*/#include void swap(int*a,int*b)/*Program*/*End */main()int x,y,z;scanf(%d%d%d,&x,&y,&z);if(xy)swap(&x,&y);if(xz)swap(&x,&z);if(yz)swap(&y,&z);printf(%3d%3d%3d,x,y,z);yzj();getch();yzj()FILE*IN,*OUT;int m,n;int i2;int o;IN=fopen(in.dat,r);if(IN=