用c语言解决输入一个四位数,求由这四个数字组成的最大数与最小数字之差
5个回答
展开全部
可以用排序的方法:
#include<stdio.h>
int jx(int *a);//降序排列 得最大值
int sx(int *a);//升序排列 得最小值
int main()
{
int a[4],i,max,min;
char c[5];
printf("输入4位数字:");
scanf("%s",c);
for(i=0;i<4;i++)
a[i]=c[i]-'0';
max=jx(a);
min=sx(a);
printf("四位数%s组成的最大数字%d与最小数字%d的差为:%d",c,max,min,max-min);
return 0;
}
int jx(int *a)//降序排列 得最大值
{
int i,j,aSave,num=0;
for(i=0;i<4;i++)
for(j=i+1;j<4;j++)
{
if(a[i]<a[j])
{
aSave=a[i];
a[i]=a[j];
a[j]=aSave;
}
}
num=a[0]*1000+a[1]*100+a[2]*10+a[3];
return num;
}
int sx(int *a)//升序排列 得最小值
{
int i,j,aSave,num=0;
for(i=0;i<4;i++)
for(j=i+1;j<4;j++)
{
if(a[i]>a[j])
{
aSave=a[i];
a[i]=a[j];
a[j]=aSave;
}
}
num=a[0]*1000+a[1]*100+a[2]*10+a[3];
return num;
}
展开全部
#include<stdio.h>
void main()
{
int t,h[4],max=0,min=0,i=0;
do{
scanf("%d",&t);
if(t<1000||t>9999)
printf("输入的不是四位数,请重新输入:");
}while(t<1000||t>9999);
h[0]=t/1000; //提取四位数
h[1]=t%1000/100;
h[2]=t%100/10;
h[3]=t%10;
max=h[0];
min=h[0];
for(i=1;i<4;i++)
{
if(h[i]<min) //求最小值
min=h[i];
if(h[i]>max) //求最大值
max=h[i];
}
printf("%d\n",max-min);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include "stdio.h"
#include <stdlib.h>
#include <string.h>
int main(int argc,char *argv[]){
int n,i,j;
char a[5];
printf("Please enter n(int 0<n<10000)...\nn=");
if(scanf("%d",&n)!=1 || n<1 || n>9999){
printf("Input error, exit...\n");
return 0;
}
itoa(n,a,10);
for(i=0;i<4;i++){
for(n=i,j=n+1;j<4;j++)
if(a[n]<a[j])
n=j;
if(n-i)
j=a[n],a[n]=a[i],a[i]=j;
}
i=atoi(a);
j=atoi(strrev(a));
printf("%d(max) - %d(min) = %d\n",i,j,i-j);
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int main()
{
char num[4];
int i,j=0,a[10]={0},re[4]={0},max5=0,min5=0;
gets(num);
for (i=0;i<4;i++)
{
a[num[i]-'0']++;
}
for (i=0;i<10;i++)
{
while (a[i]!=0)
{
re[j++] = i;
a[i]--;
}
}
max5 = (re[3]*1000) + (re[2]*100) + (re[1]*10) +re[0] ;
min5 = (re[0]*1000) + (re[1]*100) + (re[2]*10) +re[3];
printf("MAX[%d]-MIN[%d] = [%d]\n",max5,min5,max5-min5);
}
1000
MAX[1000]-MIN[1] = [999]
Press any key to continue
1234
MAX[4321]-MIN[1234] = [3087]
Press any key to continue
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-03-22
展开全部
#include <stdio.h>
//小到大
void BubbleSort1(int* pData, int count)
{
int temp;
for (int i = 1; i < count; i++)
{
for (int j = count - 1; j >= i; j--)
{
if (pData[j] < pData[j - 1])
{
temp = pData[j - 1];
pData[j - 1] = pData[j];
pData[j] = temp;
}
}
}
}
//大到小
void BubbleSort2(int* pData, int count)
{
int temp;
for (int i = 1; i < count; i++)
{
for (int j = count - 1; j >= i; j--)
{
if (pData[j] > pData[j - 1])
{
temp = pData[j - 1];
pData[j - 1] = pData[j];
pData[j] = temp;
}
}
}
}
int main()
{
int data[4];
for (int i = 0; i < 4; i++)
{
scanf_s("%d", data + i);
}
BubbleSort1(data, 4);
int minNum = data[0] * 1000 + data[1] * 100 + data[2] * 10 + data[3];
BubbleSort2(data, 4);
int maxNum = data[0] * 1000 + data[1] * 100 + data[2] * 10 + data[3];
printf("maxNum=%d minNum=%d maxNum-minNum=%d\n", maxNum, minNum, maxNum - minNum);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询