A1623412722 2022-10-14 14:13 采纳率: 50%
浏览 21
已结题

c语言初学者求纠错,自己看不出来

c语言初学者,请问这段代码为什么可以运行但没有任何输出呢。同时代码若有不足希望指正。

代码如下
/*水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例如:153 = 1 + 125+ 27。本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3<=N<=7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行*/
#include <stdio.h>
int main()
{
int N=0;
printf("输入一个数字:");
scanf("%d",&N);
int x=1;
int n=N;
for (;n>0;n=n-1)
{
x*=10;
}
n=N; //水仙花数小于x
int y=x/10; //大于y 且y为水仙花数的位数及最小值
int a;
int sum=1;
int T=0;
for (a=y;a<x;) //a要从最小的N位数开始加至最大的N位数
{ int b=a;
int c; //接下来定义b以取得a的不同位数 并进行N次方相加得T 判断是否与a相等
while (b>0)
{ c=b%10;
while (n>0)
{sum=sum*c;
n=n-1;
T=T+sum;
sum=1;
}
b=b/10;
}
if (T==a)
{
printf("%d\n",a);
}
a=a+1;
T=0;
n=N;
}
return 0;
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-10-14 15:23
    关注

    题主代码修改如下,修改处见注释,供参考:

    #include <stdio.h>
    int main()
    {
        int N = 0;
        printf("输入一个数字:");
        scanf("%d", &N);
        int x = 1;
        int n = N;
        for (; n > 0; n = n - 1)
        {
            x *= 10;
        }
        n = N; //水仙花数小于x
        int y = x / 10; //大于y 且y为水仙花数的位数及最小值
        int a;
        int sum = 1;
        int T = 0;
        for (a = y; a < x;) //a要从最小的N位数开始加至最大的N位数
        {
            int b = a;
            int c; //接下来定义b以取得a的不同位数 并进行N次方相加得T 判断是否与a相等
            while (b > 0)
            {
                c = b % 10;
                while (n > 0)
                {
                    sum = sum * c;
                    n = n - 1;
                }//修改
                T = T + sum;
                sum = 1;
                n = N; //修改
                //}修改
                b = b / 10;
            }
            if (T == a)
            {
                printf("%d\n", a);
            }
            a = a + 1;
            T = 0;
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月19日
  • 已采纳回答 11月19日
  • 创建了问题 10月14日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程