c - 为什么我的代码没有给出正确的输出?
问题描述
这是打印用户输入的 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);
}
}
}
解决方案
for(i=m; i<=n; i++)
{
j = 0;
int temp = i;
while(temp > 0)
{
r = temp % 10;
j = j + r*r*r;
temp = temp/10;
}
if(j == i)
{
printf("%d is armstrong\n", i);
}
}
在 while 循环中,您需要使用变量 temp 以使 i 保持不变,以便 for 循环正确继续。在开始新的 while 循环之前,设置 j = 0 以从 0 重新开始计数。在 if 语句中比较 j == i 因为 temp 变量被 while 循环减少为 0。
推荐阅读
- java - Java 不好的做法:new... ().doSomething()?
- sabre - 预订航段(EnhancedAirbook)和出票(AirTicket)之前的“AAA”
- graphql - GraphQL 解析器仅解析第一种类型
- pytorch - Pytorch:具有多个损失的多个数据集
- javascript - FCM“Firebase”延迟,有时工作没有任何延迟
- java - 用一维数组java填充二维数组
- java - 如何使用 Spring Boot 嵌入式 ldap 服务器向 LDIF 文件添加条目
- amazon-web-services - 卡住运动交错窗口
- python - 如何使用 Jupyter Notebook 在 Python 中更慢地抓取网站?
- c - 在 CUDA 上与 RSA 加密作斗争