晓的成立是第几集:敲7的简单问题,为什么我得会不停的出7列???

来源:百度文库 编辑:高考问答 时间:2024/05/10 19:20:14
#include<stdio.h>
int main()
{
int n,i,m,a;
scanf("%d",&n);
for(i=0;i<=n;i++)
{
if(i%7==0)
{
printf("%d\n",i);

}
else
a=i;
while(i>7)
{
m=i%10;
i=i/10;
if(m==7||i==7)
printf("%d\n",a);

}

return 0;
}

}
就是输入任意一个数打出含7和7的倍数啊!

这个题目是不是要输出100内7的倍数并所有个位或十上含有"7"的整数?如果是的话正确的程序应该这样写:

#include<stdio.h>
main()
{
int n,i,m,a;
scanf("%d",&n);
for(i=0;i<=n;i++)
{
if(i%7==0)
printf("%d\n",i);
else
{a=i;
while(i>7)
{
m=i%10;
a=i/10;
if(m==7||a==7)
printf("%d\n",i);
break;
}
}
}
return 0;
}
/*原程序中有两处较大错误:
一 使用i\=10;语句,使程序陷入死循环.
二 在While中没有Break语句,无法跳出循环.
另外,应该在for循环之后才使用return 0;语句,不这样做虽然不会出错,但不符合规则,一般编译系统会提示警告.

再者,在while里面的printf语句最好加上一个换行,使程序结果看起来明朗.

最后,即使按以上输出,也会造成一些七的倍数和一些含七的数的重复,解决方法是在else和break这上段加上括号,以便七的倍数不去做后面的工作*/

因为你在程序里边修改了程序循环的控制变量。
for(i=0;i<=n;i++) 这里i是控制变量,也就是你循环到i>n才结束,但是你在程序里边修改了i的值。
m=i%10;
i=i/10;
所以你的控制变量i永远也不可能到达n。无限循环。
换个变量吧。

你输入的什么