C语言选择题(3道题),帮忙解答一下,谢谢!

1.分析下面的C语言代码:
int a=1,b=10;
do{
b-=a; a++;
}while (b- -<0);
则执行循环语句后b的值为()。 (单选题)。
A. 9 B. -2 C. -1 D. 8
答案: D

2.#include<stdio.h>
void main()
{
int a=3,b=2,c=1;
int x=10,y=20;
if(a<b)
if(b!=0)
if(!x)
y=1;
else if(x)
y=0;
y=-1;
printf("%d",y);
}
上面的C程序的输出结果是( )。 (单选题)。
A. 20 B. 1 C. 0 D. -1
答案: B

3、表达式18/4*sqrt(4.0)/8值的数据类型为()。 (单选题)
A. int B. float C. double D. 不确定
答案: C
分别解释一下,答案是怎么得来的。

1、int a=1,b=10;
do{
b-=a; a++;
}while (b- -<0);
do循环执行了一次,b执行了两次,第一次b=b-a,b变成了9,b=9>0,循环结束,执行b--,b=8;
2、结果应为-1,答案是错的,或者你拉掉了{ },因为无论上面执行了什么,都会执行倒数第二行: y=-1; 最后输入必为-1;
3、C语言中,sqrt()函数原型为double sqrt(double),所以上题为C,当然vc2008后函数有重载,需要指定类型。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-28
第一题:循环执行一次,b-=a; a++; 此时b=9,a=1,a++之后,a=2,b=8了
第2题 :因为a<b不成立,所以y=-1
3. 18/4*sqrt(4.0)/8开方后进行运算要进行数据转换
第2个回答  2011-08-28
1、第一次循环后就退出了循环。
b = 10 - 1 = 9 --> b-- --> b = 8

2、答案是D,除非你抄漏了标点。
就 y=-1;
printf("%d",y);
这两句有用,其他的都是障眼法。

3、这个无所谓吧,想是什么类型都可以。有xx特色的题目了。
第3个回答  2011-08-28
1、do while循环先执行一次do,执行后b=9,再执行while语句中的b--,得到b=8.
2、这种题目只要遵循else和最近的if匹配是很简单的,你可以把程序省略的else或if给添上。、
3、这个可以完全遵循数学运算,因为sqrt运行完后是double型的,所以结果是double型的
相似回答