gpt4 book ai didi

c - 为什么我的代码没有给出正确的输出?

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:15 25 4
gpt4 key购买 nike

这是打印用户输入的 m 到 n 范围内的所有 armstrong 数字的代码。但是当我运行它时,它没有给出正确的输出。假设我输入 m 为 1,n 为 10000,它只显示“1 is armstrong”,没有别的。如果我的代码有问题请告诉我。

#include<stdio.h>
void main()
{

int m,n,a,i,j=0,r;
printf("Enter m\n");
scanf("%d",&m);

printf("Enter n\n");

scanf("%d",&n);

for(i=m;i<=n;i++)
{
int temp=i;
while(i>0)
{
r=i%10;
j=j+r*r*r;
i=i/10;
}

if(j==temp)
{
printf("%d is armstrong\n",temp);
}


}
}

最佳答案

我看到你的程序有两个错误,j 只初始化了一次,你正在破坏循环控制 i。要补救,请在循环内初始化 j,并使用 temp 而不是 i

#include<stdio.h>

int main(void) // modern style
{
int m, n, i, j, r;
printf("Enter m\n");
scanf("%d", &m);

printf("Enter n\n");
scanf("%d", &n);

for(i = m; i <= n; i++) {
j = 0; // initialise j
int temp = i;
while(temp > 0) { // work with temp
r = temp % 10;
j = j + r * r * r;
temp = temp / 10;
}

if(j == i) {
printf("%d is armstrong\n", i);
}
}
}

程序输出:

Enter m1Enter n100001 is armstrong153 is armstrong370 is armstrong371 is armstrong407 is armstrong

关于c - 为什么我的代码没有给出正确的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53850926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com