验证命题:任何各位数字不全相同的3位正整数经以下变换后均能变为495,称495为3位整数的黑洞数。
变换步骤:对于任意—个各位数字不全相同的3位工整数,将组成该正整数的3个数字重新组合分别生成一个最大数和一个最小数,用最大数减去最小数得到一个新的了位数;再对新的3位数重复上述操作,最多重复7次。
编写程序,接收键盘输入的一个3位正整数,判断各位数字是否不全相同,若不全相同则实施以上变换(不超过7次),输出每步变换后得到的3位整数。
c语言编辑程序问题1
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 滴水不穿石 2023-04-02 10:14关注
供参考,谢谢!
#include <stdio.h> int func1(int n); int func2(int n); int main(int argc, char *argv[]) { int n, t; scanf("%d", &n); if (!func1(n)) { printf("%d不是黑洞数!\n", n); getchar(); return -1; } t = n; for (int i = 0; i < 7 && t != 495; i++) { t = fun2(t); printf("%d\n", t); } return 0; } /*判断一个三位数是否不全相同 */ int func1(int n) { if (n < 100 || n > 999) return 0; int a, b, c; a = n % 10; b = n / 100; c = n / 10 % 10; if (!(a == b && b == c)) return 1; return 0; } //生成新的数 int fun2(int n) { int a[3], t; a[0] = n % 10; a[1] = n / 100; a[2] = n / 10 % 10; for (int i = 0; i < 2; i++) { for (int j = i + 1; j < 3; j++) { if (a[i] > a[j]) { t = a[i]; a[i] = a[j]; a[j] = t; } } } return a[2] * 100 + a[1] * 10 + a[0] - (a[2] + a[1] * 10 + 100 * a[0]); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度
- ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么