亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

希望大佬幫我看看這個排序部分的代碼,我要崩潰了

#include <stdio.h>

int getsum(int score[10])

{

? ? int sum = 0;

? ? int i;

? ? for (i = 0; i < 10; i++)

? ? {

? ? ? ? sum = sum + score[i];

? ? ? ? if (i == 9)

? ? ? ? {

? ? ? ? ? ? printf("總分為 % d\n", sum);

? ? ? ? }

? ? ? ?

? ? }

? ? return 0;

}

int getmax(int score[10])

{

? ? int max,i;

? ? int index;

? ? max = score[0];

? ? index = 0;

? ? for (i = 0; i <10; i++)

? ? {

? ? ? ? ?

? ? ? ? if (score[i] > max)

? ? ? ? {

? ? ? ? ? ? max = score[i];

? ? ? ? ? ? index == i;

? ? ? ? ? ? printf("最高分為%d\n", max);

? ? ? ? }

? ? ? ??

? ? ? ??

? ? }

? ? return 0;

}

int getmin(int score[10])

{

? ? int j;

? ? int min;

? ? min = score[0];

? ? for (j = 0; j < 10; j++)

? ? {

? ? ? ? if (score[j] < min)

? ? ? ? {

? ? ? ? ? ? min = score[j];

? ? ? ? ? ? printf("最低分為%d\n", min);

? ? ? ? }

? ? }

? ? return 0;

}

float average(int score[10])

{

? ? float sum = 0;

? ? float aver;

? ? int k;

? ? for (k = 0; k < 10; k++)

? ? {

? ? ? ? sum = sum + score[k];

? ? ? ? if (k == 9)

? ? ? ? {

? ? ? ? ? ? aver = sum / 10;

? ? ? ? ? ? printf("平均分為%f\n", aver);

? ? ? ? }

? ? }

? ? return 0;

}

int down(int score[10])

{

? ? int n, t;

? ??

? ? for (n = 1; n < 10; n++)

? ? {

? ? ? ? for (t = 0; t <9-n; t++)

? ? ? ? {

? ? ? ? ? ? if (score[t+1] > score[t])

? ? ? ? ? ? {

? ? ? ? ? ? ? ? int temp;

? ? ? ? ? ? ? ? temp = score[t+1];

? ? ? ? ? ? ? ? score[t+1] = score[t];

? ? ? ? ? ? ? ? score[t] = temp;

? ? ? ? ? ? ? ??

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? printf("考試成績降序如下: \n");

? ? for (n = 0; n < 10; n++)

? ? {

? ? ? ??

? ? ? ? ? ? printf("%d ", score[n]);

? ? ? ??

? ? }

? ? return 0;

}

int main()

{

? ? int score[10] = { 67,98,75,63,82,79,81,91,66,84 };

? ? getsum(score);

? ? getmax(score);

? ? getmin(score);

? ? average(score);

? ? down(score);

? ? return 0;

}

排序結果前8個都正常,最后一個數卻是84,試了幾次都不知道毛病出在哪里

正在回答

5 回答

t<=9-n;

缺了“=”

0 回復 有任何疑惑可以回復我~

for (t = 0; t <10-n; t++)

這樣吧應該

0 回復 有任何疑惑可以回復我~

這個排序部分題目要求從大到小排,就只需要把從小到大排的程序中改一個地方就可以了,就把arr[j]>arr[j+1]中的">"改成"<"就可以了,其他的都不用變的

0 回復 有任何疑惑可以回復我~

for(i=N-1-1;i>=0;i--)//冒泡排序

?{

? ? for(j=0;j<=i;j++)//前一個與后一個比較,直到最后

? ? ?{

? ? ? ? if(score[j]<score[j+1])//前一個小于后一個則進行交換

? ? ? ? {

? ? ? ? ? ?temp=score[j];

? ? ? ? ? ?score[j]=score[j+1];

? ? ? ? ? ?score[j+1]=temp;

? ? ? ? }? ? ? ? ? ??

? ? ?}? ? ??

?}


0 回復 有任何疑惑可以回復我~
?for?(n?=?1;?n?<?10;?n++)
n要從零開始,不然會讓判斷少一次


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926904    人
  • 解答問題       21532    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

希望大佬幫我看看這個排序部分的代碼,我要崩潰了

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號