题目描述:
某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。
该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰好包含了组成原6位数同样的数字。比如:766431 - 134667 = 631764 就是具有这样特征的数字。
你还能找到另一个这样的6位数吗?
请填写它重新排列数位后得到的最大数:________________
请通过浏览器提交答案。
注意:只提交另一个6位数,题中已经给出的这个不要提交。
注意:不要书写其它的内容(比如:说明性的文字)。*/
源代码:
题目标题: 大小之差
某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。
该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰好包含了组成原6位数同样的数字。
比如:766431 - 134667 = 631764 就是具有这样特征的数字。
你还能找到另一个这样的6位数吗?
请填写它重新排列数位后得到的最大数:________________
请通过浏览器提交答案。
注意:只提交另一个6位数,题中已经给出的这个不要提交。
注意:不要书写其它的内容(比如:说明性的文字)。
#include<stdio.h>
#include<stdlib.h>
#define null 0
bool isSame(char ch1[], char ch2[])
{
int i,j,flag1=0,flag2=0;
for(i=0;ch1[i]!='\0';i++)
{
for(j=0;ch2[j]!='\0';j++)
{
if(ch1[i]==ch2[j])
{
flag1++;
break;
}
}
}
for(i=0;ch2[i]!='\0';i++)
{
for(j=0;ch1[j]!='\0';j++)
{
if(ch2[i]==ch1[j])
{
flag2++;
break;
}
}
}
if((flag1==flag2)&&(flag2==6))
return true;
return false;
}
void main(){
int a,b,c,d,e,f;
for(a=1;a<=9;a++)
for(b=a;b<=9;b++)
for(c=b;c<=9;c++)
for(d=c;d<=9;d++)
for(e=d;e<=9;e++)
for(f=e;f<=9;f++)
{
int max,min,differ;
char buffer[20],buffer1[20];//两个字符类型的指针,分别用来指向转换成字符串的数字
max=f*100000+e*10000+d*1000+c*100+b*10+a;//得到最大值
min=a*100000+b*10000+c*1000+d*100+e*10+f;//得到最小值
differ= max-min;//得到最大值和最小值之差
itoa(max,buffer,10);//转换函数,将int型的变量转换成字符串(例如可以用来将100,转换成"100",并用m指向转换后的字符串)
itoa(differ,buffer1,10);
bool same=isSame(buffer,buffer1);
if(same)
printf("%2d\t",max);
}
}