计算机二级c语言考试试题
一、选择题
1.以下叙述中正确的是()[单选题]*
A.在C语言中,主函数名main可由用户命名
B.在C语言中,主函数必须位于源程序的最前面
C.C语言程序的执行总是从main函数开始,在main函数结束
D.在C语言程序中,除main函数外,用户可定义任意多个函数,这些函数可相互调用
答案:C。原因:在C语言中,主函数名必须为main,不能由用户命名,A错误;主函数的位置可以在源程序的任何地方,B错误;C语言程序的执行从main函数开始,最后在main函数结束,C正确;函数之间可以相互调用,但函数不能调用main函数,D错误。
2.以下定义语句中正确的是()[单选题]*
A.inta=b=0;
B.charA=65+1,b=b;
C.floata=1,*b=a,*c=b;
D.doublea=0.0;b=1.1;
答案:B。原因:A选项中,不能连续赋值定义变量,应该先定义b再对a赋值,A错误;B选项中,字符可以用ASCII码值加1来定义,同时可以正常定义另一个字符变量,B正确;C选项中,c定义错误,应该是*c=b,C错误;D选项中,定义第二个变量b时缺少类型声明,D错误。
3.若有定义:inta=1,b=2,c=3;则执行表达式(a=b+c)||(++b)后,a、b、c的值依次为()[单选题]*
A.5,2,3
B.5,3,3
C.1,2,3
D.1,3,3
答案:A。原因:先计算b+c的值为5,然后将5赋给a,此时逻辑或表达式左边的值为真(非0),由于逻辑或只要左边为真就不再计算右边,所以++b不执行,b的值还是2,c的值不变为3,所以a=5,b=2,c=3。
4.以下程序的输出结果是()[单选题]*
#includestdio.h
intmain()
{
inta=1,b=2,c=3;
if(ab)
if(b0)c=0;
elsec++;
printf(%d\n,c);
return0;
}
A.0
B.1
C.2
D.3
答案:D。原因:首先判断ab成立,进入内部的if-else语句,但是b0不成立,所以执行else部分,c++,c原来的值为3,执行后还是3。
5.以下关于数组的描述正确的是()[单选题]*
A.数组的大小是固定的,但可以有不同类型的元素
B.数组元素的下标从1开始
C.数组名代表数组的首地址
D.定义数组时必须指定数组元素的个数
答案:C。原因:数组的大小是固定的且数组中的元素类型必须相同,A错误;数组元素的下标从0开始,B错误;数组名代表数组的首地址,C正确;在定义数组时,如果进行初始化,可以不指定数组元素的个数,D错误。
6.下面函数调用语句含有实参的个数为()[单选题]*
func((e1,e2),(e3,e4,e5));
A.1
B.2
C.3
D.5
答案:B。原因:这里(e1,e2)和(e3,e4,e5)是两个逗号表达式,它们作为实参传递给函数func,所以实参个数为2。
7.设有以下定义:
chars1[]=string,s2[8],*s3,*s4=string;
则()[多选题]*
A.sizeof(s1)等于sizeof(s2)
B.strlen(s1)等于strlen(s4)
C.s3=s1;合法
D.s4=s1;合法
答案:BC。原因:A选项中,s1是字符串数组,其长度是字符串加上\0的长度,s2定义的数组长度为8,二者长度不同,A错误;B选项中,strlen计算字符串的实际长度(不包含\0),s1和s4中的字符串内容相同,所以strlen(s1)等于strlen(s4),B正确;C选项中,s3是字符指针,可以指向s1这个字符数组,C正确;D选项中,s4是指向常量字符串的指针,不能再指向s1这个可修改的数组,D错误。
8.以下关于结构体的说法正确的是()[单选题]*
A.结构体成员不能是结构体类型
B.结构体变量在定义时不能初始化
C.结构体成员的访问只能通过指针
D.结构体变量的大小是其成员大小之和(考虑对齐情况)
答案:D。原因:A选项中,结构体成员可以是结构体类型,A错误;B选项中,结构体变量在定义时可以初始化,B错误;C选项中,结构体成员可以通过结构体变量直接访问,也可以通过指针访问,C错误;D选项中,结构体变量的大小是其成员大小之和(考虑对齐情况),D正确。
9.在C语言中,以下