所以我得到了这个问题,我要计算并决定一个数字(1到100之间)是否特殊。如果数字的总和乘以4并且结果等于原始数字,则该数字是特殊数字。所以我写了代码。但循环不起作用。在任何循环之外,代码可以正常运行,其中变量号可以具有任何值。可能是什么问题?提前谢谢。
#include <stdio.h>
int main(void)
{
int number;
int originalnumber;
for(number=1;number<=100;number++)
{
originalnumber = number;
int sum = 0, result;
while(number>0)
{
result = number % 10;
sum = sum + result;
number = number / 10;
}
if((sum*4)==originalnumber)
{
printf("\n%d is special number.", originalnumber);
}
else
{
printf("\n%d is not special number.", originalnumber);
}
}
}
答案 0 :(得分:5)
您正在修改循环循环的变量:number
。
正如您对originalnumber
所做的那样,也可以复制number
,以便您可以修改它,而不会弄乱循环迭代。
答案 1 :(得分:2)
问题是因为您正在修改&#34;数字&#34; for循环中使用的变量。 您可以在循环中交换原始数字,如下所示,并为序列指定编号:
#include <stdio.h>
int main(void)
{
int number;
int originalnumber;
for(originalnumber=1;originalnumber<=100;originalnumber++)
{
number = originalnumber;
int sum = 0, result;
while(number>0)
{
result = number % 10;
sum = sum + result;
number = number / 10;
}
if((sum*4)==originalnumber)
{
printf("\n%d is special number.", originalnumber);
}
else
{
printf("\n%d is not special number.", originalnumber);
}
}
}
答案 2 :(得分:0)
不要在while循环中使用'number'变量。修改迭代外部循环的变量,导致异常行为。
答案 3 :(得分:0)
看到你正在改变while循环中的数字值以及每次变为零时。所以将数字值分配给一个新变量,然后对其进行更改。
cin.getline(name,ArSize);
} }