C/C++卡布列克运算验证
2016-06-07 20:56
459 查看
#include<iostream> using namespace std; int main(void) { int sortmax(int); int sortmin(int); int i; int num; cout<<"请输入一个四位数:\n"; cin>>num; int a,b,c,flag(0); a=sortmax(num); b=sortmin(num); for (i=1;;i++) { c=a-b; cout<<"第"<<i<<"步"<<":\n重组最大数为"<<a<<","; cout<<"重组最小数为"<<b<<","; cout<<"生成数为"<<a<<"-"<<b<<"="<<c<<endl<<endl; a=sortmax(c); b=sortmin(c); flag++; if(flag>10) { cout<<"输入了特殊值或者不符合卡不雷克运算!"; break; } if (c==6174) { cout<<"结束!"; break; } } return 0; } int sortmax (int num) { int i,n(4); int p[4]; for (i=3;num>0;i--) { p[i]=num%10; num=num/10; } int j,k; int flag; flag=n; while (flag>0) { k=flag; flag=0; for (j=1;j<k;j++) if (p[j-1]<p[j]) { int temp; temp=p[j-1]; p[j-1]=p[j]; p[j]=temp; flag=j; } } return 1000*p[0]+100*p[1]+10*p[2]+p[3]; } int sortmin (int num) { int i,n(4); int p[4]; for (i=3;num>0;i--) { p[i]=num%10; num=num/10; } int j,k; int flag; flag=n; while (flag>0) { k=flag; flag=0; for (j=1;j<k;j++) if (p[j-1]>p[j]) { int temp; temp=p[j-1]; p[j-1]=p[j]; p[j]=temp; flag=j; } } return 1000*p[0]+100*p[1]+10*p[2]+p[3]; }
相关文章推荐
- 关于栈、堆、静态变量区的访问效率
- 关于指针定义的一些问题
- 关于C++ 11的新特性
- 进制转换并打印
- 函数指针
- C/C++的字符串流
- MinGW环境变量设置、CodeBlock添加额外的库
- websocket C/C++服务器应用
- 内存分配学习(一)-- 实现一个malloc
- 逗号运算符与加加减减
- C/C++ struct 成员对齐
- C/C++数据类型总结
- 数组初始化
- C/C++中的回车与换行
- C/C++中的'\0'
- #define do{}while(0)妙用
- 浅析pragma once与include guard
- 大小端模式
- Ubuntu14.04 学习二: C/C++环境搭建,执行第一个hello world
- 我所理解的makefile文件