C语言程序设计期末考试.docx
《C语言程序设计期末考试.docx》由会员分享,可在线阅读,更多相关《C语言程序设计期末考试.docx(31页珍藏版)》请在冰点文库上搜索。
![C语言程序设计期末考试.docx](https://file1.bingdoc.com/fileroot1/2023-7/17/379f496d-dff4-49c0-ba51-f4f98d485ed9/379f496d-dff4-49c0-ba51-f4f98d485ed91.gif)
C语言程序设计期末考试
2021年C语言程序设计期末考试
共85题,全部为选择题,考试时间90分钟,答完提交
一、选择题
您的姓名:
[填空题]*
_________________________________
1.判断两个字符串是否相等,应用()[单选题]*
A)if(a==b)
B)if(a=b)
C)if!
strcmp(a,b))(正确答案)
D)if(strcmp(a,b))
2.有以下程序(strcat()函数用来连接两个字符串),程序运行后的输出结果是(B)
#include
main()
{chara[20]="ABCD\0EFG\0",b[]="IJK";
strcat(a,b);
printf("%s\n",a);
}[单选题]*
A)ABCDE\0FG\0IJK
B)ABCDIJK(正确答案)
C)IJK
D)EFGIJK
3.若有定义inta[][4]={0,1,2,3,4,5,6,7,8,9,10,11};,则数组的第一维的大小为()[单选题]*
A)3(正确答案)
B)2
C)4
D)不确定
4.阅读下述程序:
( )
#include
main()
{charstr[10],temp[10];
inti;
gets(temp);
for(i=0;i<4;i++)
{gets(str);
if(strcmp(temp,str)>0)
strcpy(temp,str);
}
print("%s",temp);
}
若输入为
China
U.S.A
Korea¥
Canada
Japan。
则输出是[单选题]*
A)Canada(正确答案)
B)Japan
C)Korea
D)China
5.以下语句(字符串内没有空格字符):
printf("%d\n",strlen("ats\n012\1\\"));
的输出结果是()[单选题]*
A)12
B)10
C)9(正确答案)
D)11
6.下列程序的输出结果是( )
#include
main()
{charstr[12]={'s’,'t’,’r','i’,’n',’g’};
prinf("%d\n",strlen(str),sizeof(str));
}[单选题]*
A)12,12
B)6,12(正确答案)
C)7,12
D)12,6
7.若有定义inta[4][8];,则以下选项中对数组元素a[i][j](0<=j<4,0<=j<8)的错误引用是()[单选题]*
A)*(&a[0][0]+8*i+j)
B)*(a+i)[j](正确答案)
C)*(*(a+i)+j)
D)*(a[i]+j)
8.若定义inta[5];,则对数组元素地址的正确引用是()[单选题]*
A)&a[5]
B)a+2(正确答案)
C)a++
D)&a
9.以下程序段的输出结果是()
main()
{chara[2][4];
strcpy(a[0],"are");
strcpy(a[1],"you");
a[0][3]='&';
printf("%s\n",a);
}[单选题]*
A)are&you(正确答案)
B)you
C)are
D)&
10.以下程序段的输出结果是()
main()
{charch[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}[单选题]*
A)"AAAA"
B)"BBB"(正确答案)
C)"CC"
D)"BBBCC"
11.下列描述中不正确的是:
()[单选题]*
A)字符型数组可以存放字符串
B)可以对字符型数组进行整体输入、输出
C)可以对整形数组进行整体输入、输出(正确答案)
D)不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
12.若要定义一个具有5个元素的整型数组,以下语句中错误的是:
()[单选题]*
A)inta[5]=[0];
B)intb[]={0,0,0,0,0};
C)intc[2+3];
D)intn=5;d[n];(正确答案)
13.以下叙述中不正确的是()[单选题]*
A)建立函数的目的之是为了提高程序的效率(正确答案)
B)建立函数的目的之一是为了提高程序的可读性
C)建立函数的目的之是为了提高程序员的生产效率
D)函数的递归调用不能提高程序的执行效率
14以下函数的类型是()
func(doublex)
{printf("%f\n",X*X);
}[单选题]*
A)与参数x的类型相同
B)void类型
C)int类型(正确答案)
D)无法确定
15.阅读以下程序:
()
f(intb[],intn)
{
inti,r;
r=1
for(i=0;i<=n;i++)
r=r*b[i];
returnr
}
main()
{intx,a[]={2,3,4,5,6,7,8,9};
x=f(a,3);
printf("%d\n",x);
}
上面程序输出结果是[单选题]*
A)720
B)120(正确答案)
C)24
D)6
16.C语言程序中,若对函数类型未加显式声明,则函数的隐含类型为()[单选题]*
A)double
B)int(正确答案)
C)char
D)void
17.以下对C语言函数的有关描述中,正确的是()[单选题]*
A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传给实参(正确答案)
B)C函数既可以嵌套定义,又可以递归调用
C)函数必须有返回值,否则不能使用函数
D)C程序中有调用关系的所有函数必须放在同一个源程序文件中
18.有下列程序,执行后的输出结果是()
fun(intx,inty){return(x+y);}
main()
{inta=l,b=2,c=3,sum;
sum-fun((a++,b++,a+b),c++);
printf("%d\n",sum);
}[单选题]*
A)6
B)7
C)8(正确答案)
D)9
19.以下函数调用语句中,含有的实参个数是()
func(expl,.(exp2,exp3),(exp4.exps,exp6):
[单选题]*
A)1
B)2
C)3(正确答案)
D)6
20.以下程序的输出结果是( )
intf(a,b)
inta,b;//形参传统声明法
{intC
C=a;
if(a>b)c=I;elseif(a==b)c=0;elsec=-1;
returmC
}
main()
inti=2,p;
p=f(i,i+1);
printf("%d",p);
}[单选题]*
A)-1(正确答案)
B)0
C)1
D)2
21.以下程序的输出结果是()
main()
doublef();
inti,m=3;floata=0.0;
for(i=0;ia+=f(i);
printf("%f\n",a);
}
doublef(intn)
{inti;doubles=1.0;
for(i=l;i<=n;i++)
s+=1.0/i;
returnS;
}[单选题]*
A)5.500000(正确答案)
B)3.000000
C)4.000000
D)8.25
22.以下程序的输出结果是()
fun(intx,inty,intz)
{z=x*x+y*y;
}
main()
{
inta=31;
fun(5,2,a);
printf("%d",a);
}[单选题]*
A)0
B)29
C)31(正确答案)
D)无定值
23.以下函数的功能是()
fun(chars[],chart[])
{inti=-1;
while(i++,s[i]==t[i]&&s[i]!
=‘\0’);
return(s[i]==’\0’&&t[i]==’\0’);
}[单选题]*
A)比较串s和t的长度
B)比较串s和t的大小
C)比较串s和t是否相等(正确答案)
D)将串1赋给串s
24.C语言程序中,当调用函数时,()[单选题]*
A)实参和形参各占一个独立的存储单元(正确答案)
B)实参和形参可以共用存储单元
C)可以由用户指定是否共用存储单元
D)由计算机系统自动确定是否共用存储单元
25.下列程序执行后变量w中的值是()
intfun1(doublea){returna*=a;}
intfun2(doublex,doubley)
{doublea=0,b-0;
A=funl(x);b-=fun1(y);returm(int)(a+b);
}
main()
{doublew;w=fun2(1.1,2.0),..}[单选题]*
A)5
B)5
C)5.0(正确答案)
D)0.0
26.执行下列程序时,给变量x输入10,程序的输出结果是()
intfun(intn)
{if(n==1)return1;
else
return(n+fun(n-1));
}
main()
{intx;
scanf("%d",&x);x=fun(x);printf("%d\n",x);
}[单选题]*
A)55(正确答案)
B)54
C)65
D)45
27.下列程序执行后的输出结果是()
intfun(intx[],intn)
{staticintsum=0,i;
for(i=0;i
returnsum;
}
main()
inta(5)={1,2,3,4,5},b[4]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);
printf("%d\n",s);
}[单选题]*
A)45
B)50
C)60(正确答案)
D)55
28.以下程序运行后的输出结果是()
Voidfum(intp)
{intd-2;
p=d++;pintf(“%d”,p)}
main()
{inta=1;
fun(a);
printf("%d\n",a);}[单选题]*
A)32
B)12
C)21(正确答案)
D)22
29.下叙述中不正确的是:
( )[单选题]*
在函数中,通过return语句传回函数值
在函数中,可以有多条return语句
在C程序中,主函数main()后的一对园括号中也可以带有形参
在C程序中,调用函数必须在一条独立的语句中完成。
(正确答案)
30.以下程序的输出结果是:
()
fun(inta,intb,intc)
{c=a+b;
}
main()
{intc;
fun(3,6,c);
printf(“%d”;c);
}[单选题]*
A)0
B)3
C)9
D)无定值(正确答案)
31.以下叙述正确的是()。
[单选题]*
A)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
B)在C程序中,main函数必须位于程序的最前面
C)C语言本身没有输入输出语句(正确答案)
D)C程序的每行中只能写一条语句
32.一个C程序的执行是从()。
[单选题]*
A)本程序的main函数开始,到main函数结束(正确答案)
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序文件的第一个函数开始,到本程序main函数结束
D)本程序的main函数开始,到本程序文件的最后一个函数结束
33.以下叙述不正确的是()。
[单选题]*
A)一个C源程序必须包含一个main函数
B)一个C源程序可由一个或多个函数组成
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面(正确答案)
34.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是()。
[单选题]*
A)C语言程序仅可以编译执行(正确答案)
B)C语言程序仅可以解释执行
C)C语言程序既可以编译执行又可以解释执行
D)以上说法都不对
35.一个C语言程序是由()。
[单选题]*
A)一个主程序和若干个子程序组成
B)函数组成(正确答案)
C)若干过程组成
D)若干子程序组成
36.以下叙述中错误的是()。
[单选题]*
A)C语言的可执行程序是由一系列机器指令构成的
B)用C语言编写的源程序不能直接在计算机上运行
C)通过编译得到的二进制目标程序需要连接才可以运行
D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件(正确答案)
37.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为()。
x=(i=4,j=16,k=32)[单选题]*
A)4
B)16
C)32(正确答案)
D52
38.以下叙述正确的是()。
[单选题]*
A)C语言程序是由过程和函数组成的
B)C语言函数可以嵌套调用,例如:
fun(fun(x))(正确答案)
C)C语言函数不可以单独编译
D)C语言中除了main函数,其他函数不可作为单独文件形式存在
39.下列四组选项中,均不是C语言关键字的选项是()。
[单选题]*
A)dei2temp(正确答案)
B)getccharprintf
C)includecasescanf
D)whilegopow
40.下列四组选项中,均是不合法的用户标识符的选项是()。
[单选题]*
A)WP_0do
B)b-agotoint(正确答案)
C)floatla0_A
D)-123abcTEMP
41.下面不正确的字符常量是()。
[单选题]*
A)“c”(正确答案)
B)‘\\’’
C)‘’
D)‘K’
42.下列四组选项中,均是合法转义字符的选项是()。
[单选题]*
A)‘\”’‘\\’‘\n’(正确答案)
B)‘\’‘\017’‘\”’
C)‘\018’‘\f’‘xab’
D)‘\\0’‘\101’‘xlf’
43.以下叙述不正确的是()。
[单选题]*
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,MAX和max是两个不同的变量
C)若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(正确答案)
44.已知字母A的ASCII码为十进制数65,且c2为字符型,
则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为()。
[单选题]*
A)D(正确答案)
B)68
C)不确定的值
D)C
45.以下叙述正确的是()。
[单选题]*
A)在C程序中,每行只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数(正确答案)
C)在C程序中,%是只能用于整数运算的运算符(字符型也可以)
D)在C程序中,无论是整数还是实数,都能被准确无误地表示
46.sizeof(float)是()。
[单选题]*
A)一个双精度型表达式
B)一个整型表达式(正确答案)
C)一种函数表达式
D)一个不合法的表达式
47.设有说明:
charw;intx;floaty;doublez; 则表达式w*x+z-y值的数据类型为()。
[单选题]*
A)float
B)char
C)int
D)double(正确答案)
48.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为()。
[单选题]*
A)0~255
B)0~32767
C)0~65535(正确答案)
D)0~2147483647
49.设以下变量均为int类型,则值不等于7的表达式是()。
[单选题]*
A)(x=y=6,x+y,x+1)
B)(x=y=6,x+y,y+1)
C)(x=6,x+1,y=6,x+y)(正确答案)
D)(y=6,y+1,x=y,x+1)
50.下列变量定义中合法的是()。
[单选题]*
A)short_a=015;(正确答案)
B)doubleb=e2.5;
C)longdo=0xfdaL;
D)float2_and=1e-3;
51.有以下程序
#include
main()
{intx=011;
printf("%d\n",++x);
}
程序运行后的输出结果是()。
[单选题]*
A)12
B)11
C)10(正确答案)
D)9
52.以下正确的描述是().[单选题]*
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句(正确答案)
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
53.putchar函数可以向终端输出一个()。
[单选题]*
A)整型变量表达式
B)实型变量值
C)字符串
D)字符或字符型变量值(正确答案)
54.根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为()。
main()
{charch1,ch2,ch3;
输入语句
printf(“%c%%c”,ch1,ch2,ch3);
}输出形式:
ABC
输入形式:
ABC[单选题]*
A)scanf(“%c%c%c”,&ch1,&ch2,&ch3);
B)scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);
C)scanf(“%c%c%c”,&ch1,&ch2,&ch3);(正确答案)
D)scanf(“%c%c”,&ch1,&ch2,&ch3);
55.阅读以下程序,当输入数据的形式为:
25,13,10(注:
表示回车),则正确的输出结果为()。
main()
{intx,y,z;
scanf(“%d%d%d”,&x,&y,&z);
printf(“x+y+z=%d\n”,x+y+z);
}[单选题]*
A)x+y+z=48
B)x+y+z=35
C)x+z=35
D)不确定值(正确答案)
56.已知ch是字符型变量,下面不正确的赋值语句是()。
[单选题]*
A)ch=‘a’+’b’;(正确答案)
B)ch=‘\0’;
C)ch=‘7’+‘9’;
D)ch=5+9;
57.以下关于结构化程序设计的叙述中正确的是()。
[单选题]*
A)一个结构化程序必须同时由顺序、分支、循环三种结构组成
B)结构化程序使用goto语句会很便捷
C)在C语言中,程序的模块化是利用函数实现的(正确答案)
D)由三种基本结构构成的程序只能解决小规模的问题
58.有以下程序
#include
main()
{inta1,a2;charc1,c2;
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
printf(“%d,%c,%d,%c”,a1,c1,a2,c2);
}
若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:
12,a,34,b则正确的输入格式是(). (以下_代表空格,代表回车)[单选题]*
A)12a34b(正确答案)
B)12_a_34_b
C)12,a,34,b
D)12_a34_b
59.逻辑运算符两侧运算对象的数据类型()。
[单选题]*
A)只能是0和1
B)只能是0或非0正数
C)只能是整型或字符型数据
D)可以是任何类型的数据(正确答案)
60.判断char型变量ch是否为大写字母的正确表达式是()。
[单选题]*
A)‘A’<=ch<=‘Z’
B)(ch>=‘A’)&(ch<=‘Z’)
C)(ch>=‘A’)&&(ch<=‘Z’)(正确答案)
D)(‘A’<=ch)AND(‘Z’>=ch)
61.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是()。
[单选题]*
A)A%2==1
B)!
(A%2==0)
C)!
(A%2)(正确答案)
D)A%2
62.设有:
inta=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>b)&&(n=c>d)后n的值为()。
[单选题]*
A)1
B)2(正确答案)
C)3
D)4
63.以下程序的运行结果是()。
main()
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d”,a,b);
}[单选题]*
A)6,1
B)2,1(正确答案)
C)6,0
D)2,0
64.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是()
if(x>y)z=x;x=y;y=z;[单选题]*
A)x=10,y=20,z=30
B)x=20,y=30,z=30(正确答案)
C)x=20,y=30,z=10
D)x=20,y=30,z=20
65.以下程序的运行结果是()。
main()
{intm=5;
if(m++>5)
printf(“%d\n”,m);
else;
printf(“%d\n”,m--);
}[单选题]*
A)4
B)5
C)6(正确答案)
D)7
66.if语句