解题思路:
1、定义一个变量 n用来存放键盘输入的值。
2、定义一个X轴循环起点i=2,当i<=n时,每个i值都要除以从i到i-1的每个数。选择while结构执行X轴循环。
3、定义一个Y轴循环起点j=1,当j<i时,i要除以i到j的每个数。选择while结构执行一轴循环。
i=2 | i=3 | i=4 | i=5 | i=6 | .... | |
j=1 | 执行 | 执行 | 执行 | 执行 | 执行 | .... |
j=2 | 不执行 | 执行 | 执行 | 执行 | 执行 | .... |
j=3 | 不执行 | 执行 | 执行 | 执行 | ... | |
j=4 | 不执行 | 执行 | 执行 | ... | ||
j=5 | 不执行 | 执行 | ... |
4、在Y轴循环体内选择if结构用“%”来判断i%j的值,如果这个值==0,将j的值累加到变量sum中。然后j++;
5、判断sum中的结果是否等于i,如果是则为完数, {printf("%d its factors are ",sum);
6、定义一个a=1,作为输出完数因子的循环起点。选择while循环
if(sum%a==0)
printf("%d ",a);
a++;
特别注意这个循环一定要在第5步的选择结构中。
7、i++
注意事项:
1、while()后面不要跟分号。2、A处的输出换行位置很重要。3、可以直接从2开始。
参考代码:
#include<stdio.h>
int main()
{
int n=0,i,j,sum,a;
scanf("%d",&n);
i=2;
while(i<=n)
{
j=1;
sum=0;
while(j<i)
{
if(i%j==0)
sum=sum+j;
j++;
}
if(sum==i)
{printf("%d its factors are ",sum);
a=1;
while(a<sum)
{
if(sum%a==0)
printf("%d ",a);
a++;
} printf("\n");//A处。
}
i++;
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复