求大神讲解
int getAvgScore(int score[])
return gettotalscore
这里为什么返回的是总分的函数值 而且平均值到底是怎么出来的?我实在是没弄明白
int getAvgScore(int score[])
return gettotalscore
这里为什么返回的是总分的函数值 而且平均值到底是怎么出来的?我实在是没弄明白
2015-12-12
#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 为止*/ }
举报