C语言 验证卡布列克运算,任意各位数字完全不同的四位数ch,四位数字,从小到大排列为最小的四位数n1,从大到小排列为最大的四位数n2,执行n2-n1得到一个新的四位数n。
tearsroad
6月 13, 2023
109
//学习记录
#include<stdio.h>
int min(int n[]);
int max(int m[]);
int in(int ch);
int check(int a[]);
int main()
{
int ch;
printf("输入一个四位数:\n");
scanf("%d",&ch) ;
int a[4]={0},i=0;
do
{
a[i]=ch%10;
ch=ch/10;
i++;
}while(i<4);
if(check(a)==1)
printf("检测通过,确定为完全不同的四位数\n");
else
{
printf("错误,有重复!");
return 0;
}
printf("新的最小四位数:%d\n",min(a));
printf("新的最大四位数:%d\n",max(a));
printf("新的四位数:%d\n",max(a)-min(a));
}
int min(int a[])
{
int flag=4,i,j=0,temp,n1=0;
for(i=0;i<4;i++)
{
while(j+1<flag)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
j++;
}
flag=j;
j=0;
}
i=0;
do
{
n1=n1*10+a[i++];
}
while(i<4);
return n1;
}
int max(int a[])
{
int flag=4,i,j=0,temp,n2=0;
for(i=0;i<4;i++)
{
while(j+1<flag)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
j++;
}
flag=j;
j=0;
}
i=0;
do
{
n2=n2*10+a[i++];
}
while(i<4);
return n2;
}
int check(int a[])
{
for(int i=0;i<4;i++)
{
for(int j=0;j<i;j++)
{
if(a[i]==a[j])
{
return 0;
}
}
}
return 1;
}