怎么改都一直跑出无穷无尽的1....,但是我把while里的放入一个自定义函数就可以
#include<stdio.h>
int main (void)
{
int m,n,number,y,sum;
printf("pls input two number:\n");
scanf("%d%d",&m,&n);
for (number=m;number<=n;number++){
y=number;
sum=0;
while(number>0) {
sum=sum+(number%10)*(number%10)*(number%10);
number=number/10;}
if (sum==y) printf("%d\n",y);
}
return 0;
}
内循环也在修改number
当number==0,外循环又开始循环了
for (number = m; number <= n; number++) {
y = number;
sum = 0;
int temp = number; // 创建一个新变量 temp
while (temp > 0) {
sum = sum + (temp % 10) * (temp % 10) * (temp % 10);
temp = temp / 10;
}
if (sum == y) {
printf("%d", y);
}
}
同一个函数中number重复赋值导致
【以下回答由 GPT 生成】
问题分析: 在这段代码中,问题出现在while循环内部的判断条件上。while循环的判断条件是number>0
,但在循环内部,number
的值被修改为了number/10
,也就是经过一次除法运算。由于循环条件一直为真,导致循环无法停止。
解决方案: 要修复这个问题,需要使用一个临时变量来保存循环中需要操作的变量值,而不改变原来的变量值。
下面是修改后的代码示例:
#include<stdio.h>
int main (void)
{
int m, n, number, y, sum;
int temp; // 添加一个临时变量来保存循环中number的值
printf("请输入两个数字:\n");
scanf("%d%d", &m, &n);
for (number=m; number<=n; number++){
y = number;
sum = 0;
temp = number; // 将number的值保存到temp中
while(temp>0) { // 使用temp作为判断条件
sum = sum+(temp%10)*(temp%10)*(temp%10);
temp = temp/10;
}
if (sum==y)
printf("%d\n", y);
}
return 0;
}
通过在循环中添加一个临时变量temp
来保存number
的值,可以确保循环的判断条件仍然是正确的,修复了while循环不停止的问题。
【相关推荐】