一、选择题
1. 有以下程序:
执行时如输入为:
A.abcdefg
B.
c.
D.bcdefgh
答:D 则输出结果是( )。
【解析】题目中for 语句含义是,每次将函数getchar ( )的输入值赋给变量c ,如果不等于‘#’,则执行putcbar (++c), 即将当前变量c 值的ASCII 码+1后,再输出改变后的变量c 的值。当变量c 的值等于‘#’,则终止循环,所以输出应该是bcdefgh ,答案为D 选项。
2. 若有定义:inta=0,b=0, c=0, d=0; ,有C 语言表达式以下关于其执行顺序的叙述正确是( )。
A. 先执行a++, 表达式a++的值为0,短路,得a++,执行它
B. 先执行a++,表达式a++的值为0; 再执行b++,表达式b++的值为0,由此可确定
值为0,因此执行d++
C. 先执行a++,表达式a++的值为1; 再执行b++,表达式b++的值为1, 由此可确定
值为1, 因此执行C++
D. 先执行b++,表达式b++的值为1; 再执行a++,表达式a++的值为1,由此可确定
值为1,因此执行C++
答:A
【解析】表达式1? 表达式2:表达式3, 若表达式1为真,则执行表达式2, 否则执行表达式3。逻辑与运算符遵循“短路求值”策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数,表达式>中,左操作数a++的值为0, 已经可以确定整个逻辑表达式的结果为0, 因此右操作数b++不再求解,直接执行表达式3, 即d++, A 项正确。
3. 有以下程序:
程序运行后的输出结果是( )。
A.2,6
B.0,0
C.2,4
D.1,2
答:B
【解析】程序执行过程为:定义数组调用函数fun ,将数组地址传人函数,指针pi 指向a ,s 指向b ,定义指针t 并使其指向开辟的两个整型内存,为第一个内存赋值为数组a 第一个元素的2倍,即2,然后指针pi 指向a 数组第二个元素,为第二个内存赋值为数组a 第二个元素的2倍,即4,最后使指针s 指向动态开辟的两个内存的首地址。整个过程中数组b 没有发生变化,依次输出b 中元素为0,0,故B 项正确。
4. 有以下定义语句,编译时会出现编译错误的是( )。
A.
B.
C.
D.
答:D
【解析】a 是char 类型变量,"aa" 是字符串常量,不能将一个字符串赋值给一个字符变量。
5. 以下选项中,能用作数据常量的是( )。
答:A
【解析】A 项表示长整型;115。B 项,八进制数范围是0~7; C 项,浮点数表示中e 后面必须跟整数,D 项,八进制数应该是以零开始。
6. 以下关于C 语言数据类型使用的叙述中错误的是( )。
A. 若只处理“真”和“假”两种逻辑值,应使用逻辑类型
B. 若要保存带有多位小数的数据,可使用双精度类型
C. 若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D. 整数类型表示的自然数是准确无误差的
答:A
【解析】A 项错误,C 语言中没有逻辑类型,在C++中才引入的;B 项正确,float 类型称为单精度类型,double 类型称为双精度类型,一般系统中,为float 类型的变量分配4个字节的存储单元,为double 类型的变量分配8个字节的存储单元。C 项正确,struct 结构体,可以用来描述包含多种基本类型的复杂对象。
7. 表达式:(int )((double )9/2)—9%2的值是( )。
A.4
B.0
C.3
D.5
答:C
【解析】(int )((double )9/2)值为4,9%2值为1,相减值为3。
8. 以下不能对文件进行输出的库函数是( )。
A.fwrite
B.fputs
C.fpout
D.fprintf
答:C
【解析】fwrite 函数的功能是用来向文件写数据块。fputs 函数的功能是用来向指定文件输出一个字符串。fprintf 函数按照格式向文本文件中输出数据。这三者都是库函数,而fpout 不是库函数。
9. 以下关于结构化程序设计的叙述中正确的是( )。
A. —个结构化程序必须同时由顺序、分支、循环三种结构组成
B. 结构化程序使用goto 语句会很便捷
C. 在C 语言中,程序的模块化是利用函数实现的
D. 由三种基本结构构成的程序只能解决小规模的问题
答:C
【解析】A 项错误,一个结构化程序是顺序、分支、循环三种结构的结合,不是必须由此组成;B 项错误,程序虽然能够对输入数据的各种情况进行正确的处理,但由于程序中使用goto 语句进行流程的跳转,使得程序 的执行流程混乱,程序的可读性、可维护性均较差;D 项错误,C 语言能够编写非常强大的程序。