《C语言程序设计期末考试试题及其答案.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计期末考试试题及其答案.pdf(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、单项选择题(本大题共 20 题,每题 2 分,共 40 分)1、以下不是 C 语言的特点的是()A、C 语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C 语言可以直接对硬件进行操作 D、C 语言移植性好 2、以下不正确的 C 语言标识符是()A、ABC B、abc C、a_bc D、ab.c 3、一个 C 语言程序是由()A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等 5 个特性,对另外 4 个特性的描述中错误的是()A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量 a 是整型,f 是实
2、型,i 是双精度型,则表达式 10+a+i*f 值的数据类型 为()A、int B、float C、double D、不确定 6、在 C 语言中,char 型数据在内存中的存储形式是()A、补码 B、反码 C、源码 D、ASCII 码 7、有如下程序,输入数据:12345M678cR后(表示回车),x 的值是()。#include main()int x;float y;scanf(%3d%f,&x,&y);A、12345 B、123 C、45 D、345 8、若有以下定义 int a,b;float x,则不正确的赋值语句是()A、a=1,b=2 B、b+;C、a=b=5 D、b=int(x
3、);9、以下程序的执行结果是()#include int i=10,j=10;printf(%d,%dn,+i,j-);A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母 A 的 ASCII 码是 65,以下程序的执行结果是()#include main()char c1=A,c2=Y;printf(%d,%dn,c1,c2);A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是()A、B、十 C、%D、!12、设 x、y 和 z 是 int 型变量,且 x3,y4,z5,则下面表达式中值为 0 是()。A、x&y B、xy C、x
4、y+z&y-z D、!(xy)!z 1)13、判断 char 型变量 cl 是否为小写字母的正确表达式为()A、ac1fz B、(c1a)&(c1z)C、(a=c1)(zc1)D、(c1a)&(c1z)14、字符串a在内存中占据的字节个数为()A、0 B、1 C、2 D、3 15、下面有关 for 循环的正确描述是()A、for 循环只能用于循环次数已经确定的情况 B、for 循环是先执行循环体语句,后判定表达式 C、在 for 循环中,不能用 break 语句跳出循环体 D、for 循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是()#include main(
5、)int num=0;while(numb!=c 的值是_ 4、下列程序运行后的输出结果是_#include main()int i,j;for(i=4;i=1;i-)printf(*);for(j=1;j=4-i;j+)printf(*);printf(n);5、若有定义:int a34=1,2,0,4,6,8,10;则初始化后,a12得到的初值是_ a21得到的初值是_ 6、在 C 语言中,二维数组元素的内存中的存放顺序是_ 三、程序分析题(本大题共 2 题,每题 4 分,共 8 分,描述程序功能并写出程序执行结果)1、#include main()int a,s,n,count;a=2;
6、s=0;n=1;count=1;while(count=7)n=n*a;s=s+n;+count;printf(“s=%d”,s);2、#include main()int a=33=1,3,5,7,9,11,13,15,17,sum=0,i,j;for(i=0;i3;i+)for(j=0;j3;j+)if(i=j)sum=sum+aj;printf(“sum=%dn”,sum);四、编程题(本大题共 4 题,每题 8 分,共 32 分)1、编写摄氏温度、华氏温度转换程序。要求:从键盘输入一个摄氏温度,屏 幕就显示对应的华氏温度,输出取两位小数。转换公式:F=(C+32)9/5。2、试编程判断
7、输入的正整数是否既是 5 又是 7 的正倍数。若是,则输出 yes;否则输出 no。3、判断数 m 是否为素数(只能被 1 和它本身整除的整数)?4、对 15 个数进行排序,按从小到大的顺序输出。C 语言程序设计期末考试试卷(A 卷)评分标准及标准答案 一、单项选择题(本大题共 20 题,每题 2 分,共 40 分)1、B 2、D 3、B 4、B 5、C 6、D 7、B 8、B 9、A 10、D 11、C 12、D 13、D 14、C 15、D 16、C 17、C 18、D 19、C 20B 二、填空题(本大题共 10 空,每空 2 分,共 20 分)1、顺序结构 分支结构 循环结构 2、单精
8、度型(或:float 型)双精度型(或;double 型 3、1 4、*5、0 6 6、按行主顺序存放 三、程序分析题(本大题共 2 题,每题 4 分,共 8 分)能正确表达出题目的含义、要求,即可得分,部分正确可按比例得分,否则不得分。1、功能:求 S=0+2+4+8+16+32+64+128 和。输出结果:s=254 2、功能:出矩形阵 a 的主对角线上的元素之和。输出结果:27 四、编程题(本大题共 4 题,每题 8 分,共 32 分)能正确表达出题目的含义、要求,且格式正确,即可得满分,不要求形式完全 相同。部分正确可按比例得分,否则不得分。1、#include main()float
9、 c,f;printf(input c:);.2 分 scanf(%f,&c);.2 分 f=(c+32.0)*9.0/5.0;.2 分 printf(F=%.2f n,f);.2 分 2、#include main()int x;scanf(%d,&x);.2 分 if(x%5=0&x%7=0).2 分 printf(yes);.2 分 else printf(no);.2 分 3、#include#include main()int m,i,k;scanf(%dn,&m);k=sqrt(m);.2 分 for(i=2;ik)printf(m is a prime number!n);.2
10、分 4、#include main()int i,j,a15,t;printf(input 15 numbers:n);for(i=0;i15;i+)scanf(%d,&a);.2 分 for(j=0;j15;j+).2 分 for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;.2 分 for(i=0;i15;i+)printf(%6d,a)一 选择题 1以下关于运算符优先顺序的描述中正确的是(C )。A关系运算符 算术运算符 赋值运算符 逻辑与运算符 B逻辑 运算符 关系运算符 算术运算符 赋值运算符 C赋值运算符 逻辑与运算符 关系运算符 算术运算符 D算术运算符 关系运算
11、符 赋值运算符 逻辑与运算符 2下列选项中合法的变量名是_C_ A#define B int C a594_3 D abs(x)3以下正确的描述是(A )。A break 语句的作用是结束整个循环的执行 B在 C 程序中,注释说明只能位于一条语句的后面 C 在循环体内使用 break 语句或 continue 语句的作用相同 D 从多层循环嵌套中退出时,只能使用 goto 语句 4以下说法正确的是(C )A#define 和 printf 都是 C 语句。B#define 是 C 语句,而 printf 不是。C若程序中要调用数学函数,必须在文件开头输入语句#include“math.h”D#
12、define 和 printf 都不是 C 语句。5下面的函数定义正确的是_D_ A)float fun(float x;float y)return x*y;B)float fun(float x,y)return x*y;C)float fun(x,y)int x,y;return x*y;D)int fun(int x,int y)return x*y;6执行下面语句后的输出为(D)int i=-1;if(i=0|b=0)&(a0|b=0&b=0)|(a0&b0)&(a+b0)&(a-b=y&cha&!y)的值是(C )A)0 B)语法错 C)1 D)假 17下列关于单目运算符+、-的叙
13、述中正确的是(D )A)它们的运算对象可以是任何变量和常量 B)它们的运算对象可以是 char 型变量和 int 型变量,但不能是 float 型变量 C)它们的运算对象可以是 int 型变量,但不能是 double 型变量和 float 型变量 D)它们的运算对象可以是 char 型变量、int 型变量和 float 型变量 18下面的程序(B)void main()int x=3;do printf(“%dn”,x-=2);while(!(-x);A).输出的是 1 B).输出的是 1 和-2 C).输出的是 3 和 0 D).是死循环 19如下程序:void main()int a=6;
14、printf(“%dn”,(a+=3,2*a);执行后,输出结果是(D )A)9 B)6 C)2 D)18 20若有以下说明和语句,请选出哪个是对 C 数组元素的正确引用(D)int c45,(*cp)5;cp=c;A).cp+1 B).*(cp+3)C).*(cp+1)+3 D).*(*cp+2)21下面程序的输出是(B )main()int x=023;printf(%dn,-x);A).17 B).18 C).23 D).24 22执行下列程序的结果是(B)main()float x=1,y;y=+x*+x;printf(“%fn”,y);A).9.000000 B).6.000000
15、C).1.000000 D).程序有错误 23下面程序的输出是(A)main()int a10=1,2,3,4,5,6,7,8,9,10,*p=a;printf(%dn,*(p+2);A).3 B).4 C).1 D).2 24执行下面程序中的输出语句后,a 的值是(B )main()int a;printf(%dn,(a=3*5,a*4,a+5);A).65 B).20 C).15 D).10 25下面程序的输出是(C)main()int a=-1,b=4,k;k=(a+=0)&(!(b-=0);printf(%d%d%d n,k,a,b);A).0 0 3 B).0 1 2 C).1 0
16、3 D).1 1 2 26设有如下的程序段:char str=Hello;char *ptr;ptr=str;执行完上面的程序段后,*(ptr+5)的值为(B )A).0 B).0 C).不确定的值 D).0的地址 27在宏定义#define PI 3.14159 中,用宏名 PI 代替一个(C)A).单精度数 B).双精度数 C).常量 D).字符串 28若 i 是整型变量,pb 是基本型为整型的指针变量,则正确的赋值表达式是(A )A).pb=&i B).pb=i C).*pb=&i D).*pb=*i 29有以下程序段 int m=0,n=0;char c=d;scanf(%d%c%d,
17、&m,&c,&n);printf(%d,%c,%dn,m,c,n);若从键盘上输入:6D6,则输出结果是(C )A)0,d,6 B)6,d,6 C)6,D,6 D)6,D,0 30printf()函数中用到格式符%-7s,其中数字 7 表示输出的字符串占用 7 列。如果字符串长度小于 7,则输出按方式(A )A)从左起输出该字串,右补空格 B)按原字符长从左向右全部输出 C)右对齐输出该字串,左补空格 D)输出错误信息 31以下能正确地定义整型变量 a,b 和 c 并为其赋初值 3 的语句是(A)A)int a=3,b=3,c=3;B)int a,b,c=3;C)a=3,b=3,c=3;D)a
18、=b=c=3;32以下程序的输出结果是(D )void main()int x=6,y=6,i;for(i=2;x4;y=+i)printf(%d,%d ,x-,y);A)5,5 5,3 B)6,6 2,3 C)6,5 5,2 D)6,6 5,3 33以下程序的输出结果是(B)void main()int w=4;int fun(int k);fun(w);printf(n);fun(int k)if(k0)fun(k-1);printf(%d,k);A)4 3 2 1 B)0 1 2 3 4 C)1 2 3 4 D)4 3 2 1 0 34下面程序的输出是(B)main()int x=023
19、;printf(%dn,-x);A).17 B).18 C).23 D).24 35以下程序的输出结果是(C )main()char ch34=123,456,78,*p3;int i;for(i=0;i3;i+)pi=chi;for(i=0;i3;i+)printf(%s,pi);A).123456780 B).123 456 780 C).12345678 D).147 36下面程序的输出结果为(B)char *alpha6=ABCD,EFGH,IJKL,MNOP,QRST,UVWX;char *p;void main()int i;p=alpha;for(i=0;i4;i+)printf
20、(%c,(*p)i);printf(n);A).EIMC B).ABCD C).EFGH D).AEIM 37根据下面的定义,能打印出字母 M 的语句是(D )struct person char name9;int age;struct person class10=John,17,Paul,19,Mary,18,Adam,16 A).printf(%cn,class3.name);B).printf(%cn,class3.name1);C).printf(%cn,class2.name1);D).printf(%cn,class2.name0);38有以下程序 void main()int
21、 p7=11,13,14,15,16,17,18,i=0,k=0;while(i7&pi%2)k=k+pi;i+;printf(%dn,k);执行后输出结果是(D )A)58 B)56 C)45 D)24 39以下程序的输出结果是(A )void main()int i,x33=9,8,7,6,5,4,3,2,1,*p;p=&x11;for(i=0;i6;i+=3)printf(%d,pi);A)5 2 B)5 1 C)5 3 D)9 7 40以下程序的输出结果是(A )#include void main()char*a=”abcdefghi”;void fun(char*s);fun(a)
22、;puts(a);void fun(char*s)int x,y;char c;for(x=0,y=strlen(s)-1;xy;x+,y-)c=sy;sy=sx;sx=c;A).ihgfedcba B).abcdefghi C).abcdedcba D).ihgfefghi 41void main()int i,a=5,6,9,11;for(i=0;i4;i+)if(ai%2=0)continue;printf(%d ,ai);执行后输出结果是(C )A)编译出错 B 6 C)5 9 11 D)5 6 9 11 42以下对数组的定义正确的是(D )A)int x(10);B)int x5=0
23、,1,2,3,4,5;C)int n=10;xn;D)int x=0,1,2,3,4;43.以下叙述中不正确的是(B )A)switch 是多分支结构语句 B)continue 语句的作用是使程序的执行流程跳出包含它的所有循环 C)break 语句只能用在循环体内和 switch 语句体内 D)在循环体内使用 break 语句和 continue 语句的作用不相同 44如下程序:void main()int i=1,j=2,k=3;if(j+|k+)&i+)printf(%d,%d,%dn,i,j,k);执行后输出结果是(D )A)1,2,3 B)2,2,4 C)2,3,4 D)2,3,3 4
24、5以下叙述中,不正确的是(C )A)算法应该具有有穷性、确定性以及有效性等特点 B)算法可以用传统流程图、N-S 流程图以及伪代码等形式来描述 C)基本结构只有顺序、选择、循环 3 种结构 D)结构化程序设计的思想是自顶向下、逐步细化、模块化设计以及结构化编码 46在 C 语言中,函数返回值的类型最终取决于(D )A)函数定义时形参的类型 B)return 语句中表达式值的类型 C)调用函数时主函数所传递的实参类型 D)函数定义时在函数首部所说明的函数类型 47以下程序的输出结果是(C)void main()int i;for(i=a;iname 49下面的程序输出是(B)int m=13;i
25、nt fun2(int x,int y)int m=3;return(x*y-m);main()int a=7,b=5;printf(%dn,fun2(a,b)/m);A).1 B).2 C).7 D).10 50下面的程序输出是(A)main()int x=100,a=10,b=20,ok1=5,ok2=0;if(ab)if(b!=15)if(!ok1)x=1;else if(ok2)x=10;x=-1;printf(%d n,x);A).-1 B).0 C).1 D).不确定的值 51若有以下定义:int a=1,2,3,4,5,6,7,8,9,10,*p=a;则值为 3 的表达式是(A)
26、A).p+=2,*(p+)B).p+=2,*+p C).p+=3,*p+D).p+=2,+*p 52下面程序的输出是(A)int aa33=2,4,6;void main()int i,*p=&aa00;for(i=0;i2;i+)if(i=0)aaii+1=*p+1;else +p;printf(%d,*p);A).23 B).26 C).33 D).36 53下面程序的输出是(D)void prtv(int *x)printf(%dn,+*x);void main()int a=25;prtv(&a);A.23 B.24 C.25 D.26 54以下程序的运行结果是(B)void main
27、()char a10=1,2,3,4,5,6,7,8,9,0;char *p;int i=8;p=a+i;printf(%sn,p-2);A)6 B)789 C)6 D)678 55执行以下 3 条语句之后,则 k 的值是_C_ int x=4,y=7;x+;y+=2;k=y%x;A)1 B)2 C)4 D)3 56以下程序段 for(k=0,m=4;m;m-=2)for(n=1;n 4;n+)k+;循环体语句”k+;”执行的次数是_C_ A)16 B)12 C)6 D)8 57 在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为(C )A)char=int1ong
28、int=floatdouble B)char int 1ong int=float=double C)charint 1ong int=floatdouble D)char=int =1ong int=float=1)&(x=50)&(x=1)|(x=50)|(x=1)&(x=50)&(x=1)|(x=50)|(x=60)61以下程序的输出结果是(D)#include main()char*p1,*p2,str50=ABCDEFG;p1=abcd;p2=efgh;strcpy(str+1,p2+1);strcpy(str+3,p1+3);printf(%s,str);A).AfghdEFG B
29、).Abfhd C).Afghd D).Afgd 62以下程序的输出结果是(A )main()int i;for(i=1;i=10 or a=10|a=10&a=10&ab?(bc?1:0):0;功能等价的是 A A if(ab)&(bc)k=1;B if(ab)|(bc)k=1 else k=0;C if(aB)k=1;else if(bC)k=1;else k=0;65.设 int x=2,4,6,8,y,*p=&x1;则执行语句 y=(*-p)+;后数组元素 x0的值为(B).A.2 B.3 C.4 D.5 66在下面关于函数的描述中错误的是(D )A在一个源文件中,如果函数定义在先,调
30、用在后,则不必声明该函数 B如果一个函数在一个源文件里定义,而调用在另一个源文件中,则必须在调用之前声明该函数 C函数的声明应使用函数原型 D在一个源文件中,如果自定义函数调用在先,定义在后,则不必声明该函数 67.若有 int a34=1,2,3,4,5,6,7,8,9,10,11,12;int(*q)3=a;*q=a0;则能够正确表示数组元素 a12的表达式是(C )。A.*(*q+1)2 B.*(*(q+5)C.*(*(q+1)+2)D.(*q+1)+2 68设 int x=1,3,5,7,9,11,13,*p=x;则不能正确引用数组元素的表达式是(B )A.*(p-)B.*(-p)C.
31、*(p+)D.*(+p)69.有以下函数 char*fun(char*p)return p;该函数的返回值是(B )A.无确切的值 B.形参 p 中存放的地址值 C.形参 p 自身的地址值 D.编译有错 70.在下面的引用定义中,正确的是(B )。A.int x,&y;y=x;B.int x,&y=x;C.int&y=x,x;D.float z;int x,y=&z;71执行下面程序段后,a 的值为(C )。int a,b;for(b=1,a=1;b=10)break;if(a%2=1)a+=5;continue;a-=3;A.2 B.6 C.10 D.8 72.执行下列程序段后,变量 i 的
32、值为(B )。#define MA(x,y)(x)*(y)int i=5;i=MA(i,i+1)-7;A.30 B.23 C.19 D.1 73.若有以下的说明:struct person char name20;int age;char sex;a=li ning,20,m,*p=&a;则对字符串 li ning 的引用方式不可以是(B)A.(*p).name B.p.name C.a.name D.p-name 74.若程序中定义了以下函数 double myadd(double a,double b)return(a+b);并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选
33、项中错误的说明是 A A.double myadd(double a,b);B.double myadd(double,double);C.double myadd(double b,double a);D.double myadd(double x,double y);75.若有以下的说明和语句,则在执行 for 语句后,*(*(pt+1)+2)表示的数组元素是(C )int t33,*pt3,k;for(k=0;k3;k+)ptk=&tk0;A.t20 B.t22 C.t12 D.t21 76在 C 语言中,080 是()A八进制数 B十进制数 C十六进制数 D非法数 77.整型变量 i
34、定义后赋初值的结果是(B)。int i=2.8*6;A12 B16 C17 D18 78for(i=0,x=0;!x&i=3;i+)循环的次数为(A )A4 B5 C1 D 无限循环 79若有如下程序段:int a=2,b=-1,c=2;if (ab)if(b0)c=0;else c+=1;cout”c=”c0;D.i+;82以下不能对二维数组 a 进行正确初始化的语句是(C )Aint a23=0;Bint a 3=1,2,0;Cint a23=1,2,3,4,5,6;Dint a 3=1,2,3,4,5,6;83以下合法的if语句是(D )。A.if(a=b)c+;B.if(ab)c+;C
35、.if(a=b)c+;D.if(a=b)c+;84字符串常量“I love china”在内存中存在需要(C )字节。注:每个单词之间有一个空格。A10 B12 C 13 D 14 二 填空题 1C 语言源程序的扩展名为.c,可执行文件的扩展名为_。.exe 2数组 int a35;共定义了_个数组元素。15 3C 程序由函数构成,C 程序总是从_开始执行.main()4 C 语言中,用_ 关键字来包含如 stdio.h 之类的头文件。include 5函数的返回值是通过函数中的_语句来获得的。return 6至少执行一次循环体的循环语句是 。dowhile 语句 7对于不带返回值的函数,应当
36、用关键字_定义函数。void 8多分支结构的程序,通常选用_语句来实现。switch 9若 char ch=25yi6 有以下语句,则编译后分配给数组 ch 的内存占用的字节数为_。6 10下面运算符 ,+=按照优先级从高到低排列顺序为_ _。+&|18getchar()函数的功能是 。从标准输入设备读取下一个字符 19写出下面表达式的值 6*4/7+8%3 _ 5 x=5;y=2;(x+)+y _ 7 8-4=5+3 _ 0 64-2?4%2:3 _ _ _ 0 x=2,y=2;x|!y _ 1 x=3;x+=x-=2 _ _ 2 20下面 invert 函数的功能是将一个字符串 str 的
37、内容颠倒过来,请填空。#include void invert(char str )int i,j,;k for(i=0,j=strlen(str);ij;i+,j-)-1 k=str i;str i=str j;strj=k;21下列程序是用递归的方法计算 fun(5)*10 的值。其中 fun(k)=fun(k-1)*k,当 k=0 时,fun(0)=3。请填空完成程序。#include void main()【1】int fun(int);coutfun(5)*10endl;int fun(【2】)int k if(k=0)【3】3 else return fun(k-1)*k;22 表
38、达式 45/2+(int)3.14159/2 的值是 【6】;设 a 的初值为 3,则表达式(int)(a+6.5)%2+(a=b=5)的值是 【7】。23.若有 int a=10,b=9,c;则在计算表达式 c=(a%11)+(b=3),c+=2 后,变量 c 的值为_15_.24若有 int x=1,y=1,z=1,t;则在表达式 t=+x|+y&+z 后,t 的值为_1_。三 程序阅读题 1以下程序的运行结果是 _1#include void main()int m=3;if(-m3)printf(%dn,-m);else printf(%dn,+m);2执行下面程序段后,输出结果是_
39、i=6 j=3 m=7#include int i=2;int fun(int x)int k,j=1;i=x*2;k=i+j;return k;void main()int m,j=3;m=fun(j);printf(“i=%d j=%d m=%dn”,i,j,m);3下面程序的输出是_ 12 void main()int arr10,i,k=0;for(i=0;i10;i+)arri=i;for(i=1;i4;i+)k+=arri+i;printf(%dn,k);4下面程序的输出结果是_234567#include#include#define MAX_COUNT 6 void fun()
40、;void main()int count;for(count=1;count=MAX_COUNT;count+)fun();void fun()static int i;i+=2;printf(%d,i-);5下面程序的输出是_6 void main()int a=2,4,6,*ptr=&a0;int x=8,y,z;for(y=0;y3;y+)z=(*(ptr+y)x)?*(ptr+y):x;printf(“%dn”,z);6下面程序的输出是_12 main()int arr10,i,k=0;for(i=0;i10;i+)arri=i;for(i=1;i4;i+)k+=arri+i;pri
41、ntf(%dn,k);7下面程序的输出结果是_ 2 4 int t(int x,int y,int cp,int dp)cp=x*x+y*y;dp=x*x-y*y;void main()int a=4,b=3,c=2,d=4;t(a,b,c,d);printf(%d%dn,c,d);8下面程序的正确运行结果是_str=abdef void main()static char str=”abcdef”;void abc(char str );abc(str);printf(“str=%sn”,str);void abc(char str )int a,b;for(a=b=0;stra!=0;a+
42、)if(stra!=c)strb+=stra;strb=0;9下面程序的输出结果是_10 int fun(int*x,int n)if(n=0)return x0;else return x0+fun(x+1,n-1);void main()int a=1,2,3,4,5,6;int k=fun(a,3);printf(“%dn”,k);10执行下面程序段后,输出结果是_ i=6,x=10 void main()int i,x;for(i=1,x=1;i=10)break;if(x%2=1)x+=5;continue;x-=3;printf(“i=%d,x=%dn”,i,x);11下面程序的执
43、行结果是_ 2 3 5 7 8 9#include void main()int a6=2,5,7,3,9,8;int i,j,t;printf(n);for(j=0;j5;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;for(i=0;i6;i+)printf(%d ,ai);12下列程序执行后,输出的结果是_ _ 4#include fun(int a)int b=0;static int c=3;a=c+,b+;return(a);void main()int a=2,i,k;for(i=0;i2;i+)k=fun(a+);printf “%dn”,k);13
44、下面程序若从键盘输入:Ref6ugcBDT8e,按回车键,最后的执行结果是_ n=2 m=4#include void main()int m=0,n=0;char c;while(c=getchar()!=n)if(c=A&c=0&c=9)n+;printf(n=%d m=%dn,n,m);14下面程序的执行结果是_74#include struct student int num;char name10;int score;struct student stu3=10101,Li Lin,86,10102,Zhang Fun,65,10104,Wang Min,71;void main()
45、struct student*p;int k=0;for(p=stu;pscore;k/=3;printf(%dn,k);15.写出下列程序的结果:8#define N 2#define M N+1#define NUM (M+1)*M/2 void main()printf(%d,NUM);16.写出下列程序的结果:8 4 4#include int d=1;void fun(int p)int d=5;d+=p+;printf(%d,d);void main()int a=3;fun(a);d+=a+;printf(%d%d,d,a);一、单项选择题 1下列选项中,不能用作标识符的是()A
46、_zt34 B_int CINT D2_float 2.C程序的基本组成单位是()A语句 B函数 C运算符 D表达式 3C语言程序的注释符是()A.一对/B.一对/*/C.一对“”D.一对 4.以下不正确的叙述是()A#define是宏定义命令 B宏定义只是做简单的置换,不做正确性检查 C宏定义是C语句,必须在行末加分号 DC程序由一个或一个以上的函数组成 6下列哪个是非法的C语言转义字符。()A.b B.0 xf C.037 D.7.putchar()函数可以向终端输出一个()。A.整型变量表达式值 B.实型变量值 C.字符串 D.字符或字符型变量值 8.若用数组名作为函数调用的实参,传递给
47、形参的是()A.数组的首地址 B.数组中第一个元素的值 C.数组中的全部元素的值 D.数组元素的个数 9.设x、y均为整型变量,且x=2 y=2,则以下语句的输出结果是()printf(“%d,%dn”,x-,-y);A2,1 B2,2 C2,1 D1,1 10下面程序段 int k=2;while(k=0)printf(“%d”,k);k-;则下面描述中正确的是()while循环执行10次 B.循环是无限循环 C.循环题语句一次也不执行 D.循环体语句执行一次 11 执行语句for(i=1;i+4;);后变量i的值是()A.3 B.4 C.5 D.6 12以下正确的函数定义是()A.doub
48、le fun(int x,int y)B.double fun(int x,y)z=x+y;return z;int z;return z;C.fun(x,y)D.double fun(int x,int y)int x,y;double z;double z;z=x+y;return z;return z;13.若有定义:int a10,则对数组a元素的正确引用是()A.a10 B.a3.5 C.a(5)D.a10-10 14下面四个选项中,均是不合法的用户标识符的选项的是:()A.A p_o do B.float lao _A C.b-a goto int D._123 temp iNT
49、15.以下不能对二维数组a进行正确初始化的语句是()A.int a23=0;B.int a3=1,2,0;C.int a23=1,2,3,4,5,6;D.int a3=1,2,3,4,5,6;16.在宏定义#define PI 3.14159中,用宏名PI代替一个()A.单精度数 B.双精度数 C.常量 D.字符串 17 C语言规定:在一个源程序中,main的位置()A.必须在最开始B.必须在系统调用的库函数后面 C.可以任意D.必须在最后 18下面四个选项中,均是合法转义字符的选项是()A.nB.017 C.018fxab D.0 101 x1f 19 已知各变量的类型说明如下:int i=
50、8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是()A.a+=a-=(b=4)*(a=3)B.a=a*3=2 C.x%(-3)D.y=float(i)21以下符合C语言语法的赋值表达式是()A.d=9+e+f=d+9 B.d=9+e,f=d+9 C.d=(9+e,e+,d+9)D.d=9+e+=d+7 22已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是()(注:表示空格,表示回车)int a1,a2;char c1;c2;scanf(“%d