请问: c语言输出问题

{inta=0,n;printf("\ninputn:");scanf("%d",&n);while(n--)printf("%d",a++*2);}请问1、这段程序输出... {
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
while (n--)
printf("%d",a++*2);
}
请问 1、这段程序输出之后为什么的书前面总有一个0,比如输入3,则输出024而不是24.

2、 在%d左边或者右边输入空格数目不同,得数之间怎么会有字符间距的差异呢?请问这点有什么文章可参阅?
展开
 我来答
正能量女战神
高粉答主

2013-08-06 · 关注我不会让你失望
知道大有可为答主
回答量:1.8万
采纳率:80%
帮助的人:2106万
展开全部
1、比如输入3,

∵a的初始值为0
∴所以第一次进行for循环时,a++*2,就是a先乘以2,然后a再+1,
输出一个0

以此类推,第二次for循环的时候 a=1 ,a*2=2 输出一个2
第三次for循环的时候 a=2 ,a*2=4 输出4,
∴最后输出024而不是24.
2、在%d左边或者右边输入空格数目不同,得数之间一定会有字符间距的差异的,因为在C语言中,空格也当字符处理,看看ASCII码表就能找到032是空格

回车,ASCII码13
换行,ASCII码10
空格,ASCII码32
参考资料http://wenku.baidu.com/view/e6ea6bce0508763231121258.html
Gtr720
2013-08-06 · TA获得超过325个赞
知道小有建树答主
回答量:945
采纳率:50%
帮助的人:365万
展开全部
第一次进入循环的时候 a=0 所以a*2=0 输出0
第二次进入循环的时候 a=1 所以a*2=2 输出2
第三次进入循环的时候 a=2 所以a*2=4 输出4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
z747803941
2013-08-06 · 超过17用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:40.1万
展开全部
1、a++*2等价于 a*2; a = a + 1;先执行a*2然后a自加1
2、这个问题可参考http://wenku.baidu.com/view/cadca7ff04a1b0717fd5dd37.html
自己多试试就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
insomnia0607
2013-08-06 · TA获得超过108个赞
知道答主
回答量:70
采纳率:0%
帮助的人:38.3万
展开全部
循环了3次,第一次是输出0.所以是024.
第一次。a++*2 = 0*2 = 0;然后a= 1;
a++与++a的区别是a ++是先进行其他运算,然后再对a++.后者先++再进行运算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
范德萨了就
2013-08-06 · 超过17用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:51.6万
展开全部
问题1:a++*2,这句话的意思就是a先乘以2,然后再自+1,因为a的初始值为0,所以第一次肯定输出一个0,如果你想第一次不为0,可以这么写,(++a)*a.
问题2:是的,空格也是字符,printf完全按照你的格式输出的,具体可以看C语言的格式输出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-06
展开全部
1 出现的第一个0 是计算出的a=0的值,0*2,然后a++;所以总会出现0;
2 百度printf试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式