问答详情
源自:6-12 综合练习

最后的综合练习

为什么最后的sort(score)可以输出倒序的成绩,还有上面求倒序成绩的时候为什么是i=N-2

提问者:最好的自己1 2016-11-29 21:49

个回答

  • Tsukasa
    2016-12-10 17:48:32


     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的时候就越界了。


  • 慕粉3342523
    2016-11-30 20:59:18

    #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;
    }