一、选择题
1. 以下程序段中,循环次数不超过10的是( )。 A. B. C. D.
【答案】A
【解析】A 项,
执行函数体判断条件不成立,退出循环,循环次数为1,不超过10
由于执行函数体时i 在增加,一直成立,
由于函次,A 项正确。B 项执行函数体i=6, 判断条件为程序陷入无限循环,循环次数大于10, B 项错误。C 项执行函数体i=3, 判断条件为
D 项执行函数体i=4, 判断条件为数体中i 每次増加2, 所以永远不可能等于10, 故程序会陷入无限循环,循环次数大于10, C 项错误。由于函数体中i 每次减少2, 所以永远不可能等于1,故程序会陷入无限循环,循环次数大于10, D 项错误。
2. 有以下程序
程序运行后的输出结果是( )。
A.1
B.10
C.11
D.2
【答案】A
【解析】初始化后,s 指向数组a 的首元素,在调用函数fun 时,形参s 和实参s 是两个独立的int 型指针,在fun 函数内部,形参s 指向新的存储空间,但是不会影响实参s 的指向。所以,在main 函数中,s 仍然指向数组a 的首元素,输出结果是1。
3. 有如下程序:
程序运行后的输出结果是( )。
A.8, 2,
B •8,8,
C.2, 4,
D.4, 8,
【答案】A
【解析】*的优先级低于++,即先运算组下一个元素;i=l,输出
8, 2。
4. 有以下程序
执行后的输出结果是( )。
A.32
B.24
C.5
D.40
【答案】A 【解析】是先判定i%5是否等于0, 然后不管判定结果如何,执行
是先执行++i,然后判定i%8是否等于0。上述for 循环可以写成:
再运算程序执行过程为:定义指针ptr 与数组然后指针加1, 指向数array , 执行for 循环,使指针指向数组,i=0, 输出指针指向的元素指针指向数组下一个元素;i=2退出for 循环。程序依次输出
5. 有以下程序
程序运行后,若从键盘输入(从第1列开始)
123
45678
则输出结果是( )。
A.1245
B.1256
C.1278
D.1267
【答案】A
【解析】scanf ( )是格式化输入函数;getehar ( )函数从键盘缓冲区读入下一个字符;putehar ( )输出一个字符;printf ( )函数是格式化输出函数。在题目中,程序执行到scanf ( )函数时,会暂停等待用户输入4个字符,按题意输入123〈回车〉后,字符1〜3被分别赋值到cl 〜c3中,而c4会得到一个换行符然后执行第1个getchar ( )函数,由于前面的scanf ( )函数读完了缓冲区中的所有字符,所以此时程序又会暂停等待用户输入,按题意输入45678〈回车〉后,缓冲区第一个字符4赋值c5, 第二个字符5赋值给c6。
6. 下列叙述中正确的是( )。
A. 每个C 程序文件中都必须要有一个main 函数
B. 在C 程序中main 函数的位置是固定的
C.C 程序中所有函数之间都可以相互调用
D. 在C 程序的函数中不能定义另一个函数
【答案】D
【解析】D 项正确,C 语言语法规定,在函数中不能定义其他函数。A 项错误,C 程序必须要有一个main 函数,但并不是每个文件中都要有;B 项错误,main 函数的位置没有特殊要求;C 项错误,从其他函数中不能调用main 函数。