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

为什么我的降序无效?

#include <stdio.h>
int sum(int score[],int N)
{
    int sum1=0;
    int i;
    for(i=0;i<N;i++)
    {
        sum1+=score[i];
    }
    return sum1;
}
int getmax(int score[],int N)
{
    int max=score[0];
    int i;
    for(i=1;i<N;i++)
    {
        if(score[i]>max)
        max=score[i];
    }
    return max;
}
int getmin(int score[],int N)
{
    int min=score[0];
    int i;
    for(i=1;i<N;i++)
    {
        if(score[i]<min)
        min=score[i];
    }
    return min;
}
float getaver(int sum,int N)
{
    float sum2=(float)(sum);
    float aver=sum2/N;
    return aver;
}
int paixu(int score[],int N)
{
    int i,j,k;
    for(i=N-2;i>=0;i--)
    {
        for(j=0;j<=i;j++)
        {
            if(score[j]<score[j+1])
            {
                int temp;
                temp=score[j];
                score[j]=score[j+1];
                score[j+1]=temp;
            }
        }
    }
    for(k=0;i<N;k++)
    {
        printf("%d\n",score[k]);
    }
    return 0;
}
int main()
{
    int score[]={67,98,75,63,82,79,81,91,66,84};
    int N=10;
    int sum1=sum(score,N);
    int max=getmax(score,N);
    int min=getmin(score,N);
    int aver=getaver(sum1,N);
    printf("数组的和是%d\n",sum1);
    printf("数组的最大值是%d\n",max);
    printf("数组的最小值是%d\n",min);
    printf("数组的平均值是%d\n",aver);
    int paixu(score,N);
    return 0;
}


运行结果:
数组的和是786
数组的最大值是98
数组的最小值是63
数组的平均值是78


提问者:寒月0 2015-12-07 22:28

个回答

  • RockenRoll
    2015-12-08 15:38:07
    已采纳

    你这个降序的逻辑是没有错的,但是后面的循环部分写的有点小问题,我修改了一下

    void  sort(int score[], int N)//你这个函数也不用返回值就设置成void就好了,sort就是排序的意思
    {
        int i, j, k;
        for(i = N-1; i > 0; i--)
        {
            for(j = 0 ; j <= i; j++)
            {
                if(score[j] < score[j+1])
                {
                    int temp;
                    temp = score[j];
                    score[j] = score[j+1];
                    score[j+1] = temp;
                }
            }
        }
        for(k = 0; k < N; k++)
        {
            printf("%d\n", score[k]);
        }
        
    }

    还有一点就是注意一点代码规范,代码里加入适当的空格看起来会更舒服一些

    还有你的命名规范,如getmax应该写成getMax,最好别用拼音命名可以用sort。

    在main函数中调用的时候直接sort(score, N);

  • 叫我健哥就行
    2015-12-16 14:00:15

     float sum2=(float)(sum);   麻烦帮我解释一下 求平均数时为什么要这么写?