求大神讲解

来源:6-12 综合练习

qq_傲_0

2015-12-12 13:50

int getAvgScore(int score[])

return gettotalscore

这里为什么返回的是总分的函数值  而且平均值到底是怎么出来的?我实在是没弄明白


写回答 关注

2回答

  • sheepbao
    2015-12-12 15:25:21
    #include <stdio.h>
    #define N 10
    int totalscore(int *score);
    int maxscore(int *score);
    int minscore(int *score);
    int averagescore(int *score);
    void sort(int *a, int left, int right);
    
    
    int main()
    {
        int score[N]={67,98,75,63,82,79,81,91,66,84};
        printf("totalscore:%d\n",totalscore(score));
        printf("maxscore:%d\n",maxscore(score));
        printf("minscore:%d\n",minscore(score));
        printf("averagescore:%d\n",averagescore(score));
        sort(score,0,9);
        int i;
        for ( i = 0; i < 10; ++i)
        {
            printf("%d ",score[i]);
            /* code */
        }
        return 0;
    }
    
    
    int totalscore(int *score)
    {
        int ts=0,i=0;
        for(i=0;i<10;++i)
        {
            ts=ts+score[i];
        }
        return ts;
        
    }
    
    int maxscore(int *score)
    {
        int max;
        max=score[0];
        int i=1;
        for(i=1;i<10;++i)
        {
            if (score[i]>max)
            max=score[i];
        }
        return max;
    }
    
    int minscore(int *score)
    {
        int min;
        min=score[0];
        int p=sizeof(score);
        while(p>0)
        {
            p--;
            if (score[p] < min)
            min=score[p];
        }
        return min;
    }
    int averagescore(int *score)
    {
        int ts=0,i=0;
        for(i=0;i<10;++i)
        {
            ts=ts+score[i];
        }
        return ts/10;
    }
    
    void sort(int *a, int left, int right)
    {
        if(left >= right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/
        {
            return ;
        }
        int i = left;
        int j = right;
        int key = a[left];
         
        while(i < j)                               /*控制在当组内寻找一遍*/
        {
            while(i < j && key >= a[j])
            /*而寻找结束的条件就是,1,找到一个小于或者大于key的数(大于或小于取决于你想升
            序还是降序)2,没有符合条件1的,并且i与j的大小没有反转*/ 
            {
                j--;/*向前寻找*/
            }
             
            a[i] = a[j];
            /*找到一个这样的数后就把它赋给前面的被拿走的i的值(如果第一次循环且key是
            a[left],那么就是给key)*/
             
            while(i < j && key <= a[i])
            /*这是i在当组内向前寻找,同上,不过注意与key的大小关系停止循环和上面相反,
            因为排序思想是把数往两边扔,所以左右两边的数大小与key的关系相反*/
            {
                i++;
            }
             
            a[j] = a[i];
        }
         
        a[i] = key;/*当在当组内找完一遍以后就把中间数key回归*/
        sort(a, left, i - 1);/*最后用同样的方式对分出来的左边的小组进行同上的做法*/
        sort(a, i + 1, right);/*用同样的方式对分出来的右边的小组进行同上的做法*/
                           /*当然最后可能会出现很多分左右,直到每一组的i = j 为止*/
    }


  • fireup
    2015-12-12 15:12:09

    你把你的代码完整的贴一下,你给的代码太少,看不明白哦

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926019 学习 · 20793 问题

查看课程

相似问题