《2012年10套大学计算机C语言期末考试复习试题及答案甄选.pdf》由会员分享,可在线阅读,更多相关《2012年10套大学计算机C语言期末考试复习试题及答案甄选.pdf(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.2012 年 10 套大学计算机 C 语言期末考试复习试题及答案(优选.)二、单项选择共30题(共计30分)1.执行下面程序后,输出结果是(A)。main()a=45,b=27,c=0;c=max(a,b);printf(%dn,c);intmax(x,y)intx,y;int z;if(xy)z=x;elsez=y;return(z);A:45B:27C:18D:72第2题下列数组说明中,正确的是(A)。A:int array4;B:int array;C:int array5;D:int array3;第3题下面有关 for 循环的正确描述是(D)A:for 循环只能用于循环次数已经确定
2、的情况B:for循环是先执行循环体语句,后判断表达式C:在 for 循环中,不能用 break语句跳出循环体D:for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来第4题以下程序的输出结果是(D).main()inti,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=3B:i=1,j=1,k=2C:i=4,j=2,k=4D:i=1,j=1,k=3第5题若有下列定义,则对a数组元素地址的正确引用是(C).int a5,*p=a;A:*(p+5)B:*p+2C:*(a+2)D
3、:*&a5第6题下列选项中正确的语句组是(D)。A:chars8;s=Beijing;B:char*s;s=Beijing;C:char s8;s=Beijing;D:char*s;s=Beijing;第7题若变量 a,i 已正确定义,且 i 已正确赋值,合法的语句是(C)A:a=int(i);B:a=1C:+i;D:a=a+=5;第8题以下字符中不是转义字符的是(C)。A:aB:bC:cD:第9题下列定义不正确的是1/36doc 格式 可编辑.(C)。A:#define PI 3.141592B:#define S345C:int max(x,y);int x,y;D:static char
4、 c;第10题 char h,*s=&h;可将字符H 通过指针存入变量 h 中的语句是(B).A:*s=H;B:*s=H;C:s=H;D:s=H第11题(1.0分)题号:690设 char 型变量 x 中的值为10100111,则表达式(2+x)(3)的值是()。A:10101001B:10101000C:11111101D:01010101答案:D第12题(1.0分)题号:2381设以下变量均为 int 类型,表达式的值不为7的是()A:x=y=6,x+y,x+1B:x=y=6,x+y,y+1C:x=6,x+1,y=6,x+yD:y=6,y+1,x=y,x+1答案:C第13题(1.0分)题号
5、:3124若有说明 int a34;则对 a 数组元素的正确引用是().A:a24B:a1,3C:a1+10D:a(2)(1)答案:C第14题(1.0分)题号:679在 C 语言中,形参的缺省存储类是()。A:autoB:registerC:staticD:extern答案:A第15题(1.0分)题号:1343C 语言源程序的基本单位是().A:过程 B:函数C:子程序 D:标识符答案:B第16题(1.0分)题号:3023C 语言程序中必须有的函数是().A:#include stdio.hB:mainC:printfD:scanf答案:B第17题(1.0分)题号:3228有定义:int a=
6、8,b=5,c;,执行语句 c=a/b+0.4;后,c 的值为()A:1.4B:1C:2.0D:2答案:B第18题(1.0分)题号:640以下对二维数组 a 的正确说明是()。A:int a3B:float a(3,4)C:double a14D:float a(3)(4)答案:C2/36doc 格式 可编辑.第19题(1.0分)题号:2884以下标识符中,不能作为合法的 C 用户定义标识符的是().A:answerB:toC:signedD:_if答案:C第20题(1.0分)题号:652在 C 语言中,引用数组元素时,其数组下标的数据类型允许是()。A:整型常量B:整型表达式C:整型常量或整
7、型表达式D:任何类型的表达式答案:C第21题(1.0分)题号:381以下标识符中,不能作为合法的 C 用户定义标识符的是()。A:answerB:toC:signedD:_if答案:C第22题(1.0分)题号:2898已知 year 为整型变量,不能使表达式(year%4=0&year%100!=0)|year%400=0的值为 真的数据是().A:1990B:1992C:1996D:2000答案:A第23题(1.0分)题号:177以下描述中,正确的是()。A:预处理是指完成宏替换和文件包含中指定的文件的调用B:预处理指令只能位于C源文件的开始C:C 源程序中凡是行首以#标识的控制行都是预处理
8、指令D:预处理就是完成 C 编译程序对 C 源程序第一遍扫描,为编译词法和语法分析作准备答案:C第24题(1.0分)题号:156执行下列语句后的输出为()。int j=-1;if(j1;i-)for(j=1;ji;j+)3/36doc 格式 可编辑.putchar(#);A:无 B:#C:#D:#答案:B第27题(1.0分)题号:2830下列程序的输出结果是().main()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+;break;pr
9、intf(a=%d,b=%dn,a,b);A:a=1,b=0B:a=2,b=1C:a=1,b=1D:a=2,b=2答案:B第28题(1.0分)题号:573C 语言中运算对象必须是整型的运算符是()。A:%=B:/C:=D:=答案:A第29题(1.0分)题号:647以下能对二维数组 a 进行正确初始化的语句是()。A:int a2=1,0,1,5,2,3;B:int a3=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
10、,3;C:int c100100=0;D:intd3=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;4/36doc 格式 可编辑./*SPACE*/v=【?】;s1=a*b;/*SPACE*/s2=【?】;s3=a*c;returnv;main()int v,l,w,h;clrscr();printf(ninputlength,width and height:);/*S
11、PACE*/scanf(%d%d%d,【?】,&w,&h);/*SPACE*/v=【?】;printf(v=%ds1=%ds2=%ds3=%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/*-【程序填空】-题目:给定程序中函数 fun 的功能是:从低位开始取出长整型变量 s 中奇数位上的数,依次构成一个新数放在 t 中。-*/#include#include void fun(long s,long*t)long
12、 sl=10;s/=10;/*SPACE*/*t=s【?】10;while(s0)/*SPACE*/5/36doc 格式 可编辑.s=【?】;/*SPACE*/*t=s%10*sl【?】;/*SPACE*/sl=sl【?】10;main()long s,t;clrscr();printf(nPleaseenters:);scanf(%ld,&s);fun(s,&t);printf(The result is:%ldn,t);答案:=(答案1)=%=(答案2)=s/100=(答案3)=+*t=(答案4)=*四、程序改错共2题(共计22分)第1题(11.0分)题号:383/*-【程序改错】-题目:
13、给定程序的功能是:读入一行英文文本,将其中每个单词的最后一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。例如,若输入 I am a student to takethe examination.,则应输出I aM A studenT tOtakEthEexamination.。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include conio.h#include stdio.h#include ctype.h#include string.hup1st(char*p)/*FOUND*/integer k=0;for(;*p;p+)if(k)/
14、*FOUND*6/36doc 格式 可编辑.*/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(nnBeforechanging:n%s,chrstr);up1st(chrstr);printf(nAfter changing:n%s,chrstr);答案:=(答案1)=int k=0;=(答案2)=if(*p=)=(答案3)=*(p-1)
15、=toupper(*(p-1);第2题(11.0分)题号:431/*-【程序改错】-题目:编写函数 fun 求1000以内所有8的倍数之和。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#includestdio.h#define N 1000main()int sum;sum=fun(8);printf(%d 以内所有%d 的倍数之和为:%dn,N,8,sum);getch();int fun(int m)/*FOUND*/int s=0;i;/*FOUND*/for(i=1;iN;i+)/*FOUND*/if(i/m=0)s+=i;7/36doc 格式 可编辑.return
16、 s;答案:=(答案1)=ints=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)/*Program*/*End*/#define N 30#include stdlib.h#include stdio.hmain()int aN,i,k;clrscr();for(i=0;
17、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;8/36doc 格式 可编辑.IN=fopen(in.dat,r);if(IN=NULL)printf(Read File Error);OUT=fopen(out.dat,w);if(OUT=NULL)printf(Write File Error);for(
18、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(aimin)min=ai;return(max-min);-二、单项选择共30题(共计30分)第1题(1.0分)题号:177以下描述中,正确的是()。A:预处理是指完成宏替换和文件包含中指定的文件的调用B:预处理指令只能位于 C 源文件的开始C:C 源程序中凡是行首以#标识的控制行都是预处理指令D:预处理就是完成
19、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:typedefv1int;B:typedefv2=int;C:typedef int v3;D:typedef v4:int;答案:C第4题(1.0分)题号:104以下运算符中,优先级最高的运算符是()。A:|B:%C:!D:=答案:C第5题(1.0分)题号:138以下程序的输
20、出结果是()。main()inti,j,k,a=3,b=2;9/36doc 格式 可编辑.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=3B:i=1,j=1,k=2C:i=4,j=2,k=4D:i=1,j=1,k=3答案:D第6题(1.0分)题号:2907以下程序段的执行结果是().doublex;x=218.82631;printf(%-6.2en,x);A:输出格式描述符的域宽不够,不能输出B:输出为21.38e+01C:输 出 为 2.2e+02D:输 出 为-2.14e2答案:C第7题(1.0分)题
21、号:152以下程序的运行结果是()。main()int n;for(n=1;ny?+x:+y 的值为().int x=1,y=2,z=3;A:2B:3C:6D:5答案:C第19题(1.0分)题号:526用户定义的函数不可以调用的函数是()。A:非整型返回值的 B:本文件外的C:main 函数 D:本函数下面定义的11/36doc 格式 可编辑.答案:C第20题(1.0分)题号:2567以下标识符中,不能作为合法的 C 用户定义标识符的是().A:a3_b3B:voidC:_123D:IF答案:B第21题(1.0分)题号:2401下面程序段的输出结果为()inta,b;b=(a=3*5,a*4,
22、a*5);printf(%d,b);A:60B:75C:65D:无确定值答案:B第22题(1.0分)题号:3063若 有 定 义:inta=7;floatx=2.5,y=4.7;则表达式 x+a%3*(int)(x+y)%2/4的值是().A:2.500000B:2.750000C:3.500000D:0.000000答案:A第23题(1.0分)题号:3129若有说明:int a4=0,0;则下面不正确的叙述是().A:数组 a 的每个元素都可得到初值0B:二维数组a的第一维大小为1C:因为二维数组 a 中第二维大小的值除经初值个数的商为 1,故数组 a 的行数为1D:有元素a00和a01可得
23、到初值 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分)题号:3016与实际参数为实型数组名相对应的形式参数不可以定义为().A:floata;B:float*a;C:float a;D:float(*a)3;答案:C第26题(1.0分)题号:515int i,j,a23;按照数组 a 的元素在内存的排列次序,不能将数1,2,3,4,5,6存入a数组的是()。A:for(i=0;i2;i+)for(j=0
24、;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;12/36doc 格式 可编辑.答案:D第27题(1.0分)题号:2799下列运算符中,不属于关系运算符的是().A:C:=D:!答案:D第28题(1.0分)题号:662C 语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是()。A:voidB:intC:floatD:double答案:B第29题(1.0分)题号:196若有下列定义,则对 a 数组元素地址的正确引用是
25、()。int a5,*p=a;A:*(p+5)B:*p+2C:*(a+2)D:*&a5答案:C第30题(1.0分)题号:2993下列程序段的输出结果为().int a=7,b=9,t;t=a*=ab?a:b;printf(%d,t);A:7B:9C:63D:49答案:C三、程序填空共2题(共计24分)第1题(12.0分)题号:591/*如果 ab,就将两个数的位置调换;否则,保持不变。*/main()int a,b,temp;printf(nPleaseinput two int number:);scanf(%d%d,&a,&b);if(ab)/*SPACE*/【?】;/*SPACE*/a=
26、【?】;b=temp;printf(%d,%dn,a,b);答案:=(答案1)=temp=a=(答案2)=b第2题(12.0分)题号:30/*-【程序填空】13/36doc 格式 可编辑.-题目:以下程序的功能是用冒泡法对数组a 进行由小到大的排序。-*/void 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()inti,a10=3,7,5,1,2,8,6,4,10,9;/*SPACE*/【?】;for(i=0;
27、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题(共14/36doc 格式 可编辑.计22分)第1题(11.0分)题号:417/*-【程序改错】-题目:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include stdio.hmain()int i,a,n=1;/*FOUND*/while(n7)doscanf(%d,&a);/
28、*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(a50|a1);=(答案3)=for(i=1;i=a;i+)第2题(11.0分)题号:429/*-【程序改错】-题目:求0-7这8个数字所能组成的奇数个数。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-15/36doc 格式 可编辑.-*/#include stdio.hmain()/*FOUND*/long sum=4
29、;s=4;int j;for(j=2;j=8;j+)/*FOUND*/printf(n%d,sum);/*FOUND*/if(j2)s*=7;elses*=8;sum+=s;printf(nsum=%ld,sum);getch();答案:=(答案1)=long sum=4,s=4;=(答案2)=printf(n%ld,sum);=(答案3)=if(j=2)=或=if(j3)五、程序设计共1题(共计14分)第1题(14.0分)题号:49/*-【程序设计】-题目:请用for 循环编写编写函数 fun,函数的功能是:计算 n 门课程的平均值,计算结果作为函数值返回。例如,若有5门课程的成绩是:92,
30、76,69,58,88,则 函 数 的 值 为76.600000。-注意:部分源程序给出如下。请勿改动主函数 main 和其它 函 数 中 的 任 何 内容,仅在函数 fun 的花括号中填入 所 编 写 的 若 干 语句。-*/#include stdio.hfloat fun(int a,int n)/*Program*/16/36doc 格式 可编辑./*/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
31、(IN=NULL)printf(PleaseVerifyCurrerntDir.ItMayChanged);OUT=fopen(18.out,w);if(OUT=NULL)printf(PleaseVerifyCurrentDir.ItMayChanged);for(j=0;j10;j+)for(i=0;i5;i+)fscanf(IN,%d,&iINi);fOUT=fun(iIN,5);fprintf(OUT,%fn,fOUT);Endfclose(IN);fclose(OUT);答案:-int i;float y=0;for(i=0;in;i+)y+=ai;y=y/n;return y;-一
32、、判断共10题(共计10分)第1题(1.0分)题号:7在 C 语言中,此定义和语句是The合法的:Beenumaa a=5,b,cbb;bb=(enum aa)5;答案:Y第2题(1.0分)题号:1475表达式1/4+2.75的值是3.The答案:NBe第3题(1.0分)题号:1510有数组定义inta22=1,2,3;则 a01的值为0.答案:Y第4题(1.0分)题号:1262C 语言规定:在一个源程序中,main 函数的位置必须在最开始.17/36doc 格式 可编辑.答案:N第5题(1.0分)题号:1263for(表达式 1;表达式 3)可理解为 for(表达式1;1;表达式3).答案:
33、Y第6题(1.0分)题号:1512将一个字符串 abc赋给字符串变量 str 的方法是 str=abc.答案:N第7题(1.0分)题号:22关系运算符=与=的优先级相同。答案:N第8题(1.0分)题号:1252break 语句可用于循环体内,它将退出该重循环.答案:Y第9题(1.0分)题号:1504语句 char*p=Turbo C的含义是将字符串赋给字符型指针变量 p.答案:N第10题(1.0分)题号:1241在标准 C 中,while 和 do_while的功能完全相同.答案:N二、单项选择共30题(共计30分)第1题(1.0分)题号:3148C 语言允许函数类型缺省定义,此时函数值隐含的
34、类型是().A:floatB:intC:longD:double答案:B第2题(1.0分)题号:624以*于运算符优先顺序的描述中正确的是()。A:关系运算符 算术运算符 赋值运算符逻辑运算符B:逻辑运算符 关系运算符 算术运算符赋值运算符C:赋值运算符 逻辑运算符 关系运算符算术运算符D:算术运算符 关系运算符 赋值运算符C:*D:&答案:A第11题(1.0分)题号:3212C 语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符()A:必须为字母 B:必须为下划线C:必须为字母或下划线D:可以是字母,数字和下划线中任一字符答案:C第12题(1.0分)题号:416以下程序的输出结
35、果为()。main()inti=010,j=10;19/36doc 格式 可编辑.printf(%d,%dn,+i,j-);A:11,10B:9,10C:010,9D:10,9答案:B第13题(1.0分)题号:542若有int*p=(int*)malloc(sizeof(int);则向内存申请到内存空间存入整数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:只有
36、同一类型变量的地址才能放到指向该类型变量的指针变量之中D:指针变量可以由整数赋,不能用浮点赋答案:D第15题(1.0分)题号:687表达式,0 x13&0 x17的值是()。A:0 x17B:0 x13C:0 xf8D:0 xec答案:B第16题(1.0分)题号:3000int a=1,b=2,c=3;if(ac)b=a;a=c;c=b;则 c 的值为().A:1B:2C:3D:不一定答案:B第17题(1.0分)题号:138以下程序的输出结果是()。main()inti,j,k,a=3,b=2;i=(-a=b+)?-a:+b;j=a+;k=b;printf(i=%d,j=%d,k=%dn,i,
37、j,k);A:i=2,j=1,k=3B:i=1,j=1,k=2C:i=4,j=2,k=4D:i=1,j=1,k=3答案:D第18题(1.0分)题号:441下列语句中,不正确的是()。A:static char a2=1,2;B:static int a2=1,2;C:static char a2=1,2,3;D:static char a2=1;答案:C第19题(1.0分)题号:477以下对枚举类型名的定义中20/36doc 格式 可编辑.正确的是()。A:enum a=sum,mon,tue;B:enum a sum=9,mon=-1,tue;C:enum a=sum,mon,tue;D:e
38、num a sum,mon,tue;答案:B第20题(1.0分)题号:661以下正确的描述是:在 C 语言程序中()。A:函数的定义可以嵌套,但函数的调用不可以嵌套B:函数的定义不可以嵌套,但函数的调用可以嵌套C:函数的定义和函数的调用均不可以嵌套D:函数的定义和函数的调用均可以嵌套答案:B第21题(1.0分)题号:3103以下描述中正确的是().A:由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B:do-while 循环由 do 开始,用while 结束,在 while(表达式)后面不能写分号C:在 do-while 循环体中,一定要有能使whil
39、e 后面表达式的值变为零(假)的操作D:do-while 循环中,根据情况可以省略 while答案:C第22题(1.0分)题号:2994下列表达式中,可作为 C 合法表达式的是().A:3,2,1,0B:(3,2,1,0)C:3=2=1=0D:3/2/1/0答案:B第23题(1.0分)题号:591设 有int x=11;则 表 达 式(x+*1/3)的 值 是()。A:3B:4C:11D:12答案:A第24题(1.0分)题号:622putchar 函数可以向终端输出一个()。A:整型变量表达式值B:实型变量值C:字符串 D:字符或字符型变量值答案:D第25题(1.0分)题号:3232有如下定义
40、#define D 2intx=5;float y=3.83;char c=D;则下面选项中错误的是()A:x+;B:y+;C:c+;D:D+;答案:D第26题(1.0分)题号:196若有下列定义,则对 a 数组元21/36doc 格式 可编辑.素地址的正确引用是()。int a5,*p=a;A:*(p+5)B:*p+2C:*(a+2)D:*&a5答案:C第27题(1.0分)题号:2377下列数据中,不合法的C语言实型数据的是()A:0.123B:123e3C:2.1e3.5D:789.0答案:C第28题(1.0分)题号:2872在位运算中,操作数每右移一位,其结果相当于().A:操作数乘以2
41、B:操作数除以2C:操作数乘以 16D:操作数除以16答案:B第29题(1.0分)题号:685在位运算中,操作数每左移一位,其结果相当于()。A:操作数乘以2B:操作数除以2C:操作数除以4D:操作数乘以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
42、D:61,141,k=%12答案:C三、程序填空共2题(共计24分)第1题(12.0分)题号:605/*用辗转相除法求解两个整数的最大公约数。*/main()int a,b,r;scanf(%d%d,&a,&b);/*SPACE*/【?】;while(r!=0)a=b;/*SPACE*/【?】;r=a%b;22/36doc 格式 可编辑.printf(%d,b);答案:=(答案1)=r=a%b=(答案2)=b=r=(答案2)=i*j四、程序改错共2题(共计22分)第1题(11.0分)题号:441/*-第2题(12.0分)题号:606/*输出九九乘法表*/*1*1=11*2=21*3=31*4=
43、4.1*9=9*/*2*1=12*2=42*3=62*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,【?】);printf(n);答案:=(答案1)=i=1【程序改错】-题目:输入字符序列,字符序列以特殊字符“#”结束。程序从前向后依次读入字符,并翻译出新的字符输出。翻译的规则是:如果当前读入的字符是数字符,如果该字符的面值为 n,则它的后一个字符(包括数字符)需重复输出 n+1次如果当前读入的字符不是数字符,则输出该字符。输出时,以上述一次翻译为一组,
44、不同组间输出用一个空白字符隔开。翻译直至当前读入的字符为字符#,结束翻译和输出.-23/36doc 格式 可编辑.注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#includevoid 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)
45、;printf();scanf(%c,&ch);printf(#n);答案:=(答案1)=while(ch!=#)=(答案2)=count=ch-0+1;=(答案3)=printf(%c,ch);第2题(11.0分)题号:5/*-【程序改错】-题目:将一个字符串中第 m个字符开始的全部字符复制成为另一个字符串。程序中共 有4条错误语句,请改正错误。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/24/36doc 格式 可编辑.#includevoidstrcopy(char*str1,char*str2,int m)/*FOUND*/char p1,p2;int i,j;/*FO
46、UND*/=str1+m;p2=str2;/*FOUND*/if(*p1);*p2+=*p1+;*p2=0;main()int i,m;char*p1,*p2,str180,str280;p1=str1;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);五、
47、程序设计共1题(共计14分)第1题(14.0分)题号:377/*-【程序设计】-题目:编写函数实现两个数据的交换,在主函数中 输 入 任 意 三 个 数据,调用函数对这三个数据从大到小排序。-注意:部分源程序给出如下。请勿改动主函数main 和其它函数中的任何内容,仅在函数的花括号中填入所编写的若干语句。25/36doc 格式 可编辑.-*/#includevoid 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)
48、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=NULL)printf(Read File Error);OUT=fopen(out.dat,w);if(OUT=NULL)printf(Write File Error);for(n=0;n3;n+)for(m=0;m=10 or a=0|a=10&a=10a=0答案:D第11题(1.0分)题号:93以下运算符中,优先级最高的运算符是()。A:?:B:+C:&D:,答
49、案:B第12题(1.0分)题号:88下列字符序列中,可用作C标识符的一组字符序列是()。A:S.b,sum,average,_aboveB:class,day,lotus_1,2dayC:#md,&12x,month,student_n!D:D56,r_1_2,name,_st_1答案:D第13题(1.0分)题号:2981下列标识符中,不合法的 C 语言用户自定义标识符是().A:printfB:enum28/36doc 格式 可编辑.C:_D:sin答案:B第14题(1.0分)题号:2983下列程序段的输出结果为().float k=0.8567;printf(%06.1d%,k*100);
50、A:0085.6%B:0085.7%C:0085.6%D:.857答案:B第15题(1.0分)题号:525C 语言中不可以嵌套的是(B)。A:函数调用 B:函数定义C:循环语句 D:选择语句答案:B第16题(1.0分)题号:687表达式,0 x13&0 x17的值是()。A:0 x17B:0 x13C:0 xf8D:0 xec答案:B第17题(1.0分)题号:2912已知字母a的ASCII十进制代码为97,则执行下列语句后的输出结果为().char a=a;a-;printf(%d,%cn,a+2-0,a+3-0);A:b,cB:a-运算不合法,故有语法错C:98,cD:格式描述和输出项不匹配