課程
/后端開發(fā)
/C
/C語言入門
為什么最后的sort(score)可以輸出倒序的成績,還有上面求倒序成績的時候為什么是i=N-2
2016-11-29
源自:C語言入門 6-12
正在回答
?for(i=N-2;i>=0;i--){ ??for(j=0;j<=i;j++){ ?? ?n-2的時候,j最大值是i=N-2,就是8,然后下邊比較arr[8]和arr[9]的大小關(guān)系。arr[9]已經(jīng)是最后一個元素。?如果上邊寫n-1的話下邊判斷數(shù)組元素大小j+1的時候就越界了。
#include <stdio.h>#define N 10void 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語言入門視頻教程,帶你進入編程世界的必修課-C語言
1 回答綜合練習(xí)題
1 回答6-12綜合練習(xí)
1 回答關(guān)于綜合練習(xí)
1 回答綜合練習(xí)打不開怎么辦
4 回答綜合練習(xí)不明白要做什么
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-12-10
2016-11-30
#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;
}