1.(10分) 单选题
10
根据算术表达式计算如果a=8,b=2,c=3时,a/b-c=?
A 1
B 2
C 3
D 4
参考答案: A
解析:
a/b=4;4-c=1
2.(10分) 单选题
10
C语言程序的基本单位是
A 程序行
B 语句
C 函数
D 字符
参考答案: C
解析:
无
3.(10分) 单选题
10
srand函数中产生的随机数从2到20的是
A rand()%(1+1-20)+20
B rand()%(20+1-2)+20
C rand()%(20+1-2)+2
D rand()%(20+2-2)+2
参考答案: C
解析:
格式是rand()%(最大值+1-最小值)+最小值
4.(10分) 单选题
10
在定义变量和变量名时我们要注意:①命名交量名时应尽量做到 “见名知意”,这样有助于记忆,又增加了程序的可读性 ②下划线(_ )符号一般是 系统函数常用的开始符号,故一般不要用它作为变量名的第一个字符。 ③不能用数字符号(0-- 9)作名字的开始字符。④系统规定的保留予不可再作为交量名。⑤大写字母与小写字母表示不同的名字。
A ①②③④
B ①②③
C ①②③④⑤
D ①②
参考答案: C
解析:
变量的定义
5.(10分) 单选题
10
C语言中,char类型数据占()
A 1个字节
B 2个字节
C 4个字节
D 8个字节
参考答案: A
解析:
无
6.(10分) 单选题
10
double类型数据在C语言中占()
A 1个字节
B 2个字节
C 4个字节
D 8个字节
参考答案: D
解析:
无
7.(10分) 单选题
10
下列和整形,字符型和实型相互对应的选项是()。
A int float double
B double char int
C int char float
D int double char
参考答案: C
解析:
整数是int的,字符串的是char,实行是float或者double;
8.(10分) 单选题
10
下列哪一个运算符在运算中优先级最高()
A +
B -
C ==
D ++
参考答案: D
解析:
无
9.(10分) 单选题
10
下列属于合法的变量名是()
A a#
B 2a
C double
D SHORTINT
参考答案: D
解析:
A含有违法符号#,B用数字开头,C是关键字,都不对
10.(10分) 单选题
10
下列说法正确的是()
A C程序中必须包含头文件
B C程序中可以有多个含main()函数
C C程序main()函数中只有一条语句可以不用{}括起来
D C程序中,一行中可以写多条语句,只要每一条语句以分号结尾即可
参考答案: D
解析:
无
一、客观题
1.(10分) 单选题
10
C 语言的 switch 语句中,ca 后
A 只能为常量
B 只能为常量或常量表达式
C 可为常量及表达式或有确定值的变量及表达式
D 可为任何量或表达式
参考答案: B
解析:
无
2.(10分) 单选题
10
if(i==1){ printf("ABC"); } el{ if(i==-1){ printf("abc"); } el printf("efg"); }那么i==0时,输出的值为()
A ABC
B abc
C efg
D 无定值
参考答案: C
解析:
因为x==0,不等于1或-1,所以应该输出efg
3.(10分) 单选题
10
逻辑运算符中,运算优先级按从高到低依次为
A && ! ||
B || && !
C && || !
D ! && ||
参考答案: D
解析:
逻辑运算符优先级由高到低!>&&>||
4.(10分) 单选题
10
C语言对嵌套if语句的规定是:el总是与_______配对。
A 其之前最近的if
B 第一个if
C 缩进位置相同的if
D 其之前最近的且尚未配对的if
参考答案: D
解析:
强调“且尚未配对”
5.(10分) 单选题
10
以下程序片段,_______。 #include int main ( ) { int x=0,y=0,z=0; if (x=y+z) printf("***"); el printf("###"); return 0; }
A 有语法错误,不能通过编译
B 输出:***
C 可以编译,但不能通过连接,所以不能运行
D 输出:###
参考答案: D
解析:
“x=y+z”有嫌疑,似乎写作关系表达式“x==y+z”更合乎常规。不过,用赋值表达式在语法上也是合法的,y+z的值0赋值给x,值为0,当假值用,故输出###,若选B***,是因为没有区分赋值表达式与关系表达式。
6.(20分) 单选题
20
以下程序输出结果是______。 #include int main ( ) { int x=1,y=0,a=0,b=0; switch(x) { ca 1: switch (y){ ca 0 :a++ ;break ; ca 1 :b++ ; break ; } ca 2:a++;b++; break; ca 3:a++; b++; } printf("a=%d,b=%d",a,b); return 0; }
A a=1,b=0
B a=2,b=1
C a=1,b=1
D a=2,b=2
参考答案: B
解析:
找对分支,注意switch(x)表达的外层分支,ca 1中没有break语句,会接着执行下一个ca 2分支的语句
7.(10分) 单选题
10
可以写一个表达式,当“n是奇数”时,其值为真,否则为假。这个表达式不能是________。
A n%2==1
B n%2
C n%2=1
D C
参考答案: C
解析:
n%2==1是最正统的写法;对n%2,当n为奇数时为1,为偶数时为0,对应真与假,和n%2==1的值是一样的,所以可以这样写;n%2=1貌似靠谱,该用==却用成了=,反而成了语法错误的式子
8.(20分) 单选题
20
在下面的条件语句中(其中S1和S2表示C语言语句),只有_______在功能上与其他三个
语句不等价。
A if (a) S1; el S2;
B if (a==0) S2; el S1;
C if (a!=0) S1; el S2;
D if (a==0) S1; el S2;
参考答案: D
解析:
A、B、C均在a为非0时执行S1,只有D是当a为0时执行S1
一、客观题
1.(20分) 单选题
20
C语言中while和do-while循环的主要区别是
A do-while的循环体至少无条件执行一次
B while的循环控制条件比do-while的循环控制条件严格
C do-while允许从外部转到循环体内
D do-while的循环体不能是复合语句
参考答案: A
解析:
while是先判断条件再执行语句;do-while则是先执行依次语句再判断条件从而决定是否继续再执行循环体中的语句,这正是二者主要区别。
2.(20分) 单选题
20
下面有关for循环的正确的是
A for循环只能用于循环次数已经确定的情况
B for循环是先执行循环体语句,后判断表达式
C 在for循环中,不能用break语句跳出循环体
D for循环体语句中,可以包含多条语句,但要用花括号括起来
参考答案: D