请问: 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左边或者右边输入空格数目不同,得数之间怎么会有字符间距的差异呢?请问这点有什么文章可参阅? 展开
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
while (n--)
printf("%d",a++*2);
}
请问 1、这段程序输出之后为什么的书前面总有一个0,比如输入3,则输出024而不是24.
2、 在%d左边或者右边输入空格数目不同,得数之间怎么会有字符间距的差异呢?请问这点有什么文章可参阅? 展开
6个回答
展开全部
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
∵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
展开全部
第一次进入循环的时候 a=0 所以a*2=0 输出0
第二次进入循环的时候 a=1 所以a*2=2 输出2
第三次进入循环的时候 a=2 所以a*2=4 输出4
第二次进入循环的时候 a=1 所以a*2=2 输出2
第三次进入循环的时候 a=2 所以a*2=4 输出4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、a++*2等价于 a*2; a = a + 1;先执行a*2然后a自加1
2、这个问题可参考http://wenku.baidu.com/view/cadca7ff04a1b0717fd5dd37.html
自己多试试就行了
2、这个问题可参考http://wenku.baidu.com/view/cadca7ff04a1b0717fd5dd37.html
自己多试试就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
循环了3次,第一次是输出0.所以是024.
第一次。a++*2 = 0*2 = 0;然后a= 1;
a++与++a的区别是a ++是先进行其他运算,然后再对a++.后者先++再进行运算。
第一次。a++*2 = 0*2 = 0;然后a= 1;
a++与++a的区别是a ++是先进行其他运算,然后再对a++.后者先++再进行运算。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题1:a++*2,这句话的意思就是a先乘以2,然后再自+1,因为a的初始值为0,所以第一次肯定输出一个0,如果你想第一次不为0,可以这么写,(++a)*a.
问题2:是的,空格也是字符,printf完全按照你的格式输出的,具体可以看C语言的格式输出。
问题2:是的,空格也是字符,printf完全按照你的格式输出的,具体可以看C语言的格式输出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-06
展开全部
1 出现的第一个0 是计算出的a=0的值,0*2,然后a++;所以总会出现0;
2 百度printf试试
2 百度printf试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询