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

谁帮我改改代码,再说说到底是哪里错了?

#include <stdio.h>
#define N 10
int sort(int score[]){
    int i,s,a;
    for(i=0;i<N;i++)
    {
        if(socre[i]>score[i+1])
        {
            
            s=score[i];
            score[i]=score[i+1];
            score[i+1]=score[i];
        }
        a+=score[i];
    }
    
}
int max(int score[]){
    return score[N];
    
}
int min(){
    return score[0];
}
int average(){
    return a/N;
}
int all(){
    return a;
}
int main()
{
    int score[N]={67,98,75,63,82,79,81,91,66,84};
    return 0;
    printf("考试总分为%d\n",all);
    printf("考试的最高分为%d\n",max);
    printf("考试的最低分为%d\n",min);
    printf("考试的平均分为%d\n",average);
    printf("考试成绩升序排序为%d\n",score);
}


正在回答

2 回答

首先,你的函数写的有问题,首先在主函数这里,函数的调用需要参数的传递,因为需要对数组里的成绩进行操作,但是你没有,应该写为all(score[10]);其次,在函数的编写上及逻辑上有差入,你是希望通过函数sort对成绩进行排序,后面的函数都应用排好序的数组对吧,那么在第七行你的score拼写错了,其次sort函数里,你的排序还不能达到效果,举个例子你就会明白,以这道题为例,按照你的代码,在排序的时候是这样的,第一个和第二个比较不变,第二个和第三个比较,对调,这样98到第三,75到第二,接着第三个和第四个比较,对调则得到63为第三个,但是你发现了吗,63比前面两个都小,但是63无法再往前排了,所以你的代码可以说只完成了一次比较排序,应该在循环外面再加一个循环for(j=8;j>=0;j--)这样把里面循环的条件改一下for(i=0;i<=i;i++),那就可以实现正常排序了;再者,你想要在其他函数使用这个排序好的数组那你就要将其进行传递,如果没有参数传递,是没办法得到数组数据的。

希望采纳,谢谢

1 回复 有任何疑惑可以回复我~
#1

侠客岛的含笑 提问者

非常感谢!
2016-02-23 回复 有任何疑惑可以回复我~
#2

侠客岛的含笑 提问者

for(i=0;i<=i;i++)这里是不是for(i=0;i<=j;i++)???这有点不理解
2016-02-23 回复 有任何疑惑可以回复我~
#3

liuliumrs 回复 侠客岛的含笑 提问者

是的,不好意思,打的时候没发现
2016-02-25 回复 有任何疑惑可以回复我~

参数传递,参数传递

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

举报

0/150
提交
取消

谁帮我改改代码,再说说到底是哪里错了?

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