c期末考试试题及答案
单项选择题(每题2分,共10题)
1.以下哪个是C语言中的合法标识符?
A.123abcB._abcC.intD.a-b
2.C语言中,定义整型变量的关键字是()
A.floatB.doubleC.intD.char
3.以下表达式的值为()5+32
A.16B.11C.10D.18
4.若有定义:inta=5;则表达式a+=3的值是()
A.5B.3C.8D.2
5.以下哪种循环结构先执行循环体,再判断条件?
A.forB.whileC.do-whileD.以上都不是
6.若有定义:intarr[5]={1,2,3,4,5};则arr[3]的值是()
A.3B.4C.5D.0
7.函数调用时,实参和形参之间是()传递。
A.地址B.值C.引用D.以上都不对
8.以下哪个是C语言中的字符串结束标志?
A.\0B.\nC.\tD.0
9.若有定义:struct{inta;charb;}s;则sizeof(s)的值是()(假设int占4字节,char占1字节)
A.4B.5C.1D.2
10.以下关于指针的说法,正确的是()
A.指针变量只能指向整型变量
B.指针变量的类型与它所指向变量的类型一致
C.指针变量不能赋值
D.指针变量的大小不确定
多项选择题(每题2分,共10题)
1.以下属于C语言数据类型的有()
A.整型B.浮点型C.字符型D.结构体
2.以下运算符中,属于算术运算符的有()
A.+B.-C.D./
3.下列关于if语句的说法正确的有()
A.可以有多个elseif分支
B.else必须和if配对使用
C.if语句可以嵌套
D.可以没有else部分
4.以下哪些是合法的数组定义()
A.intarr[10];
B.charstr[]=hello;
C.floatf[5]={1.0,2.0,3.0};
D.doubled[][3]={{1.0,2.0},{3.0,4.0}};
5.以下关于函数的说法正确的有()
A.函数可以有返回值
B.函数可以没有参数
C.函数必须有函数体
D.函数名可以随意命名
6.以下哪些是C语言中的输入输出函数()
A.printfB.scanfC.getcharD.putchar
7.以下关于指针的操作正确的有()
A.指针变量可以进行加减运算
B.指针可以指向数组
C.指针可以指向函数
D.指针可以直接赋值给整型变量
8.以下哪些属于文件操作函数()
A.fopenB.fcloseC.freadD.fwrite
9.以下关于结构体的说法正确的有()
A.结构体可以包含不同类型的成员
B.结构体变量可以整体赋值
C.可以定义结构体数组
D.结构体成员可以通过结构体变量名访问
10.以下哪些关键字用于控制程序流程()
A.breakB.continueC.returnD.goto
判断题(每题2分,共10题)
1.C语言中,变量必须先定义后使用。()
2.表达式3/2的结果是1.5。()
3.for循环的三个表达式都可以省略。()
4.数组名就是数组的首地址。()
5.函数定义中,形参列表可以为空。()
6.指针变量存储的是变量的地址。()
7.字符串可以使用数组来存储。()
8.文件操作完成后,不需要关闭文件。()
9.结构体成员的访问只能通过“.”运算符。()
10.在switch语句中,每个case分支都必须有break语句。()
简答题(每题5分,共4题)
1.简述C语言中变量的作用域。
答案:变量作用域指变量的可访问范围。局部变量在定义它的函数或代码块内有效;全局变量在整个源文件都有效,在其他源文件中若要用extern声明。
2.简述数组和指针的关系。
答案:数组名代表数组首地址,可看作常量指针。指针可以指向数组元素,通过指针可像操作数组下标一样访问数组元素,二者在访问内存数据上密切相关。
3.简述函数调用的过程。
答案:程序执行到函数调用处,