c语言while问题

main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
while (n--)
printf("%d ",a++*2);
}
中的while (n--)和最后输出的a++*2是怎么算出来的呢? 多谢各位

首先说一下while:
括号里面表示while语句执行的条件,并且在C和C++中有这样的规定:逻辑类型和整数类型可以互换。举个例子:如果括号中表示的是0(注意是整数0),则条件等价于false;反之,如果括号中表示的是非0的整数,则条件等价于true。
其次是后面的a++*2的运算:
根据C语言的运算符先后次序可知,此式应该先算a++,然后将所得结果*2即可得到最后答案。

举个例子吧:
假如你输入的n是4,则程序运行的结果:
第一次while循环:此时n=4,a=0,则a++*2=2;
第二次while循环:此时n=3,a=1,则a++*2=4;
第三次while循环:此时n=2,a=2,则a++*2=6;
第四次while循环:此时n=1,a=3,则a++*2=8;
第五次while循环:此时由于n=0,while括号中的条件为false,故程序不执行while语句中的内容,故最后的结果就是:2,4,6,8
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-02-16
while (n--)
判断n是否为真,再减一,若果为真,即非0,则循环,为假,即0,则结束程序.

关于a++*2的正确解答(tc测试过了)
例如输入了3:
第1次循环:此时n=3,a=0,a*2=0,输出0,a自增1
第2次循环:此时n=2,a=1,a*2=2,输出2,a自增1
第3次循环:此时n=1,a=2,a*2=4,输出4,a自增1
第4次循环:此时由于n=0,while括号中的条件为真,故程序不执行while语句中的内容
最后的结果就是:0,2,4
第2个回答  2008-02-16
比如输入n=3
那么执行while (n--)
printf("%d ",a++*2);
就是while (3)
printf("%d ",0*2); 结果0

while (2)
printf("%d ",1*2); 结果2

while (1)
printf("%d ",2*2); 结果4
接下来循环条件为0(假)所以不执行循环体
所以最后结果是0 2 4
第3个回答  2008-02-17
asowychun 经理 四级(1193) | 我的提问 | 我的回答 | 知识掌门人 | 我的消息(0/0) | 百度首页 | 退出
新闻 网页 贴吧 知道 MP3 图片 百科
帮助

百度知道 > 电脑/网络 > C/C++相关问题
• 有关一个简单问题的编程,请用C语言。(高分)
• c语言while循环的一些问题。急
• C语言while的问题,在线等啊~
• c语言 while的小问题
• c语言 while循环问题
更多>>

分类上升达人排行榜
用户名 动态 上周上升
WXD11011 1240
自由的菜鸟 800
jackilee1980 600
中国死狗 570
leekumbong 540
更多>>

订阅该问题
电脑投币式身高体重人体称
能判断体形是否正常的投币式电脑人体秤(投币式身高体重机)越来越受到人们的欢迎.
www.zrtc.com
您想在自己的网站上展示百度“知道”上的问答吗?来获取免费代码吧!
--------------------------------------------------------------------------------
如要投诉或提出意见建议,请到
百度知道投诉吧反馈。
添加到搜藏待解决
c语言while问题
悬赏分:5 - 离问题结束还有 14 天 21 小时
main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
while (n--)
printf("%d ",a++*2);
}
中的while (n--)和最后输出的a++*2是怎么算出来的呢? 多谢各位
提问者:ds030406 - 助理 二级
回答 共 5 条
N你输入多少它每次自减一不就完了~~

A自加1再乘2么

知道N==0了~~就不循环了么

是你要知道的吗?
回答者:tclzsmk - 经理 四级 2-16 21:55
比如输入n=3
那么执行while (n--)
printf("%d ",a++*2);
就是while (3)
printf("%d ",0*2); 结果0

while (2)
printf("%d ",1*2); 结果2

while (1)
printf("%d ",2*2); 结果4
接下来循环条件为0(假)所以不执行循环体
所以最后结果是0 2 4
回答者:追_魂 - 助理 二级 2-16 21:59
比如你输入3.
n=3,打印:0 a=0
n=2,打印:2 a=1
n=1,打印:4 a=2
回答者:mvlung - 经理 四级 2-16 22:00
首先说一下while:
括号里面表示while语句执行的条件,并且在C和C++中有这样的规定:逻辑类型和整数类型可以互换。举个例子:如果括号中表示的是0(注意是整数0),则条件等价于false;反之,如果括号中表示的是非0的整数,则条件等价于true。
其次是后面的a++*2的运算:
根据C语言的运算符先后次序可知,此式应该先算a++,然后将所得结果*2即可得到最后答案。

举个例子吧:
假如你输入的n是4,则程序运行的结果:
第一次while循环:此时n=4,a=0,则a++*2=2;
第二次while循环:此时n=3,a=1,则a++*2=4;
第三次while循环:此时n=2,a=2,则a++*2=6;
第四次while循环:此时n=1,a=3,则a++*2=8;
第五次while循环:此时由于n=0,while括号中的条件为false,故程序不执行while语句中的内容,故最后的结果就是:2,4,6,8
回答者:steven432221 - 江湖新秀 四级 2-16 22:05
while (n--)
判断n是否为真,再减一,若果为真,即非0,则循环,为假,即0,则结束程序.

关于a++*2的正确解答(tc测试过了)
例如输入了3:
第1次循环:此时n=3,a=0,a*2=0,输出0,a自增1
第2次循环:此时n=2,a=1,a*2=2,输出2,a自增1
第3次循环:此时n=1,a=2,a*2=4,输出4,a自增1
第4次循环:此时由于n=0,while括号中的条件为真,故程序不执行while语句中的内容
最后的结果就是:0,2,4
回答者:zhangqiang312 - 助理 三级 2-16 22:23
我也来回答:
回答即可得2分,回答被采纳则获得悬赏分以及奖励20分。 积分规则
回答字数在10000字以内

参考资料:
如果您的回答是从其他地方引用,请表明出处。

匿名回答

©2008 Baidu
第4个回答  2008-02-16
N你输入多少它每次自减一不就完了~~

A自加1再乘2么

知道N==0了~~就不循环了么

是你要知道的吗?
第5个回答  2008-02-16
比如你输入3.
n=3,打印:0 a=0
n=2,打印:2 a=1
n=1,打印:4 a=2
相似回答