#include<stdio.h>
int main()
{
int a[100][100],c[3];//成績\最高分
int i,j,k;//i為科目下標,j為學生下標,及格人數
double b[3],d[3];//科目平均分\及格率
double sum;
printf("輸入分數(按科目輸入(順序為語文數學英語)\n");
for(i=1;i<=3;i++){
for(j=1;j<=5;j++){
scanf("%d",&a[i][j]);
sum=sum+a[i][j];
if(a[i][j]>=60) k=k+1;
if(a[i][j]>a[i][j-1]) c[i]=a[i][j];
}
b[i]=sum/5;
d[i]=100*k/5;
sum=0;k=0;
}
printf("語文平均成績為:%f,最高分為:%d,及格率為:%f.\n",b[1],c[1],d[1]);
printf("數學平均成績為:%f,最高分為:%d,及格率為:%f.\n",b[2],c[2],d[2]);
printf("英語平均成績為:%f,最高分為:%d,及格率為:%f.\n",b[3],c[3],d[3]);
}
uj5u.com熱心網友回復:
你定義完變數后記得賦初值呀double sum = 0;
uj5u.com熱心網友回復:
還有,c語言下標從0開始,你從1開始回圈,i為3時,c[3]都越界了uj5u.com熱心網友回復:
這個不是最要緊的,改完后還是這樣。代碼的錯誤是if(a[i][j]>a[i][j-1]) c[i]=a[i][j];
有時會失效。假如從中間取了某個較大值,它會在某一次回圈將c[i]替換為較小值,然后繼續運行。例如
輸入67 46 91 4 8(單指英語)輸出的最高分為8。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/78788.html
標籤:新手樂園
