m0_58061620 2021-12-04 16:57 采纳率: 50%
浏览 27
已结题

输入六个数,从大到小输出,哪出错了呢


#include<stdio.h>
int max(int a[],int len)
{
    int maxid = len-1,i;
    for(i=len-2;i>=6-len;i--)
    {
        if(a[maxid]<a[i])
        maxid = i;
    }
    return maxid;
}
int main()
{
    int a[6];
    int i;
    for(i=0;i<6;i++)
    scanf("%d",&a[i]);
    int len = sizeof(a)/sizeof(a[0]);
    for(i=0;i<len;i++)
    {
        int maxid =max(a,len-i);
        int t = a[maxid];
        a[maxid] = a[i];
        a[i] = t;
    }
    for(i = 0;i<len;i++)
    printf("%d",a[i]);
    return 0;
}
  • 写回答

1条回答 默认 最新

  • 五一编程 2021-12-04 19:31
    关注
    
        for(i=0;i<len;i++)
    
        {
    
            int maxid =max(a,len-i);
    
            int t = a[maxid];
    
            a[maxid] = a[i];
    
            a[i] = t;
    
        }
    
    

    上面的逻辑有问题

    #include <stdio.h>
    
    #include <stdlib.h>
    
    int main()
    
    {
    
    int a[6];
    
    int i,j,k;
    
    for(i=0;i<=5;i++)
    
    {
    
    scanf("%d",&a[i]);
    
    }
    
    for(i=0;i<=5;i++)
    
    {
    
    for(j=0;j<=5;j++)
    
    {
    
    if(a[i]>a[j])
    
    {
    
    k=a[i]; a[i]=a[j]; a[j]=k;
    
    }
    
    }
    
    }
    
    printf("排序结果是:\n");
    
    for(i=0;i<=5;i++)
    
    {
    
    printf("%d\t",a[i]);
    
    }
    
    return 0;
    
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月12日
  • 已采纳回答 12月4日
  • 修改了问题 12月4日
  • 创建了问题 12月4日