验证命题:任何各位数字不全相同的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 mmocr的训练错误,结果全为0
- ¥15 python的qt5界面
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
- ¥30 深度学习,前后端连接
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀