解题思路:输入存储N,判断N以内的完数(题目要求是除本身外的因子之和等于本身),判断符合的数,输出该数并储存输出该数的因子。有意思的就是用数组来存储因子,原本我的构思都是写两个函数再加指针来写,后来我觉得这才多少题啊都这么麻烦不可能呀,就看了下题解,确实,大佬多的呀,哎,我手还是生,没想到内外循环之间可以直接用数组接收因子然后输出掉,get到了


注意事项:最卡我的其实是最后的输出,我就有尝试使用while循环做输出,因为使用while循环输出数组易于编写,本来想着很快的来着,结果搞了半天,我还不会用VS2022的debug,难受坏了,最后用的chatgpt改了半天代码,最初它也没发现问题,最后它重新编写将代码改回for循环输出后我询问二者差别才发现问题所在,就是数组未清零,有未知的数,用了memset函数清零了,最先开始我写的是a[max]={0},我还以为是清零来着,后来才知道只是对其中一个数清零,愚蠢了


参考代码:

这是最后修改成功的代码

#include <stdio.h>

#include <string.h>


#define max 1001


int main() {

    int n, i, j, a[max];

    scanf("%d", &n);


    for (i = 1; i <= n; i++) {

        memset(a, 0, sizeof(a));  // 将数组归零


        int tem = 0, k = 0;


        for (j = 1; j < i; j++) {

            if (i % j == 0) {

                tem += j;

                a[k++] = j;

            }

        }


        if (tem == i) {

            printf("%d its factors are", i);

            int l = 0;

            while (a[l]) {

                printf(" %d", a[l]);

                l++;

            }

            printf("\n");

        }

    }


    return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论