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