c语言期末考试试题及答案
一、单项选择题(每题2分,共10题)
1.以下关于C语言标识符的描述,正确的是()
A.标识符只能由字母、数字和下划线组成
B.标识符可以以数字开头
C.关键字不能作为标识符
D.标识符区分大小写
答案:C
解析:标识符由字母、数字和下划线组成,但不能以数字开头,且区分大小写,关键字不能作为标识符,A、B、D选项错误,C正确。
2.若有定义:inta=10,b=9,c=8;执行语句:if(abc)printf(yes);elseprintf(no);输出结果是()
A.yes
B.no
C.编译错误
D.不确定
答案:B
解析:在C语言中,关系表达式abc是从左到右计算,先计算ab得1,再计算1c得0,所以条件为假,执行else分支,输出no。
3.以下数据类型中,占用内存最少的是()
A.char
B.int
C.float
D.double
答案:A
解析:char类型通常占用1个字节,int类型一般占用4个字节,float类型占用4个字节,double类型占用8个字节,所以char占用内存最少。
4.以下关于数组的定义,正确的是()
A.inta[5]={1,2,3,4,5,6};
B.inta[];
C.inta[][3]={{1,2,3},{4,5,6}};
D.inta[5]={1,2,3,4};a[5]=5;
答案:C
解析:A选项数组初始化时元素个数不能超过定义的大小;B选项数组定义时必须指定大小;D选项数组越界,a[5]超出了数组a的范围;C选项定义二维数组并正确初始化。
5.以下哪个函数可以用于将一个字符转换为整数()
A.atoi
B.itoa
C.atof
D.toupper
答案:A
解析:atoi函数用于将字符串转换为整数;itoa函数是将整数转换为字符串;atof函数用于将字符串转换为浮点数;toupper函数用于将字符转换为大写,所以选A。
6.若有定义:voidfun(intp){p=p+1;}intmain(){inta=10;fun(a);printf(%d,a);return0;}程序输出结果是()
A.10
B.11
C.编译错误
D.运行错误
答案:B
解析:fun函数通过指针修改了main函数中a的值,p=p+1使得a的值加1,所以输出11。
7.以下关于指针的描述,错误的是()
A.指针变量存放的是一个内存地址
B.可以通过指针间接访问内存中的数据
C.指针可以进行算术运算
D.两个指针变量可以直接进行比较大小
答案:D
解析:指针存放内存地址,可间接访问数据,也能进行算术运算,但两个指针比较大小是比较它们所指向的地址,不是直接比较指针变量本身,D选项错误。
8.以下循环语句中,循环体执行次数为0次的是()
A.for(inti=10;i10;i++)printf(%d,i);
B.while(1)printf(%d,i);
C.doprintf(%d,i);while(0);
D.for(inti=0;i10;i+=2)printf(%d,i);
答案:A
解析:A选项中for循环的条件i10一开始就不成立,所以循环体执行次数为0次;B选项while(1)是无限循环;C选项do-while循环至少执行一次;D选项for循环会执行5次。
9.以下关于结构体的描述,正确的是()
A.结构体成员的数据类型必须相同
B.结构体变量不能作为函数参数
C.结构体定义时可以不指定结构体名
D.结构体成员可以是结构体类型
答案:D
解析:结构体成员数据类型可以不同,结构体变量能作为函数参数,结构体定义时必须指定结构体名,结构体成员可以是结构体类型,所以D正确。
10.若有定义:FILEfp;fp=fopen(test.txt,r);若文件test.txt不存在,则fopen函数返回()
A.NULL
B.1
C.-1
D.0
答案:A
解析:当fopen函数打开文件失败时(如文件不存在),返回NULL。
二、多项选择题(每题2分,共10题)
1.以下属于C语言基本数据类型的有()
A.int
B.float
C.double
D.char
答案:ABCD
解析:C语言基本数据类型包括整型(int等)、浮点型(float、double)、字符型(char)。
2.以下哪些运算符