m0_67870827 2022-09-10 12:08 采纳率: 71.4%
浏览 62
已结题

输出一直是1,哪里出问题了?

这个3-7位的水仙花,试了好几次,输出一直是1,到底哪里出现问题了,求解

img

img

{
int n;
scanf_s("%d", &n);
int a=1;
int b=1;
int sum = 0;
int h=0;
while (a < n) {
    b = b * 10;
    a++;
}
int t = b;
while (t < b * 10) {
    for (h = 0; h < n;h++) {
        int c = t / b;
        t = t % b;
        b /= 10;
        int d = c;
        int f = 1;4
        while (f < n) {
            int g = d * d;
            f++;
            if (f == n) {
                sum = sum + g;
            }
        }
    }
    t++;
    h = 0;
}
if (sum == t) {
    printf("%d", t);
}
return 0;


  • 写回答

5条回答 默认 最新

  • 七秒钟的记忆! 2022-09-10 14:36
    关注

    315-317的高位取值是有缺陷的我改成低位取值了;
    311行的判断应该在while里不然永远输出最后一个t;
    下面按你的思路不知道你能否看懂。。。。。

    
    
    #include<iostream>
        using namespace std;
    int main()
    {
        int n;
        scanf_s("%d", &n);
        int a = 1;
        int b = 1;
        int sum = 0;
        int h = 0;
        while (a < n) {
            b = b * 10;
            a++;
        }
        int t = b;
        while (t < b * 10) {//100-1000
            int e = t;//t另存防止后期使用误改循环出错
            for (h = 0; h < n; h++) {//0-3/7
                int c = e%10;//取个位(用最高位法在执行1001时中间“0”位数被自动消去)
                e = e /10;//消除个位
                int g = 1;
                int f = 0;
                while (f < n){//循环n次
                    g = g*c;//各个位数累乘n次
                    f++;
                    if (f == n){
                        sum = sum + g;
                    }
                }
            }
        if (sum == t) {//判断在while中每次判断成立输出
            printf("%d\n", t);
        }
        sum = 0;//置0并重新下一次循环。
        int h = 0;
        t++;
        }
        system("pause");
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 9月18日
  • 已采纳回答 9月10日
  • 修改了问题 9月10日
  • 修改了问题 9月10日
  • 展开全部