我正在写一个C程序,它应该显示100到1000之间的数字总和为20的所有数字。我在这里试过这段代码,但它当我编译时只显示0作为输出,你能帮助我吗?如果(iVsota == 20)在while循环之外,我也尝试移动。我正在使用Orwell Dev C++ IDE。C程序打印100到1000之间的数字总和为20
#include <stdio.h>
int main (void)
{
int iVnos=0;
int iOstanek=0;
int iVsota=1;
int iStevec1=100;
for(iStevec1=100; iStevec1<1000; iStevec1++)
{
while(iStevec1>0)
{
iOstanek=iStevec1%100;
iStevec1=iStevec1/10;
iVsota=iOstanek+iVsota;
if(iVsota==20)
{
printf("%i\n", iStevec1);
}
}
}
return(0);
我希望这样更好。
您在两个循环中都使用了'iStevec1'。这个逻辑是完全错误的!一旦达到0,你会在外循环中将它增加到1,并在内循环中回到0(并且它将继续永远运行,因为外循环只有在达到iStevec1 == 1000时才停止)。 – 2014-12-06 08:22:46
采取另一种方法,将数字放在字符缓冲区[]中,然后提取每个字符并用'0'进行减法,即得到所有数字。最好把它放在一个单独的功能例如'int sumOfDigits(int number);' – 2014-12-06 08:25:35