c++水仙花数的编程是什么?

 我来答
博学小赵爱生活
高能答主

2022-01-27 · 专注于食品生活科技行业
博学小赵爱生活
采纳数:456 获赞数:111888

向TA提问 私信TA
展开全部

思路:

初始化i=100。

①取i的各位数,百位a,十位b,个位c。

②判断i==a∧3+b∧3+c∧3 是否成立。

③如果成立则输出,否则不输出。

④i=i+1,当i小于1000重复①,否则结束。

关键算法:取任意三位数的各位数。

①将数除以10取余数得个位c,将该数除以10。

②重复①得到十位b。

③继续重复①得到百位a。

代码实现:

int sum = 0; //求和变量。

int temp=i; //存放数值i,防被覆盖而丢失。

int rem; //余数。

for (int j = 0; j < 3; j++)//第一次循环得到个位立方和,第二次循环得到个位与十位立方和...

{ rem = temp % 10; temp /= 10; sum += rem * rem*rem;}

完整代码:

//输出水仙花void NarcissusNumber()

{ for (int i = 100; i < 1000; i++) 

{ int sum = 0; int temp=i; int rem; 

for (int j = 0; j < 3; j++)

 { rem = temp % 10; temp /= 10; sum += rem * rem*rem; }

 if (sum == i) { printf("%d ", i); 

}

}

算法一:除减法。

①将数除以100,由整型数据特点,小数点后被忽略,取得百位a。

②该数减去a * 100,除以10,得到十位b。

③该数减去a * 100和b * 10即得个位c。

好处:易理解,菜鸟基本都会这算法。

不足:当数字位数较大时,减法操作需要进行多次,比较代码比较冗长。

算法二:除余法。

①将数除以10取余数得个位c。

②将数除以10后再与10取余得到十位b。

③将该数除以100再与10取余得到百位a。

这种算法对我们菜鸟来说很新奇,难以想到。

即使这样,该算法也不比算法一简洁,所以需要改进。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式