1、以下能正确定义一维数组的选项是____。
- A:int a[5] = {0,1,2,3,4,5};
- B:char a[] = {0,1,2,3,4,5};
- C:char a = {‘A’,‘B’,‘C’};
- D:int a[5] = “0123”;
解析
- A数组中的元素个数多了一个;
- C定义的是字符不是数组;
- D定义的int型但赋值是字符串。
答案:B
2、下述关于C语言文件操作的结论,正确的是____。
- A:对文件操作前,必须先定义一个结构类型,用来存放文件的有关信息。
- B:对文件操作必须先打开文件。
- C:对文件操作必须先关闭文件。
- D:对文件操作前必须先测试文件是否存在,然后再打开文件。
解析
在C语言中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,因此在打开文件前不必对其检查文件是否存在。
答案:B
3、若int a=1, b=2, c=3, d=4, m=2, n=2; 执行(m=a>b)&&(n=c>d)后n的值为____。
- A:1
- B:2
- C:0
- D:4
解析
先执行“逻辑与”的前半段“m=a>b”,“=”的优先级小于“>”,“a>b”不成立,则m=0;(m=a>b)&&(n=c>b)是两个赋值表达式的“逻辑与”计算,当前面(m=a>b)为假时,(m=a>b)&&(n=c>b)必得假,则不需要计算(n=c>b),所以n=2不变化,故n为2。
答案:B
4、设int m=1, n=2; 则m++==n的结果是____。
- A:0
- B:1
- C:2
- D:3
解析
“m++”中m执行完成后才+1,所以此时表达式“m++”为1,故“m++n”相当于12,因此答案为0,A选项正确。
答案:A
5、关于C语言叙述正确的是____。
- A:C语言程序是由过程和函数组成的
- B:C语言函数可以嵌套调用,例如:fun(fun(x))
- C:C语言函数不可以单独编译
- D:C语言中除了main函数,其他函数不可作为单独文件形式存在
解析
C语言程序是由主函数和若干子函数构成的,可以嵌套使用。主函数调用子函数,子函数在定义时是并列的,子函数可以相互调用或被多次调用。
答案:B
6、若有如下C语言宏定义语句,则表达式M(1,2)*M(3,4)的值是____。
#define M(x,y) x+y
- A:11
- B:13
- C:15
- D:21
解析
M(x,y) x+y与M(x,y) (x+y)有区别,因为题中x+y并没有加小括号,所以计算应该是1+2*3+4
答案:A
7、下列关于C语言数值常量定义不正确的是____。
- A:082
- B:82L
- C:8.0E+2
- D:0x8E2
解析
- A:以0开头表示该数为8进制数,每位数值的取值范围应为0~7,故不正确
- B:以L结尾表示该数值为long型(long int 或long double)
- C:科学计数法,表示8.0*10^2
- D:以0x开头表示该数为16进制数,其中E表示十进制数14
答案:A
8、若程序中国有宏定义行#define N 2014
,以下叙述中正确的是:
- A:宏定义行中定义了标识符N的值为整数2014
- B:在编译程序对C源程序进行预处理时用2014替换标识符N
- C:在运行时用2014替换标识符N
- D:对C源程序进行编译时用2014替换标识符N
解析
宏定义在预处理时替换字符串。
答案:B
9、假定X为一个用户自定义类,则执行“X T(3),S[3],*p[2];”语句后,自动调用该类构造函数的次数为____。
- A:3
- B:4
- C:6
- D:8
解析
T(3)是一个函数,参数为3,调用一次。S[3]是一个长度为3的数组,调用三次。*p[2]仅仅定义指针标量但是没有分配内存资源。所以共调用4次。
答案:B
10、结构可以看作特殊的类,结构中成员的访问权限是____。
- A:public
- B:protected
- C:private
- D:static
解析
结构体和类的最大区别就是默认属性不同,在类中如果前面没写public的属性定义就是private,但在结构体中如果不写就默认为public。