解题思路:输入存储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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复