解题思路:
注意事项:
有源码虽好,不过请多多思考!
参考代码:
#include<stdio.h>
/* sort1()用来形成最小四位数的排序,sort2形成最大;
getnum()用来返回这个新四位数,也就是max与min的差值
主函数写个死循环,当等于6174用break跳出;*/
void sort1(int a[])
{
int i,j,k,temp;
for(i=1;i<4;i++)
{
k=i;
for(j=i+1;j<=4;j++)
{
if(a[k]>a[j])
{
k=j;
}
}
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
void sort2(int a[])
{
int i,j,k,temp;
for(i=1;i<4;i++)
{
k=i;
for(j=i+1;j<=4;j++)
{
if(a[k]>a[j])
{
k=j;
}
}
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
int getnum(int n)
{
int a[5],min,max;
a[1]=n/1000;
a[2]=n/100%10;
a[3]=n/10%10;
a[4]=n%10;
sort1(a);
min=a[1]*1000+a[2]*100+a[3]*10+a[4]; //数组记录各个位上的数字,乘以位数就得出这个数
sort2(a);
max=a[1]*1000+a[2]*100+a[3]*10+a[4];
n=max-min; //n新4位数
a[1]=n/1000; //别忘啦把新4位数各个位输入数组中
a[2]=n/100%10;
a[3]=n/10%10;
a[4]=n%10;
return n; //返回新四位数
}
int main()
{
int n,i=0,m;
int a[5];
scanf("%d",&n);
while(1)
{
i++; //计数器i记录次数
n=getnum(n); //这里要n就是new,一个新四位数,先调用然后把返回值赋值给n,否则会死循环,
if(n==6174) //因为n值没改变
{
break;
}
}
printf("%d",i);
return 0;
}
0.0分
0 人评分
C二级辅导-同因查找 (C语言代码)浏览:663 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C++代码)(手动优化一下计算)浏览:1286 |
C语言训练-数字母 (C语言代码)浏览:585 |
【亲和数】 (C语言代码)浏览:542 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:674 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:506 |
蛇行矩阵 (C语言代码)浏览:536 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:633 |
水仙花 (C语言代码)浏览:1054 |
数组与指针的问题浏览:718 |