解题思路:
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 人评分