答案:A
评析:条件表达式的一般形式为:表达式17表达式2:表达式3
本题先求的是a
(23)有以下程序 main( ) {
int p[8]={11,12,13,14,15,16,17,18},i=O,j=0;
while(i++<7)if p[i]%2)j+-=p[i];
printf(―%d\n‖,j); }
程序运行后的输出结果是________。
A)42 B)45 C)56 D)60 答案:B
评析:本程序的作用是求除p[O]外的其它奇数的和。
(24)有以下程序 main() {
char a[7]= ―a0\OaO\0‖; int i,j;
i=sizeof(a);j=strlen(a);
printf(―%d%d\n‖,i,j); )
程序运行后的输出结果是________。
A)2 2 B)76 C)7 2 D)6 2 答案:C
评析:c语言中以?\0‘作为字符串的结束符,且strlen()函数计算的是?\0‘字符前的所有字符的个数。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。
(25)以下能正确定义一维数组的选项是________。
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″; 答案:B
评析:选项A中定义的是5个数组元素,但赋值的时候赋的是6个元素,所以出错;选项c不符合数组定义形式,数组名后应加上―[]‖;选项D的类型说明符错误,如果用char定义就对了;选项B中的0,1,2,3,4,5分别表示对应字符的ASCII码,所以选项B是正确的。
(26)有以下程序
int fl(int x,int y){return x>y?x:y;}
int f2(int x,int y){return x>y?y:x;} main() {
int a=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));f=fl(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf(―%d,%d,%d\n‖,e,f,g); )
程序运行后的输出结果是________。
A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7 答案:A
评析:函数n的功能是返回两个数中比较大的值,f2的功能是返回两个数中比较小的值。
(27)已有定义:char a[]=‖xyz‖,b[]={‘x‘,‘y‘,‘z};,以下叙述中正确的是________。
A)数组a和b的长度相同 B)a数组长度小于b数组长度
C)a数组长度大于b数组长度 D)上述说法都不对 答案:C
评析:c语言规定?\0‘为字符串结束标志。所以―char a[]=―xyz‖‖的数组长度为4,而―b[]={?x‘,?y‘,?z‘};‖的数组长度为3,数组长度与strlen函数所求的长度不同,本题是指数组占内存
空间的大小。
(28)有以下程序
Void f(int *x, int *y) { int t;
t= *x; *x=*y;‘*y=t; ) main( ) {
int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;q=&a[7];
while(p {f(p,q); p++; q–;} 。 for(i=0;i<3;i++) printf(―%d‖,a[1][i]); } 程序运行后的输出结果是________。 A)8,2,3,4,5,6,7,1, B)5,6,7,8,1,2,3,4. C)1,2,3,4,5,6,7,8, D)8,7,6,5,4,3,2,l, 答案:D 评析;本程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。 (29)有以下程序 main() { im a[3][3],*p,i; p=&a[0][o]; for(i=0;j<9;i++) p[i]=I; for(i=0;j<3;i++)printf(―%d‖,a[1][i]); ) 程序运行后的输出结果是________。 A)012 B)123 C)234 D)345 答案:D 评析:本题赋值后,a的数组元素的值分别为a[01[0]=0,a[0][1]=1,a[0][2]=2,a[1][0]=3,a[1][1]=4,a[1][2]=5,a[2][0]=6,a[2][1]=7,a[2][2]=8,故本题输出的值为345。 (30)以下叙述中错误的是________。 A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出