晃慌黄 2021-05-17 20:05 采纳率: 95%
浏览 134
已采纳

输入一个正整数(不超过5位数),输出由该数的各位能表示的最大数和最小数。

输入样例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函数*/
}

 

求大佬看看完善部分该怎么补充,不太懂这个题了

谢谢!!

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-05-17 20:50
    关注

    供参考:

    #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;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器