最好的自己1
2016-11-29 21:49
为什么最后的sort(score)可以输出倒序的成绩,还有上面求倒序成绩的时候为什么是i=N-2
for(i=N-2;i>=0;i--){ for(j=0;j<=i;j++){ n-2的时候,j最大值是i=N-2,就是8,然后下边比较arr[8]和arr[9]的大小关系。arr[9]已经是最后一个元素。 如果上边写n-1的话下边判断数组元素大小j+1的时候就越界了。
#include <stdio.h>
#define N 10
void printScore(int score[]){
int i;
printf("\n");
for(i=0;i<N;i++){
printf("%d\t",score[i]);
}
printf("\n");
}
int getTotalScore(int score[]){
int sum = 0;
int i;
for(i=0;i<N;i++){
sum+=score[i];
}
return sum;
}
int getAvgScore(int score[]){
return getTotalScore(score)/N;
}
int getMax(int score[]){
int max = -1;
int i;
for(i=0;i<N;i++){
if(score[i]>max){
max = score[i];
}
}
return max;
}
int getMin(int score[]){
int min = 100;
int i;
for(i=0;i<N;i++){
if(score[i]<min){
min=score[i];
}
}
return min;
}
void sort(int score[]){
int i,j;
for(i=N-2;i>=0;i--){
for(j=0;j<=i;j++){
if(score[j]<score[j+1]){
int temp;
temp = score[j];
score[j] = score[j+1];
score[j+1] = temp;
}
}
}
printScore(score);
}
int main()
{
int score[N]={67,98,75,63,82,79,81,91,66,84};
int sum,avg,max,min;
sum = getTotalScore(score);
avg = getAvgScore(score);
max = getMax(score);
min = getMin(score);
printf("总分是:%d\n",sum);
printf("平均分是:%d\n",avg);
printf("最高分是:%d\n",max);
printf("最低分是:%d\n\n",min);
printf("********成绩排名********\n");
sort(score);
return 0;
}
C语言入门
926025 学习 · 20793 问题
相似问题