求输出1000以内各个位数相加等于9的数字。下面是我打的,我想每5个数空一行,上面的程序能达到想要的结果,下面的不行,但我不懂导致这两种不同结果的原因是什么,它们有什么区别,麻烦解释一下,谢谢,
#include <stdio.h>
int main(void)
{
int i,a=0,b=0,c=0,sum,x=0;
for(i=0;i<=999;i++)
{
a=i%10;
b=(i/10)%10;
c=i/100;
sum=a+b+c;
if(sum==9)
{
printf("%d,",i);
x++;
if(x%5==0)
printf("\n");
}
}
}
#include <stdio.h>
int main(void)
{
int i,a=0,b=0,c=0,sum,x=0;
for(i=0;i<=999;i++)
{
a=i%10;
b=(i/10)%10;
c=i/100;
sum=a+b+c;
if(sum==9)
{
printf("%d,",i);
x++;
}
if(x%5==0)
printf("\n");
}
}
你这样写输出换行的判断要注意求余=0的各种情况,通过分析可知第一循环i=0,x=0,第二循环i=1, x=0;这样的情况
可以改一下判断条件:
if(x==5) {x=0;printf("\n");}你再试看会不会?
作用域问题,第一个方法,吧第二个if限制在第一个if条件里面,后面这份代码,会对for循环的每一次都去判定,会导致多输出换行
sum增加了才要考虑排版换行问题,如果sum不增加,那x的值也不会变,会出现多余换行问题。