2016计算机二级《C语言》单选题训练及答案
(21)若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m 数组元素的引用中错误的是( )。
A)m[--i] B)m[2*2] C)m[m[0]] D)m[m[i]]
(22)下面的函数调用语句中func 函数的实参个数是( )。
func (f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8)));
A)3 B)4 C)5 D)8
(23)若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0}, *p=x;则错误引用x 数组元素的是( )。
A)*p B)x[5] C)*(p+1) D)*x
(24)若有定义语句:char s[10]="1234567\0\0";,则strlen(s)的值是()。
A)7 B)8 C)9 D)10
(25)以下叙述中错误的是( )。
A)用户定义的函数中可以没有return 语句
B)用户定义的函数中可以有多个return 语句,以便可以调用一次返回多个函数值
C)用户定义的函数中若没有return 语句,则应当定义函数为void 类型
D)函数的return 语句中可以没有表达式
(26)以下关于宏的叙述中正确的是( )。
A)宏名必须用大写字母表示
B)宏定义必须位于源程序中所有语句之前
C)宏替换没有数据类型限制
D)宏调用比函数调用耗费时间
(27)有以下程序
#include
main()
{ int i, j;
for(i=3; i>=l; i--)
{ for(j=1; j<=2; j++) printf("%d", i+j);
printf("\n");
}
}
程序的运行结果是( )。
A)2 3 4 B)4 3 2
3 4 5 5 4 3
C)2 3 D)4 5
3 4 3 4
4 5 2 3
(28)有以下程序
#include
main()
{ int x=l, y=2, z=3;
if(x>y)
if(y
else printf("%d", ++y);
printf("%d\n", x++);
}
程序的运行结果是( )。
A)331 B)41 C)2 D)1
(29)有以下程序
# include
main()
{ int i=5;
do
{ if (i%3=1)
if (i%5==2)
{ printf("*%d", i); break;}
i++;
} while(i!=0);
printf("\n");
}
程序的运行结果是( )。
A)*7 B)*3*5 C)*5 D)*2*6
(30)有以下程序
#include
int fun(int a,int b)
{ if(b==0) return a;
else return(fun(--a,--b));
}
main()
{ printf("%d\n", fun(4,2));}
程序的运行结果是( )。
A)1 B)2 C)3 D)4
(31)有以下程序
#include
#include
int fun(int n)
{ int *p;
p=(int*)malloc(sizeof(int));
*p=n; return *p;
}
main()
{ int a;
a = fun(10); printf("%d\n", a+fun(10));
}
程序的运行结果是( )。
A)0 B)10 C)20 D)出错
(32)有以下程序
#include
void fun(int a, int b)
{ int t;
t=a; a=b; b=t;
}
main()
{ int c[10]={1,2,3,4,5,6,7,8,9,0), i;
for (i=0; i<10; i+=2) fun(c[i], c[i+l]);
for (i=0; i<10; i++) printf("%d,", c[i]);
printf("\n");
}
程序的运行结果是( )。
A)l,2,3,4,5,6,7,8,9,0, B)2,l,4,3,6,5,8,7,0,9, C)0,9,8,7,6,5,4,3,2,1, D)
0,1,2,3,4,5,6,7,8,9,
(33)有以下程序
#include
struct st
{ int x, y;) data[2]={l,10,2,20};
main()
{ struct st *p=data;
printf("%d,", p->y); printf("%d\n",(++p)->x);
}
程序的运行结果是( )。
A)10,1 B)20,1 C)10,2 D)20,2