1、有以下程序 main() {
int p[8]={11,12,13,14,15,16,17,18},i=0,j=0; while(i++<7) if(p[i]%2) j+=p[i]; printf(\"%d\\n\}
程序运行后的输出结果是( ) 。 A.42 B.56 C.60 D.45 正确答案:D
2、以下叙述中错误的是( ) 。
A.数组名代表的是数组所占存储区的首地址,其值不可改变
B.只有double类型数组,不可以直接用数组名对数组进行整体输入或输出 C.可以通过赋初值的方式确定数组元素的个数
D.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 正确答案:B
3、以下能正确定义一维数组的选项是( ) 。 A.int a[5]={0,1,2,3,4,5}; B.int a[5]=\"0123\"; C.char a[]={0,1,2,3,4,5}; D.char a={'A','B','C'}; 正确答案:C
解析: D、不加[ ],a只能被看作是 一个字符变量,只能接收一个字符 4、有以下程序 main()
{ char p[ ]={‘a’,’b’,’c’},q[ ] =”abc”; printf(\"%d %d\\n\};
程序运行后的输出结果是( ) 。 A.4 4 B.3 3 C.3 4 D.4 3 正确答案:C
解析: C、p[] 只能认作 字符数组,不会有字符串的结束标志,所以只有3个字符 q[] 是字符串,末尾还会有字符串的结束标志,所以有4个字符 5、以下程序运行后的输出结果是( ) 。 main()
{ int i,j,a[][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++)
for(j=i+1;j<3;j++) a[j][i]=0; for(i=0;i<3;i++)
{ for(j=0;j<3;j++) printf(\"%d \ printf(\"\\n\"); } } A.1 2 3 0 5 6 0 0 9
B.1 2 3 0 0 0 0 0 9 C.0 0 0 0 0 0 0 0 0 D.1 2 0 4 0 6 0 8 9 正确答案:A
6、若有定义语句:int m[ ]={5,4,3,2,1},i=4; , 则下面对m 数组元素的引用中错误的是( )。 A.m[m[0]] B.D)m[m[i]] C.m[2*2] D.m[--i] 正确答案:A
解析: A、因为 m[0]=5 所以 m[m[0]] 相当于 找m[5] 这个元素 不存在,下标超界
7、若有定义语句:int a[3][6]; ,按在内存中的存放顺序, a 数组的第 10 个元素是( )。 A.a[0][4] B.a[0][3] C.a[1][3] D.a[1][4] 正确答案:C
8、以下错误的定义语句是( )。
A.int x[4 ][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
B.int x[2][3]={1,2,3,4};
C.int x[3][3]={{0},{1},{1,2,3}};
D.int x[4 ][ ]={{1,2,3,},{1,2,3},{1,2,3},{1,2,3}}; 正确答案:D
9、以下叙述中正确的是( ) 。 A.可以在一个函数中定义另一个函数 B. 构成C程序的基本单位是函数 C.main()函数必须放在其它函数之前
D.所有被调用的函数一定要在调用之前进行定义 正确答案:B
10、设函数fun的定义形式为 void fun(char ch,float x) { … }
则以下对函数fun 的调用语句中,正确的是( ) 。
A.fun(32,32); B.t=fun(‘D’,16.5); C.fun(\"abc\D.fun(‘65’,2.8); 正确答案:A 11、有以下程序 char fun(char x , char y) { if(x{ int a=’9’,b=’8’,c=’7’;printf(“%c\\n”,fun(fun(a,b) ,fun(b,c) ));
}
程序的执行结果是( ) 。 A.9 B.7
C.函数调用出错 D.8
正确答案:B
12、C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是(A.void B.double C.float D. int 正确答案:D 13、有以下程序 float fun(int x,int y) { return(x+y); } main()
{ int a=2,b=5,c=8;
printf(“%3.0f\\n”,fun((int)fun(a+c,b),a-c)); }
程序运行后的输出结果是( ) 。 A.21 B.编译出错
C.9.0 D.9
正确答案:D
。 )