1.以下选项中叙述正确的是(A)
A)函数体必须由{开始
B)C程序必须由main语句开始
C)C程序中的注释可以嵌套
D)C程序中的注释必须在一行完成
解析:函数体是函数首部下面的花括号内的部分,所以函数体必须由{开始,A选项正确。一个源程序文件可以包括预处理命令、全局声明、函数定义,程序总是从main函数开始执行的,不是main语句,B选项错误。C程序中的允许两种注释,以/开头的单行注释;以/*开始,以*结束的块式注释,D选项错误。函数可以嵌套,注释不能嵌套,C选项错误。
2.以下选项中叙述正确的是(A)
A)C语言的标识符可分为关键字、预定义标识符和用户标
识符三类
B)C语言的标识符可分为语句、变量和关键字三类
C)c语言的标识符可分为函数名、变量和预定义标识符三类
D)C语言的标识符可分为运算符、用户标识符和关键字三类
解析:标识符就是一个名称,用来表示变量、常量、函数以及文件等名称。C语言的标识符可分为关键字、预定义标识符和用户标识符三类,A选项正确,B、C、D选项错误。合法的标识符由字母、数字和下划线组成,并且必须以字母或下划线开头。用户标识符为用户根据编程需求自定义的标识符。关键字是指被C语言保留的,不能用作其他用途的一些标识符,它们在程序中都代表着固定的含义,用户不可重新定义。预定义标识符是系统已经有过定义的标识符,用户可以重新定义。
3.以下关于C语言函数参数传递方式的叙述正确的是(A)
A)数据只能从实参单向传递给形参
B)数据可以在实参和形参之间双向传递
C)数据只能从形参单向传递给实参
D)C语言的函数参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用
【解析】数据只能由实参单向传递给形参称为“值传递”,而不能由形参传回来给实参,A选项正确;数组名、指针等作参数,实参传递给形参的是地址值,这样形参和实参就指向同一段内存单元,在函数体内对形参数据的改变也将影响到实参。实参和形参之间不可双向传递,B、D选项错误。数据不能从形参传递给实参,C选项错误。
4.若有定义和语句:
int a,b;scanf("%d,%d.",&a,&b);
以下选项中的输入数据,不能把值3赋给变量a、5给变量b的是(D)
A)3,5,4 B)3.5 C)3.5, D)3 ,5
解析:scanf()的格式控制串可以使用其他非空白字符如本题中的逗号,但在输入时必须输入这些字符,以保证匹配,所以在3和5之间必须输入逗号不能有其他符号,才能保证a和b的正确赋值。所以选择D。
5.sizeof(double)是(A)
A)一个整型表达式
B)一个双精度型表达式
C)一个不合法的表达式
D)一种函数调用
【解析】sizeo是C语言中的一个操作符(operator).不是函数调用,简单的说其作用就是返回一个对象或者类型所占的内存字节数。所以选择A。
6.下列说法正确的是(D)
A)逻辑”或”(即运算符)的运算级别比算术运算要高
B)C语言的关系表达式:0<x<10完全等价于:(0<x)&&(x<10)
C)逻辑啡”(即运算符!)的运算级别是最低的
D)由&&构成的逻辑表达式与由||构成的逻辑表达式都有”短路”现象
【解析】C选项中,逻辑非”(即运算符!)的运算级别是最高的;A选项中,算术运算符优先级较高,关系和逻辑运算符优先级较低。
B选项中,先来看下0<x<10,表达式先执行0<x,返回的结果就两种0或者1,在执行右边x<10,有前面我们知道返回的结果就是0或者1这个数字永远小于10,所以最后的结果永远为真。我们再来看(0<x)&&(x<10)这个表达式,如梭左边0<x为真那么会执行右边,如果左边为假那么不会执行右边,所以结果有2种真或者假,故这2个表达式不等价。
D选项中,对于运算符&&和||构成的短路效应就是这个意思,&&前面是0时,&&符号后面的不计算.,||前面不是0时,||号后面的不计算.
7.下面选项中关于位运算的叙述正确的是(A)
A)位运算的对象只能是整型或字符型数据
B)位运算符都需要两个操作数
C)左移运算的结果总是原操作数据2倍
D)右移运算时,高位总是补0
解析:C语言提供了六种位运算符分别是 1.& 按位与 2. | 按位或 3.^ 按位异或 4. ~ 取反 5.<< 左移 6.>> 右移
按位取反只需要一个操作数,所以B选项错误,左移一位是原操作数的2倍,其他情况不是,比如左移两位就是原操作数的4倍,所以C选项错误,右移运算时,高位在某些情况下不是补0。
8.以下叙述中正确的是(B)
A)用户自己定义的函数只能调用库函数
B)实用的C语言源程序总是由一个或多个函数组成 C)不同函数的形式参数不能使用相同名称的标识符
D)在C语言的函数内部,可以定义局部嵌套函数
【解析】A选项中,”用户自己定义的函数只能调用库函数描述是不正确的,也可以调用自定义函数;C选项中,对于不同函数的形式参数可以使用相同名称的标识符;D选项中,关于函数的定义不可以嵌套,但函数的调用可以嵌套。因此B选项正确。
9.以下叙述中正确的是(D)
A)局部变量不能被说明为static
B)只有全局变量才有自己的作用域,函数中的局部变量没有作用域
C)只有在函数内部定义的变量才是局部变量 D)只要是用户定义的标识符,都有一个有效的作用域
解析:本题考查局部变量和全局变量作用域,B选项中局部变量也有作用域,C选项中,函数内部定义的也可能是全局变量,A选项错误,因为可以定义个静态局部变量。
10.有以下程序
#include <stdio.h>
main(){
int i=1:
i=i^i;
printf("%d",i);
}程序运行后的输出结果是()
A)1 B)-1 C)0 D)7
【解析】本题考查位运算中按位异或运算符,异或运算只有在两个比较的位不同时其结果是1,否则结果为0,运算符两边相同,所以结果为0,选项C正确。