验证命题:任何各位数字不全相同的三位正整数经以下变换后均能变为495,称495为三位整数的黑洞数。
变换步骤:对于任意一个各位数字不全相同三位正整数,将组成该整数的3个数字重新组合分别生成一个最大数和最小数,用最大数减去最小数得到一个新的三位数;再对新的三位数重复上述操作,最多重复7次。
编写程序,接收键盘输入的一个三位正整数,判断各位数字是否不全相同,若不全相同则实施以上变换(不超过7次),输出每步变换后得到的三位整数。
【测试数据】
输入486时应输出:486 396 594 495
输入591时应输出:591 792 693 594 495
输入其他任意的三位数再做验证。
4 5关于#c语言#的问题:任何各位数字不全相同
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-link 2022-10-09 08:29关注
既然是三位整数,用n/100,n/10%10和n%10就可以得到三位数字进行比较就行
#include <stdio.h> void fun(int n,int *a,int *b,int *c) { *a = n/100; *b = n/10%10; *c = n%10; } int isSame(int n) { int a,b,c; fun(n,&a,&b,&c); if(a==b && b==c) return 1; return 0; } void getnew(int *n) { int a,b,c,max,min; fun(*n,&a,&b,&c); if(a>b) { max = a; min = b; } else { max = b; min = a; } if(c>max) max = c; if(c<min) min = c; *n = max*100 + min - min*100-max; } int main() { int n,count=0; scanf("%d",&n); while(isSame(n)) { printf("三位数字不能完全相同,请重新输入:"); scanf("%d",&n); } while(n!=495 && count <= 7) { count++; printf("%d ",n); getnew(&n); } if(count<=7) printf("%d\n",495); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 GDI处理通道视频时总是带有白色锯齿
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 Revit2020下载问题
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
- ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数