第 1 页:选择题 |
第 5 页:程序填空题 |
第 6 页:程序改错题 |
第 7 页:程序设计题 |
31已知有如下结构体:
struct sk
{ int a;
float b;
}data,*p;
若有P一8Ldata,则对data的成员a引用正确的是( )。
A.(*p).data.aB.(*p).a;C.p->data.aD.P.data.a
参考答案:B
参考解析:本题主要考查结构指针:p=&data,访问结构体的成员。它可以通过结构变量访问,即data可以用等价的指针形式:(*p).a和P一>a来访问结构体变量中的成员。
32若有定义和语句:
int*。pp,*P,a=20,b=10;
pp=8Lp;P=&a;P=&.b;printf(”%d,%d\n”,*
P,**PP);
则输出结果是( )。
A.20,10B.20,20C.10,20D.10,10
参考答案:D
参考解析:本题考查指针变量的赋值。**pp是定义一个指针变量,语句pp=&p是将PP指向指针P,*P和**pp都是指针P所指的内存空间的内容,即b的值。
33合法的main()函数命令参数形式是( )。
A.main(int a,char*c口)B.main(int arc,char**arv)C.main(int argc,char*argv)D.main(int argv,char*argc[])
参考答案:C
参考解析:在C语言中,main()函数也可以有参数,例如,main(intar90,char*argv),argc是指字符串的指针数组,而其他几项表达不正确。
34当执行以下程序段时,( )。
x=-1:
do{x=x*x;)while(!x);
A.循环体将执行一次
B.循环体将执行两次
C.循环体将执行无限次
D.系统将提示有语法错误
参考答案:A
参考解析:do—while的功能是先执行一次循环体,再判断条件是否成立,当x=一l时,执行do语句,x=X*x=1、,接着执行while后的表达式,其值为0,退出循环,因此循环体只执行了一次。
35设x=011050,则x=x&01252的值是( )。
A.000000 1000 101000B.1111110100011001C.0000001 01 1 100010D.1100000OOOl0 1 000
参考答案:A
参考解析:本题主要考查按位与运算,x—Oll050的二进制形式为O001001000010lo00,01252的二进制形式为0000001010101010,两者相与得0000001000101000。
36下列选项不符合良好程序设计风格的是( )。
A.源程序要文档化
B.数据说明的次序要规范化
C.避免滥用got0语句
D.模块设计原则是高耦合、高内聚
参考答案:D
参考解析:在程序设计中,对于软件设计中的模块设计要保证高内聚和低耦合,源程序要有文档说明,同时对程序中数据的说明要规范化。而goto语句破坏程序的结构,要尽量避免使用。所以选项D不正确。
37若有说明“char sl E30]=”abc”,s2[]=”defghi“;”,
则在使用函数stcat(sl,s2)后,结果是( )。
A.sl的内容更新为abcdefghi
B.sl的内容更新为defghi\O
C.sl的内容更新为defghiabc\O
D.sl的内容更新为abcdefghi\O
参考答案:D
参考解析:strcat(sl,s2)函数的功能是把s2字符串连接到sl字符串的末尾,要保证sl有足够的空间容纳下连接后的字符串。
38有以下程序:
#include
main()
{ int x=4,y;
{ y=x;
if(!y)printf(”x”);
else
printf(”y”);
x--:
)while(x);
)
程序的输出结果是( )。
A.xyyxB.YYYYC.yyxxD.yxyx
参考答案:B
参考解析:本题考查d0—while语句和if…else语句。d0—while语句的功能是先执行循环体再判断条件,所以先判断if语句的条件,Y=一4,!Y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x一3,条件不成立,执行下面的else语句,输出y,然后将X的值减1,x=2,满足while循环条件,继续循环。第三次循环:先判断if语句的条件,y=2,!y为逻辑0,条件不成立,执行下面的else语句,输出Y,然后将x的值减1,x=1,满足while循环条件,继续循环。第四次循环:先判断if语句的条件,y=-l,!y为逻辑0,条件不成立,执行下面的else语句,输出Y,然后将x的值减1,x=0,不满足while循环条件,结束循环。所以选项B正确。
39有以下程序段:
int i,j,m=0;
for(i=1;i<=15;i+=4)
for(j=3;j<=19;j+=4)m++;
printf(”%d\n”,m);
程序段的输出结果是( )。
A.12B.15C.20D.25
参考答案:C
参考解析:
li=1<一15一一>J一3<一19一一>
m+十.m一1
j+4=7<=19m++m=2
j一十4—11<一19m=3J—l5m=4
19m=5
i+4—5<一15j又从3开始加5次m一10i+4—9<一15J又从3开始加5次m=15i一13<一15j又从3开始加5次m一20i十4—19>15结束m一20
40若有定义“double a;”,则正确的输入语句是( )。
A.scan{(”%if”,a);
B.scanf(”%f”,&a);
C.scan{(”%If”,&a)
D.scan{(”%le”,&a);
参考答案:D
参考解析:
D。【解析】本题考查scanf函数的调用形式:scanf(格式字符串,输入项地址表)。题中定义变量a为双精度型变量,双精度变量的格式符为“le”;变量的地址用取地址符“&”加变量名表示,所以选项D正确。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |