C程序设计第五章习题9的解法

题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:

6 its factors are 1,2,3

因此分析题目:

1,首先题目给出了完数的定义(紫色标记的句子),因此可以根据这个去设计程序。

2,然后限制条件是1000之内的所有完数(红色标记的句子)

3,因此可以运用循环去解决这个问题

 小知识  循环结构有

     (1)while(循环条件)执行语句;

     (2)for(初始条件;循环条件;执行部分结束后,执行一遍的语句)执行语句;

     (3)do 执行语句 while (循环条件);

注:do while是先执行一遍do在判断,而while是先判断再执行,最大的区别就是do while比while执行多了一遍语句

4,上面题目绿色的6就是我们要求的完数这个是要控制格式输出的,黄色的its factors are是字符串直接就可以输出的,蓝色的1,2,3就是用一次循环去求出来的。

思路说完,下面就是代码,代码的基本上意思在后面打上的注释可以放心使用。

#include <stdio.h>
int main()
{
	int a=1, b=1,sum=0;
	for (a = 1; a <= 1000; a++, sum = 0)                        //用a去控制外层变量,并且记得要初始化sum
	{                                                           //如果不初始化sum就会出现一直加下去的现象出不了结果
		for (b = 1; b < a; b++)                                 //内层循环解决找因子的问题
		{
			if (a%b == 0)                                       //判断是不是因数如果是就用sum统计起来
				sum = sum + b;
		}
		/*printf("%d\n",sum);*/                                 //这个打印是验证sum的,可以把上面的sum=0去掉看看会有什么结果
			if (a == sum)                                       //如果是完数就统计出来
			{
				printf("%d its factors are ", a);
				for (int i = sum - 1; i > 0; i--)              //将完数和其因子打印出来
					if (sum%i == 0)
						printf("%d,",i);
				printf("\n");
			}
	}
	return 0;
}

因为我也是一名学生可能有的地方有所疏漏,如果找到了请帮我指出来,谢谢各位!!!

 

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刚刚接触程序设计的小徽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值