为了账号安全,请及时绑定邮箱和手机立即绑定

求大神讲解

int getAvgScore(int score[])

return gettotalscore

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


正在回答

2 回答

#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 为止*/
}


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926019    人
  • 解答问题       20793    个

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

进入课程

求大神讲解

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信