设为首页 加入收藏

TOP

07年4月等级考试二级C语言模拟练习一[2]
2014-11-23 20:06:38 】 浏览:627
Tags:07年 4月 等级考试 二级 语言 模拟 练习

(23)若定义:int a=511,*b=&a;则printf("%d\n",*b);的输出结果为
A)无确定值
B)a的地址
C)512
D)511
【答案】D
【解析】本题中先定义了一个int型的变量a并赋初值为511,接着定义了一个指向a的指针变量b,在printf()函数的输出格式中,是输出*b,即输出指针所指向变量a的值为511,因此输出511。

(24)以下程序的输出结果是
main()
{ int a=5,b=4,c=6,d;
printf(("%d\n",d=a>b )(a>c a:c):(b));
}
A)5
B)4
C)6
D)不确定
【答案】C
【解析】在C语言中问号表达式(如:a>c a:c;)的计算规则为:如果a>c为真,那么表达式的值为a的值;否则表达式的值为c的值。本题中的printf()函数中的输出表达式,首先计算括号内的条件表达式,它的值为6(a>c a:c中a>c即5>6为假故该表达式的值为c的值即为6),然后再计算外面表达式(等价于a>b 6:b)的值,同理可得该表达式的值为6,将值6赋值给d,因此最后输出该表达式的值为6。

(25)以下程序中,while循环的循环次数是
main()
{ int i=0;
while (i<10)
{ if(i<1)continue;
if(i==5) break;
i++;
}

}
A)1
B)10
C)6
D)死循环,不能确定次数
【答案】D
【解析】break语句只能在循环体和switch语句体内使用,当break出现在switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但不在switch语句体内时,则在执行break后,跳出本层循环体。而continue语句的作用是结束本次循环,即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。本程序中,变量i的初始值为0,判断while后面括号内表达式的值为真,执行循环体内的if语句,判断if后面括号内表达式的值为真,执行“continue;”语句。因continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判断,所以i的值未发生变化,循环条件仍然为真,if语句也仍然成立,因此循环将无止境地进行下去。

(26)以下程序的输出结果是
main()
{ int a=0,i;
for(i=1;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}
A)31
B)13
C)10
D)20
【答案】A
【解析】switch语句的执行过程是:在switch后面的表达式的值和case后面常量表达式的值吻合时,就执行该case分支的语句。如果在该语句的后面没有break语句,则按顺序继续执行下一个case分支,直到遇到break语句或switch多分支语句结束,在switch语句中,break语句的作用是使流程跳出switch结构,终止switch语句的执行。在本题中,因为每个case语句后面都没有break语句,所以,第一轮循环(i==1)执行过后a的值为8,第2轮(i==2)执行过后a的值为16,第3轮(i==3)执行过后a的值为26,第4轮(i==4)执行过后a的值为31,然后执行“i++”语句,这时循环条件为假,循环结束。

(27)以下程序的输出结果是
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b‖!c;
printf("%d\n",d);
}
A)1
B)0
C)非0的数
D)-1
【答案】A
【解析】由于单目运算符优先级高于“&&”和“||”运算,所以先计算!a、!b和!c分别为“假”、“假”、“真”,然后是&&运算和“||”运算,原表达式就等价于“假”&&“假” ||“真”,又由于“&&”的优先级高于“||”运算符,所以先计算“假”&&“假”,还是为假,最后是“假”||“真”为真。因此最后d被赋值为1,故最后输出为1。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言中time函数 下一篇二级C语言教程章节测试10.字符串

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目