输入样例2:109
输出样例2:max=910,min=19
程序结构如下:
#include <stdio.h>
#include <string.h>
void split(int x,int a[],int *count);
void sortA(int a[],int count);
void getMaxMin(int a[],int count,int *max,int *min);
int main()
{
int x,a[5],count=0,max,min;
scanf("%d",&x);
split(x,a,&count);//分离x各位数到数组a中,count利用指针传递给函数,使它能记录x的位数
sortA(a,count);//对数组a进行排序
getMaxMin(a,count,&max,&min);//根据乘权求和算法,对已排好序的数组a分别从大到小和从小到大计算最大最小值
printf("max=%d,min=%d",max,min);//输出结果
}
void split(int x,int a[],int *count)
{
/*请完善,x是你输入的值,a是将x所有位分离出来存放的数组,指针count指向main函数的count变量,用于记录x的位数*/
}
void sortA(int a[],int count)
{
/*请完善,对数组a进行排序,选择排序或冒泡排序均可,count是数组a实际的元素个数,即x的位数*/
}
void getMaxMin(int a[],int count,int *max,int *min)
{
/*请完善,a是已经排好序的数组,指针max和min分别指向main函数中的max变量和min变量,用于将两个结果带回main函数*/
}
求大佬看看完善部分该怎么补充,不太懂这个题了
谢谢!!
供参考:
#include <stdio.h>
#include <string.h>
void split(int x,int a[],int *count);
void sortA(int a[],int count);
void getMaxMin(int a[],int count,int *max,int *min);
int main()
{
int x,a[5],count=0,max,min;
scanf("%d",&x);
split(x,a,&count);//分离x各位数到数组a中,count利用指针传递给函数,使它能记录x的位数
sortA(a,count);//对数组a进行排序
getMaxMin(a,count,&max,&min);//根据乘权求和算法,对已排好序的数组a分别从大到小和从小到大计算最大最小值
printf("max=%d,min=%d",max,min);//输出结果
return 0;
}
void split(int x,int a[],int *count)
{
/*请完善,x是你输入的值,a是将x所有位分离出来存放的数组,指针count指向main函数的count变量,用于记录x的位数*/
int i=0;
while(x){
a[i] = x%10;
x /= 10;
i++;
}
*count = i;
}
void sortA(int a[],int count)
{
/*请完善,对数组a进行排序,选择排序或冒泡排序均可,count是数组a实际的元素个数,即x的位数*/
int i,j,tmp;
for(i=0;i<count-1;i++)
for(j=0;j<count-1-i;j++)
if(a[j]>a[j+1]){
tmp = a[j];
a[j] = a[j+1];
a[j+1]= tmp;
}
}
void getMaxMin(int a[],int count,int *max,int *min)
{
/*请完善,a是已经排好序的数组,指针max和min分别指向main函数中的max变量和min变量,用于将两个结果带回main函数*/
int i,j,ma=0,mi=0;
for(i=0,j=count-1;i<count;i++,j--){
mi = mi*10 + a[i];
ma = ma*10 + a[j];
}
*min = mi;
*max = ma;
}