c语言试题及答案详解
单项选择题(每题2分,共20分)
1.以下哪个是C语言的合法标识符?
A.123abc
B._abc
C.abc-1
D.int
答案:B
2.若有定义:`inta=5;`,则表达式`a++`的值是?
A.5
B.6
C.4
D.7
答案:A
3.C语言中,用于输入的函数是?
A.printf
B.scanf
C.puts
D.gets
答案:B
4.以下哪种数据类型占用字节数最少?
A.int
B.float
C.char
D.double
答案:C
5.若`if`语句的条件表达式为`(a5a10)`,当`a`等于多少时条件为真?
A.3
B.7
C.12
D.5
答案:B
6.以下哪个循环结构先执行循环体,再判断条件?
A.`for`循环
B.`while`循环
C.`do-while`循环
D.以上都不是
答案:C
7.定义数组`intarr[5];`,数组元素的下标范围是?
A.0-5
B.1-5
C.0-4
D.1-4
答案:C
8.函数返回值类型的定义可以省略,此时函数返回值类型默认为?
A.`int`
B.`void`
C.`float`
D.`char`
答案:A
9.以下哪个运算符的优先级最高?
A.`+`
B.``
C.`=`
D.``
答案:B
10.若要输出换行,在`printf`函数中使用的转义字符是?
A.`\t`
B.`\n`
C.`\r`
D.`\b`
答案:B
多项选择题(每题2分,共20分)
1.以下属于C语言基本数据类型的有()
A.`int`
B.`float`
C.`struct`
D.`char`
答案:ABD
2.以下哪些是合法的C语言常量()
A.123
B.a
C.abc
D.3.14f
答案:ABCD
3.下列关于`if`语句的说法正确的有()
A.可以有多个`elseif`分支
B.`else`子句不能单独作为语句使用
C.`if`语句中条件表达式可以是任意表达式
D.`if`语句可以嵌套
答案:ABCD
4.以下哪些是C语言中的循环结构()
A.`for`循环
B.`while`循环
C.`do-while`循环
D.`switch`语句
答案:ABC
5.关于数组,以下说法正确的是()
A.数组元素类型必须相同
B.数组下标从0开始
C.可以通过数组名直接访问整个数组
D.数组在内存中是连续存储的
答案:ABD
6.以下哪些函数可以用于字符串操作()
A.`strcpy`
B.`strlen`
C.`strcmp`
D.`strcat`
答案:ABCD
7.以下关于指针的说法正确的是()
A.指针变量存储的是内存地址
B.可以对指针进行加减运算
C.空指针指向地址0
D.指针可以指向不同类型的数据
答案:ABC
8.下列哪些是C语言中的预处理指令()
A.`include`
B.`define`
C.`if`
D.`endif`
答案:ABCD
9.函数调用时,实参和形参之间的数据传递方式有()
A.值传递
B.地址传递
C.引用传递
D.双向传递
答案:AB
10.以下哪些错误类型属于编译错误()
A.语法错误
B.缺少头文件
C.数组越界
D.未定义变量
答案:ABD
判断题(每题2分,共20分)
1.C语言中,变量必须先定义后使用。()
答案:对
2.`switch`语句中,每个`case`后面必须有`break`语句。()
答案:错
3.`for`循环中,初始化表达式、条件表达式和更新表达式都可以省略。()
答案:对
4.数组名代表数组的首地址。()
答案:对
5.函数可以嵌套定义,但不能嵌套调用。()
答案:错
6.指针变量的类型决定了它所指向变量的类型。()
答案:对
7.`define`定义的宏常量在编译时会进行替换。()
答案:对
8.结构体变量可以作为函数的参数和返回值