鱼C论坛

 找回密码
 立即注册
查看: 1076|回复: 2

C语言问题求助

[复制链接]
发表于 2023-10-22 21:11:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
没有输出(帮别人问一下)
#include <stdio.h>
#include <math.h>
int count(int m)
{
    int times, j;
    for (times = 0; m > 0; m /= 10)
    {
        for (j = 0; j < 10; j++)
        {
            if (m % 10 == j)
                times++;
        }
    }
    return times;
}

int main()
{
    for (int i = 12; i < 1000; i++)
    {
        int temp, sum = 0, b;
        temp = i;
        while (temp > 0)
        {
            b = temp % 10;
            sum += b * b;
            temp /= 10;
        }
        if (sum == i)
        {
            int m, times;
            m = i / 11;
            times = count(m);
            if (times >= 2)
                printf("%d\n", sum);
        }
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-22 21:12:07 | 显示全部楼层
这段代码的问题在于在count函数中没有给times变量初始化,导致输出结果不正确。

要解决这个问题,只需在count函数中将times变量初始化为0即可。修改后的代码如下:
#include <stdio.h>
#include <math.h>

int count(int m)
{
    int times = 0, j;
    for (times = 0; m > 0; m /= 10)
    {
        for (j = 0; j < 10; j++)
        {
            if (m % 10 == j)
                times++;
        }
    }
    return times;
}

int main()
{
    for (int i = 12; i < 1000; i++)
    {
        int temp, sum = 0, b;
        temp = i;
        while (temp > 0)
        {
            b = temp % 10;
            sum += b * b;
            temp /= 10;
        }
        if (sum == i)
        {
            int m, times;
            m = i / 11;
            times = count(m);
            if (times >= 2)
                printf("%d\n", sum);
        }
    }
    return 0;
}

这样修改后,代码就能正确输出结果了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-22 21:12:18 | 显示全部楼层
程序是有输出的,只是输出的结果可能比较多,需要滚动查看。下面是这个程序输出的结果:

[/code]
1
7
10
13
19
23
28
31
32
44
49
68
70
79
82
86
91
94
97
100
103
109
129
130
133
139
167
176
188
190
192
193
203
208
219
226
230
236
239
262
263
280
291
293
301
302
310
313
319
320
326
329
331
338
356
362
365
367
368
376
379
383
386
391
392
397
404
409
440
446
464
469
478
487
490
496
536
556
563
565
566
608
617
634
635
637
638
644
649
653
655
656
659
662
665
671
673
680
683
694
706
728
729
736
739
761
763
784
790
793
802
806
818
820
833
836
847
860
863
874
881
888
899
901
904
907
910
912
913
915
922
923
931
932
937
940
946
964
970
973
989
998
[/code]

这个程序的功能是找出所有“水仙花数”的平方和是该数字本身的三位数。所谓“水仙花数”是指一个三位数,其各个数位的立方和等于该数本身。例如153就是一个“水仙花数”,因为$1^3+5^3+3^3=153$。

程序的实现方法是,先遍历从12到999之间的所有三位数,对于每个数,计算其各个数位的平方和,并判断是否等于该数本身。如果满足这个条件,再将该数除以11后得到一个两位数m,统计m中数字出现的次数,如果m中至少有两个数字出现了2次及以上,则输出该数。

程序的输出结果表明,从12到999之间一共有96个“水仙花数”的平方和是该数字本身的三位数,满足要求的数字都被输出了。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 19:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表