C语言清考试题.docx
- 文档编号:10816554
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:16
- 大小:23.16KB
C语言清考试题.docx
《C语言清考试题.docx》由会员分享,可在线阅读,更多相关《C语言清考试题.docx(16页珍藏版)》请在冰点文库上搜索。
C语言清考试题
专业班级:
学号:
姓名:
一、选择题(用铅笔把选中的方格涂黑40×1=40分)
1
A
B
C
D
2
A
B
C
D
3
A
B
C
D
4
A
B
C
D
5
A
B
C
D
6
A
B
C
D
7
A
B
C
D
8
A
B
C
D
9
A
B
C
D
10
A
B
C
D
11
A
B
C
D
12
A
B
C
D
13
A
B
C
D
14
A
B
C
D
15
A
B
C
D
16
A
B
C
D
17
A
B
C
D
18
A
B
C
D
19
A
B
C
D
20
A
B
C
D
21
A
B
C
D
22
A
B
C
D
23
A
B
C
D
24
A
B
C
D
25
A
B
C
D
26
A
B
C
D
27
A
B
C
D
28
A
B
C
D
29
A
B
C
D
30
A
B
C
D
31
A
B
C
D
32
A
B
C
D
33
A
B
C
D
34
A
B
C
D
35
A
B
C
D
36
A
B
C
D
37
A
B
C
D
38
A
B
C
D
39
A
B
C
D
40
A
B
C
D
二、填空题(20×2=40分)
(1)
(2)
(3)(4)
(5)(6)
(7)(8)
(9)(10)
(11)(12)
(13)(14)
(15)(16)
(17)(18)
(19)(20)
三、编程题(10×2=20分)
1、一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
编程序找出1000以内的所有“完数”。
2、编写一个程序,将字符数组s2中的全部字符拷贝盗字符数组s1中,不用strcpy函数。
拷贝时,'\0'也要拷贝过去,'\0'后的字符不拷贝。
一、选择题(40×1分=40分)
1.以下叙述中正确的是
(1)。
A.C程序中注释部分可以出现在程序中任意合适的地方
B.花括号"{"和"}"只能作为函数体的定界符
C.构成C程序的基本单位是函数,所有函数名都可以由用户命名
D.分号是C语句之间的分隔符,不是语句的一部分
2.在以下各组标识符中,均可以用作变量名的一组是
(2)。
A.a01,IntB.table_1,a*.1C.0_a,W12D.for,point
3.若有说明:
inta[10];则对数组元素的正确引用是(3)。
A.a[10]B.a[3.5]C.a(5)D.a[10-10]
4.已知ch是字符型变量,下面正确的赋值语句是(4)。
A.ch=’123’;B.ch=’\xff’;C.ch=’\08’;D.ch=”\”;
5.C语言中用于结构化程序设计的3种基本结构是(5)。
A.顺序结构、选择结构、循环结构B.if,switch,break
C.for,while,do-whileD.if,for,continue
6.有以下程序,执行后输出结果是(6)。
main()
{intn=9;
while(n>6){n--;printf("%d",n);}
}
A.987B.876C.8765D.9876
7.若有以下定义,则对a数组元素地址的正确引用是(7)。
inta[5],*p=a;
A.&a[0]B.*a+1C.&a+1D.p+5
8.若有以下调用语句,则不正确的fun函数的首部是(8)。
main()
{…
inta[50],n;
…
fun(n,&a[9]);
…
}
A.voidfun(intm,intx[])B.voidfun(ints,inth[50])
C.voidfun(intp,int*s)D.voidfun(intn,inta)
9.以下选项中非法的表达式是(9)。
A.0<=x<100B。
i=j==0C。
(char)(65+3)D。
x+1=x+1
10.若有声明“charss[8]="blue";”,则sizeof(ss)的值是(10)。
A.8B.4C.3D.1
11.以下程序运行后的输出结果是(11)。
A.22B.72C.75D.62
main()
{chara[7]="a0\0a0\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d",i,j);
}
12.下面关于循环语句for、while、do_while的叙述中,正确的是(12)。
A.三种循环语句的循环体都必须放入一对花括号中
B.三种循环语句中都可以缺省循环终止条件表达式
C.三种循环语句的循环体都至少被无条件地执行一次
D.三种循环语句都可能出现无穷循环
13.有以下程序
main()
{ints=0,a=1,n;
scanf("%d",&n);
do
{s+=1;a=a-2;}
while(a!
=n);
printf("%d\n",s);
}
若要使程序的输出值为2,则应该从键盘给n输入的值是(13)。
A.-1B.-3C.-5D.0
14.在下列C语言源程序的错误中,通常不能在编译时发现的是(14)。
A.括号不匹配B.非法标识符
C.数组元素下标值越界D.程序结构不完整
15.若有声明“longa,b;”且变量a和b都需要通过键盘输入获得初值,则下列语句中正确的是(15)。
A.scanf("%ld%ld,&a,&b");B.scanf("%d%d",a,b);
C.scanf("%d%d",&a,&b);D.scanf("%ld%ld",&a,&b);
16.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)
s=a;
for(b=1;b<=c;b++)s=s+1;
则与上述程序段功能等价的赋值语句是(16)。
A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;
17.若在一个C语言源程序中“e1”和“e3”是表达式,“s;”是语句,则下列选项中与语句“for(e1;;e3)s;”功能等同的语句是(17)。
A.e1;while(10)s;e3;B.e1;while(10){s;e3;}
C.e1;while(10){e3;s;}D.while(10){e1;s;e3;}
18.若有声明“inta[3][4],*p=a[0],(*q)[4]=a;”,则下列叙述中错误的是(18)。
A.a[2][3]与q[2][3]等价B.a[2][3]与p[2][3]等价
C.a[2][3]与*(p+11)等价D.a[2][3]与p=p+11,*p等价
19.若有如下程序,则程序运行后的输出结果是(19)。
main()
{inta[3][4]={1,2,3,4,5,6,7,8,9};
printf("%d%d%d\n",a[0][1],a[1][2],a[2][3]);}
A.270B.480C.160D.不定值
20.以下叙述中错误的是(20)。
A.局部变量的定义可以在函数体和复合语句的内部
B.全局变量的定义可以在函数以外的任何部位
C.同一程序内局部变量和全局变量不允许同名
D.函数的形参属于局部变量
21.设有以下说明语句,则下面的叙述不正确的是(21)。
structstu
{inta;
floatb;
}stutype;
A.struct是结构体类型的关键字B.structstu是用户定义的结构体类型
C.stutype是用户定义的结构体类型名D.a和b都是结构体成员名
22.下列关于C语言数据文件的叙述中正确的是(22)。
A.文件由ASCII码字符序列组成,C语言只能读写文本文件
B.文件由二进制数据序列组成,C语言只能读写二进制文件
C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
23.若有下面的程序段,则下列叙述正确的是(23)。
chars[]="china";char*p;p=s;
A.s和p完全相同B.数组s中的内容和指针变量p中的内容相等
C.s数组长度和p所指向的字符串长度相等D.*p与s[0]相等
24.若有结构类型定义“typedefstructtest{intx,y[2];}TEST;”,则以下声明中正确的是(24)。
A.structtestx;B.structx;
C.testx;D.structTESTx;
25.设有声明intvalue=‘5’;则执行下列选项的赋值语句后,value的值不等于5的是(25)。
A.value=value-‘0’;B.value=value-0x30;
C.value=value-49;D.value=value-‘\060’;
26.若有枚举类型定义“enumlist1{x1,x2,x3,x4=6,x5,x6};”,则枚举常量x2和x6代表的值分别是(26)。
A.1,6B.1,8C.2,6D.2,8
27.若有声明“floatf=123.45678;”,则执行语句“printf("%.3f",f);”后,输出结果是(27)。
A.1.23e+02B.123.457C.123.456780D.1.234e+02
28.若有声明“intx[10]={0,1,2,3,4,5,6,7,8,9},*p;”,则值不为4的表达式是(28)。
A.p=x,*(p+4)B.p=x+4,*p++
C.p=x+3,*(p++)D.p=x+3,*++p
29.若有如下定义:
ints[3];
则下面表达式中不能代表数组元素s[1]的地址的是(29)。
A.&s[1]B.&s[0]+1C.s+1D.s++
30.已知A盘根目录下有文本文件“data.txt”且程序中已有声明“FILE*fp;”,若程序需要先从“data.txt”文件中读出数据,修改后再写入“data.txt”文件中,则调用fopen函数的正确形式是(30)。
A.fp=fopen("a:
\\data.txt","rw");
B.B.fp=fopen("a:
\\data.txt","w+");
C.fp=fopen("a:
\\data.txt","r+");
D.fp=fopen("a:
\\data.txt","r");
31.有以下程序,程序运行后的输出结果是(31)。
main()
{intk=4,n=0;
for(;n {n++; if(n%3! =0)continue; k--;} printf("%d,%d\n",k,n); } A.1,1B.2,2C.3,3D.4,4 32.已知有结构定义和变量声明如下: 以下选项中错误的是(32)。 structstudent {charname[20]; intscore; structstudent*h; }stu,*p; int*q; A.p=&stu;B.q=&stu.score; C.scanf("%s%d",&stu);D.stu.h=p; 33.若变量已正确定义并赋值,以下符合C语言语法的表达式是(33)。 A.a: =b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b 34.有以下函数定义: voidfun(intn,doublex){……} 变量定义: intm;doubley; 若变量都已正确赋值,则对函数fun的正确调用语句是(34)。 A.fun(inty,doublem);B.k=fun(10,12.5); C.fun(y,m);D.voidfun(m,y); 35.设int在内存中占两个字节,以下程序的运行结果是(35)。 #include"stdio.h" main() {structdate {intyear,month,day;}today; printf("%d\n",sizeof(structdate)); } A.6B.8C.10D.12 36.以下关于C语言语句的叙述中,正确的是(36)。 A.所有语句都包含关键字 B.所有语句都包含表达式 C.所有语句都可以出现在源程序中的任何位置 D.所有语句都以分号结束 37.设有变量声明“charc;”,执行“for(;c=(getchar()! =‘\n’);)printf(“%c”,c);”时,从键盘上输入“ABCDEFG”回车后,输出结构是(37)。 A.ABCDEFGB.AABBCCDDEEFFGG C.非字母数字字符D.语句不能执行 38.以下能将字符串: youareluck! 正确读入的语句组是(38)。 A)chars[80];scanf("%s",&s); B)char*s;scanf("%s",s); C)chars[80];gets(s); D)char*s;gets(s); 39.若以下对fun函数的调用是正确的,则fun函数的形参个数为(39)。 x=fun(fun(a,b,c),(a+b,a+c),a+b+c); A.3B.4C.5D.6 40.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(40)。 A.函数调用可以作为独立的语句存在B.函数调用可以作为一个函数的实参 C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的形参 二、填空题(每空2分,共50分) 1.已知有函数定义“intfun(){return(3,4);}”,则调用fun后的函数返回值是 (1)。 2.若已有定义“enumTP{A,B,C};”,则执行语句“printf("%d\n",A+1);”后输出结果是 (2)。 3.若有声明“chars[10]="hello";”,执行“puts(s+2);”后的输出结果是(3)。 4.若有声明“doublex=10;”,则计算x绝对值的库函数调用形式是(4)。 5.在以下程序的main函数中,语句“fun(x,10);”内的实参x表示数组x的(5)。 voidfun(inta[10],intn) {inti;for(i=0;i main() {intx[10]={0};fun(x,10);} 6.以下程序的输出结果是(6)。 main() {inta=0; a+=(a=8); printf("%d\n",a); } 7.以下程序运行时输出结果是(7)。 #include voidfunc(intb) {inta;a=b;b=10;} voidmain() {inta=10,b=20; func(b); printf("%d,%d",a,b); } 8.以下程序运行时输出结果的第一行是(8),第二行是(9)。 #include intf1() {staticinti=0,f=1; returnf*=++i; } intf2() {inti=0,f=1; returnf*=++i; } voidmain() {printf("%d\n",f1()+f1()); printf("%d\n",f2()+f2()); } 9.下列程序的输出结果是(10)。 main() {charb[]="Helloyou"; b[5]=0; printf("%s\n",b); } 10.以下程序运行时输出结果的第一行是(11),第三行是(12)。 #include voidmain() {inti,j,a[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i a[i][j]=1; else a[i][j]=i-j+1; for(i=0;i<3;i++) {for(j=0;j<3;j++) printf("%4d",a[i][j]); printf("\n"); } } 11.以下程序运行时输出结果是(13)。 #include voidsort(inta[],intn) {inti,j,p;intt; for(i=1;i {p=i; for(j=i+2;j if(a[j]>a[p]) p=j; if(p! =i) {t=a[i];a[i]=a[p];a[p]=t;} } } voidmain() {ints[]={8,1,4,3},n=4,k; sort(s,n); for(k=0;k printf("%4d",s[k]); printf("\n"); } 12.以下程序运行时输出结果的第一行是(14),第二行是(15)。 #include structs {intx,*y; }*p; intd[5]={10,20,30,40,50}; structsa[5]={100,&d[0],200,&d[1],300,&d[2],400,&d[3],500,&d[4]}; voidmain() {p=a; printf("%5d",p->x++); printf("%5d\n",p->x); printf("%5d",*p->y); printf("%5d\n",*++p->y); } 13.完善程序以达到将指针变量r所指向的单链表结点插入到指针变量p所指向的单链表结点之后的功能。 r->next=(16);p->next=(17); 14.试完善程序以达到输出数组各元素的值的功能。 main() {inta[10]={1,2,3,4,5,6,7,8,9,0},i; for(i=(18);i<(19);i++)(20); } 专业班级: 学号: 姓名: 一、选择题(用铅笔把选中的方格涂黑40×1=40分) 1 A B C D 2 A B C D 3 A B C D 4 A B C D 5 A B C D 6 A B C D 7 A B C D 8 A B C D 9 A B C D 10 A B C D 11 A B C D 12 A B C D 13 A B C D 14 A B C D 15 A B C D 16 A B C D 17 A B C D 18 A B C D 19 A B C D 20 A B C D 21 A B C D 22 A B C D 23 A B C D 24 A B C D 25 A B C D 26 A B C D 27 A B C D 28 A B C D 29 A B C D 30 A B C D 31 A B C D 32 A B C D 33 A B C D 34 A B C D 35 A B C D 36 A B C D 37 A B C D 38 A B C D 39 A B C D 40 A B C D 二、填空题(25×2=50分) (1)4 (2)1 (3)llo(4)fabs(x) (5)首地址(6)16 (7)10,20(8)3 (9)2(10)hello (11)111(12)321 (13)8341(14)100101 (15)1020(16)p->next (17)r(18)0 (19)10(20)printf(“%d”,a[i]) 三、编程题(10分) 1、一个数如果恰好等于它的因子之和,这个数就称为“完数”。 例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。 编程序找出1000以内的所有“完数”。 #include main() {intm,s,i; for(m=2;m<1000;m++) {s=0;for(i=1;i if(s==m){printf(“%d是一个“完数”,它的因子是”,m); for(i=1;i printf(“\n”); } } } 2、编写一个程序,将字符数组s2中的全部字符拷贝盗字符数组s1中,不用strcpy函数。 拷贝时,'\0'也要拷贝过去,'\0'后的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 考试题