问答详情
源自:6-12 综合练习

我这代码是不是太繁冗了? 80多行。

#include <stdio.h>

int Sort(int arr[])   //成绩降序

{

    int i,j ;

    printf("成绩降序排序为:\n");

    for(i=9;i>=0;i--)

    {

        for(j=0;j<i;j++)

        {

            if(arr[j]>arr[j+1])

            {

                int sum;

                sum=arr[j];

                arr[j]=arr[j+1];

                arr[j+1]=sum;

            }

        }

        printf("%d ",arr[i]);

    }

    return 0;

}

int Total(int arr[])  //总分

{

    int i,j;

    static int sum;

    for(i=9;i>=0;i--)

    sum=arr[i]+sum;

    printf("成绩的总分是: %d",sum);

    return sum;

}

int average(int arr[]) //平均分

{

    int i;

    static int j;

    int sum;

    for(i=9;i>=0;i--)

    j=arr[i]+j;

    sum=j/10;

    printf("成绩的平均分是: %d",sum);

}

int Max(int arr[]) //最高分

{

    int i,j;

    int sum=0;

    for(i=9;i>=0;i--)

    {

        if(arr[i]>sum)

        {

            sum=arr[i];

        }

    }

    printf("成绩的最高分是: %d",sum);

    return 0;

}

int Min(int arr[]) //最低分

{

    int i,j;

    int sum;

    sum=arr[1];

    for(i=9;i>=0;i--)

    {

        if(arr[i]<sum)

        {

            sum=arr[i];

        }

    }

    printf("成绩的最低分是: %d",sum);

    return 0;

}


int main()

{

    int score[]={67,98,75,63,82,79,81,91,66,84};

    Sort(score);

    printf("\n");

    Total(score);

    printf("\n");

    average(score);

    printf("\n");

    Max(score);

    printf("\n");

    Min(score);

    printf("\n");

    return 0;

}


提问者:慕少519656 2020-11-16 15:24

个回答

  • qq_慕雪8151599
    2020-11-19 18:28:55
    已采纳

    #include <stdio.h>

    //我的稍微合并了下54行

    //总分

    int Total(int score[])

    {

        int total;

        for(int i = 0; i < 10; i++)

        {

            total += score[i];

        }

        return total;

    }


    //降序排序

    void Sort(int score[])

    {

        int temp;

        for (int i=9;i>=0;i--)

        {

            for (int j=0;j<i;j++)

            {

                if (score[j]<score[j+1])

                {

                    temp = score[j];

                    score[j] = score[j+1];

                    score[j+1] = temp;

                }

            }

        }

    }

    int main()

    {

        int score[]={67,98,75,63,82,79,81,91,66,84};

        //降序排列

        Sort(score);

        printf("降序排列\n");

        for (int i=0;i<10;i++)

        {

            if (i!=9)

            {

                printf("%d, ",score[i]);

            }

            else

            {

                printf("%d\n",score[i]);

            }

        }

        int max = score[0];

        int min = score[9];

        int total = Total(score);

        float avg = total/10;

        printf("最高分:%d\n最低分:%d\n总分:%d\n平均分:%.2f\n",max,min,total,avg);

        return 0;

    }


  • 辉light
    2020-11-25 09:23:06

    你可以先降序排序之后再求最大最小值