printf("\n");
)
程序运行后的输出结果是____C____。
A)l,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1,
C)l,2,3,8,7,6,5,4,9,10, D)l,2,10,9,8,7,6,5,4,3,
答案:
C评析:
本题并不是对数组的所有元素进行排序,而是对从a[3]开始往后的4个元素进行排序。
9下面能正确进行字符串赋值操作的语句是C
A)chars[5]={"ABCDE"};B)chars[5]={'A','B','C','D','E'};
C)char*s;s="ABCDEF";D)char*s;scanf("%s",s);
10.下面各语句行中,能正是行赋字符串操作的语句行是C
A)CHARST[4][5]={“ABCDE”};
B)CHARS[5]={'A','B','C','D','E'};
C)CHAR*S;S=“ABCDE”;
D)CHAR*S;SCANF(“%S”,S);
11已知i、j、k为int型变量,若从键盘输入:
1,2,3↙,使i的值为l、j的值为2、k的值为3,以下选项中正确的输入语句是___C___。
A)scanf("%2d%2d%2dtt,&i,&j,&k);
B)scanf("%d %d %d",&i,&j,&k);
C)scanf("%d,%d,%dfI,&i,&j,&k);
D)scanf("i=%d,j=%d,k=%d,&i,&j,&k);
答案:
C评析:
如果在"格式控制"字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。
12下列定义变量的语句中错误的是D
A)doubleint_;B)int_int;C)charForD)floatUS$
13若以下选项中的变量已正确定义,则正确的赋值语句是C
A)x1=26.8%3B)1+2=x2C)x3=0x12(D)x4=1+2=3;
14以下叙述中正确的是(C)
A)break语句只能用于switch语句体中
B)continue语句的作用是:
使程序的执行流程跳出包含它的所有循环
C)break语句只能用在循环体内和switch语句体内
D)在循环体内使用break语句和continue语句的作用相同
15.1以下函数值的类型是___A__
fun(floatx)
{floaty;y=3*x-4;returny;}
A)intB)不确定C)voidD)float
知识点:
C语言函数的缺省的函数类型
15.2以下函数fun形参的类型是___D__
fun(floatx){floaty;y=3*x-4;returny;}
A)intB)不确定C)voidD)float
16下列叙述中正确的是(A)。
A.每个c程序文件中都必须要有一个main函数
B.在C程序中main()的位置是固定的
C.C程序中所有函数之间都可以相互调用,与函数所在位置无关
D.在C程序的函数中不能定义另一个函数
17.设有定义:
inta,pa=&a;以下scanf语句中能正确为变量a读入数据的是A
A)scanf(“%d”,pa);B)scanf(“%d”,A);
C)scanf(“%d”,&pA);D)scanf(“%d”,pA);
18若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是(C)
A)abs(x-y)<10B)x-y>-10&&x-y<10
C)!
(x-y)<-10||!
(y-x)>10D)(x-y)*(x-y)<100
19若变量已正确定义,有以下程序段C
inta=3,b=5,c=7;
if(a>b)a=b;c=a;
if(c!
=a)c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是C
A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7
20以下选项中,非法的字符常量是(C)
a)‘\t’b)‘\17’c)“\n”d)‘\xaa’
21.有以下程序
main()
{ints=0,a=1,n;
scanf("%d",&n);
do
{s+=1;a=a-2;}
while(a!
=n);
printf("%d\n",s);
}若要使程序的输出值为2,则应该从键盘给n输入的值是___B___。
A0B-3C-5D-1
22.有以下程序main(){inti,j;
for(i=1;i<4;i++)
{for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);
printf("\n");}}程序运行后的输出结果是B。
A1*1=1
1*2=22*2=4
1*3=32*3=63*3=9
B1*1=11*2=21*3=3
2*2=42*3=6
3*3=9
C1*1=11*2=21*3=3
2*1=22*2=4
3*1=3
D1*1=1
2*1=22*2=4
3*1=33*2=63*3=9
23若有定义语句:
doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是__D__。
A*(p+1)B*pC*xDx[5]
详细解答:
本题考查数组的下标是否越界,以及指针对变量的引用
B)选项x[5],下标越界.一维数组名是地址常量(数组首地址),始终指向第一个数组元素,进行赋值p=x,指针变量p也指向第一个数组元素如下图:
24有一个函数,
以下程序段中不能根据x的值正确计算出y的值的是【 A 】。
A.y=0;if (x>=0); if (x>0) y=1; else y=-1;
B.if(x>=0) if (x>0) y=1; else y=0; else y=-1;
C.if(x>0) y=1; else if (x==0) y=0; else y=-1;
D.y=0; if (x>0) y=1; else if (x<0) y=-1;
25以下对结构体类型变量的定义中,不正确的是C
A)
C)struct
{intn;
floatm;
}aa;
structaatdl;
D)struct
{intn;
floatm;
}tdl;
typedefstructaa
{intn;
floatm;
}AA;
AAtdl;
B)#defineAAstructaa
AA{intn;
floatm;
}tdl;
26若有定义语句:
chars[10]="1234567\0\0";,则strlen(s)的值A
A).7B).8C).9D).10
27.设变量已正确定义,则以下能正确计算f=n!
的程序段是(D)
A)f=0;B)f=1;
for(i=1;i<=n;i++)f*=i;for(i=1;i<=n;i--)f*=i;
Cf=1;D)f=1;
for(i=n;i>1;i++)f*=i;for(i=n;i>=2;i--)f*=i;
28有定义语句:
intx,y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是A
A)1112<回车>B)11,12<回车>
C)11,12<回车>D)11,<回车>
29.设有定义:
charp[]={'1','2','3'},*q=p;以下不能计算出一个char型数据所占自己数的表达式是A)sizeof(p)B)sizeof(char)C)sizeof(*q)D)sizeof(p[0])
答案应该选A。
对于B,计算的是char类型的字节大小,明显不对。
C、D答案等价,计算的都是字符'1‘的所占字节数,所以也不对。
30.下列条件语句中,功能与其他语句不同的是D
A)if(a)printf("%d\n",x);elseprintf("%d\n",y);
B)if(a==0)printf("%d\n",y);elseprintf("%d\n",x);
C)if(a!
=0)printf("%d\n",x);elseprintf("%d\n",y);
D)if(a==0)printf("%d\n",x);elseprintf("%d\n",y);
A:
如果a为真(不等于0就为真),就打印x,否则打印y;
B:
如果a等于0;就打印y,否则打印x;
C:
如果a不等于0,就打印x,否则打印y;
D:
如果a等于0,就打印x,否则打印y;
A,B,C都是:
如果0就打印y,否则x;
31.有以下程序
voidfun2(chara,charb){printf("%c%c",a,b);}
chara='A',b='B';
voidfun1(){a='C';b='D';}
main()
{fun1();
printf("%c%c",a,b);
fun2('E','F');
}
程序的运行结果是__D___。
A.CDABB.ABEFC.ABCDD.CDEF
32在c语言中,函数中变量的隐含存储类别是__________。
A)auto B)static C)extern D)无存储类别
答案:
A评析:
函数中变量的存储类别包括auto,static,extern,其中auto为隐含存储类别,static为静态存储类别,register是寄存器存储类别。
A评析:
函数中变量的存储类别包括auto,static,extern,其中auto为隐含存储类别,static为静态存储类别,register是寄存器存储类别。
33在调用函数时,如果实参是简单变量,它与对应形参间的数据传递方式是A
A单向值传递B传递方式由用户指定
C地址传递D由实参传给形,再由形参传回实参
34有以下程序
main()
{intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
for(i=0;i<4;i++)s+=aa[i][1];
printf("%d\n",s);
}程序运行后的输出结果是(B)
A)11B)19C)13D)20
35若有定义:
intaa〔8〕;。
则以下表达式中不能代表数组元素aa〔1〕的地址是
A)&aa〔0〕+1B)&aa〔1〕C)&aa〔0〕++D)aa+1
【答案】C【解析】在C语言中,数组的地址和数组中的第一个元素的地址相同。
数组中第一个元素地址的表示方法为&aa[0],与其等价的有&aa[0]++;选项A为数组的第1个元素的地址下移一位即是第二个元素aa[l]的地址;B也为数组的第二个元素的地址,选项D中aa表示数组的地址,加1表示数组首地址后移一位,即代表数组元素中的第二个元素aa[1]的地址。
36若程序中有宏定义行:
#defineN100则以下叙述中正确的是B
A)宏定义行中定义了标识符N的值为整数100
B)在编译程序对C源程序进行预处理时用100替换标识符N
C)对C源程序进行编译时用100替换标识符N
D)在运行时用100替换标识符N
[解析]本题考查的知识点是:
宏定义。
宏定义是预处理命令,即在C源程序进行编译之前,编译程序对源程序进行编译预处理时所进行的一种替换操作。
所以选项C和D可以排除。
宏定义是用宏名代替一个字符串,也就是作简单的置换,不做正确性检查。
所以选项A的叙述也不正确,宏替换时100被当作一个字符串来替换宏名的,而不是被看作整数值100。
故本题的正确答案为B。
37以下程序的输出结果是___A___。
f(intb[],intm,intn)
{inti,s=0;
for(i=m;i returns;
)
main()
{intx,a[]:
{1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%d\n",x);
)
A)10 B)18 C)8 D)15
答案:
A 评析:
本题中,主函数调用f函数,在f函数中执行了两次循环,第一次i=3,s=0+bi:
4,然后i的值被修改成5,仍然满足循环条件,进入第二轮循环,s=4+b[5]=4+6=10,随后,i的值被修改成7,不再满足循环条件,退出循环,返回s的值。
所以最后输出结果是10。
38有以下程序
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;
printf("%d\n",*p+*q);
}程序运行后的输出结果是B
A)16B)10C)8D)6
39设有如下说明
typedefstruct
{intn;charc;doublex;}STD;
则以下选项中,能正确定义结构体数组并赋初值的语句是A
A)STDtt[2]={{1,'A',62},{2,'B',75}};
B)STDtt[2]={1,"A",62,2,"B",75};
C)structtt[2]={{1,'A'},{2,'B'}};
D)structtt[2]={{1,"A",62.5},{2,"B",75.0}};
40下列函数定义中,会出现编译错误的是B
A)max(intx,inty,int*z) B)intmax(intx,y)
{*z=x>y?
x:
y;} intz;
z=x>y?
x:
y;
returnz;
}
C)max(intx,inty) D)intmax(intx,inty)
{intz; {return(x>y?
x:
y);}
z=x>y?
x:
y;return(z);
}
41有以下程序
intfun(intn)
{if(n==1)return1;
else
return(n+fun(n-1));
}
voidmain()
{intx;
scanf("%d",&x);x=fun(x);printf("%d\n",x);
}执行程序时,给变量x输入10,程序的输出结果是A
A)55B)54C)65D)45
A)解析:
本程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10=55。
42有如下程序
main()
{
intn[5]={0,0,0},i,k=2;
for(i=0;iprintf("%d\n",n[k]);
}该程序的输出结果是__A____。
A0B2C1D不确定的值
43下面程序的输出是__D____。
intm=13;
intfun2(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun2(a,b)/m);}
A.1B.10C.7D.2
44下面程序输出的结果是B
main()
{inti;
inta〔3〕〔3〕={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d",a〔2-i〕〔i〕);
}A)159B)753C)357D)591
45请读程序:
#include
#include
main()
{char*s1="AbCdEf",*s2="aB";
s1++;s2++;
printf("%d\n",strcmp(s1,s2));
}上面程序的输出结果是A
A)正数B)负数C)零D)不确定的值
46设有如下的程序段:
charstr[]="Hello";char*ptr; ptr=str;执行上面的程序段后,*(ptr+5)的值为B
A)'o' B)'\0' C)不确定的值 D)'o'的地址
47C语言中要求操作数都为整型数据的算术符是___C___。
A、/B、!
C、%D、==
48能正确表示逻辑关系:
a≥10或a≤0的C语言表达式(D)
A、a>=10ora<=0B、a>=0|a<=10C、a>=10&&a<=0D、a>=10||a<=0
49若有定义inta[10],则a代表的是数组a的_C
A、第一个元素B、最后一个元素C、首地址D、最后一个元素的地址
50运行C源程序的命令是_D
A、ALT+F5B、ALT+F9C、CTRL+F5D、CTRL+F9
51.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(B)
A)大写字母B)连接符C)数字字符D)下划线
52设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是__D____。
A)6.500000 B)6 C)5.500000 D)6.000000
53若有说明:
inti,j=7,*p=&i;,则与i=j;等价的语句是(B)
A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;
54以下选项中,不能作为合法常量的是 B
A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0
55有定义语句:
chars[10];,若要从终端给s输入5个字符,错误的输入语句是D
A)gets(&s[0]);B)scanf(“%s”,s+1);C)gets(s);D)scanf(“%s”,s[1]);
56设有说明语句:
chara='\72';则变量a()
A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法
答案是A选项,
57.1若已定义x和y为double类型,则表达式:
x=1y=x+3/2的值是:
A)1B)2C)2.0D)2.5
解析:
该表达式就是一个逗号表达式,所以要按照运算顺序先运算x=1,所以变量x的值为1.0,然后运算y=x+3/2,此表达式中需先计算二个整数相除3/2,结果为整数1,然后再与x相加,结果为2.0。
由于逗号表达式x=1y=x+3/2的值就是其最后一个表达式即y=x+3/2的值,此值即为2.0,所以正确的答案应该是C。
57.2若已定义x和y为double类型,则表达式:
x=2y=x+3/2的值是:
C
A)3.500000B