『壹』 c語言編寫程序,從鍵盤輸入6名學生5門功課成績,分別統計出每個學生的平均成績
一、問題分析
需要保存6名學生5門功課的成績,需要設計一個6行5列大小的二維數組scores[6][5]來存儲30個成績數據。保存6名學生的平均成績,需要設計一個6列大小的一維數組來avgs[6]存儲平均成績。
為使程序具有更好的通用性,使用宏定義定義學生人數M和課程門數N。
計算每個學生的平均成績時,累加該行所有列的成績數據,並除以列大小即為該學生的平均成績。
二、參考程序
#include<stdio.h>
#defineM6 /*學生人數*/
#defineN5 /*課程門數*/
/*輸入row個學生col門課程的成績*/
voidinput(doublescores[][N],introw,intcol);
/*計算row個學生的平均成績並保存在avgs數組中*/
voidaverage(doublescores[][N],introw,intcol,doubleavgs[]);
/*輸出所有學生的平均成績*/
voidoutput(doubleavgs[],intsize);
voidmain()
{
doublescores[M][N];
doubleavgs[M];
input(scores,M,N);
average(scores,M,N,avgs);
output(avgs,M);
}
/*輸入row個學生col門課程的成績*/
voidinput(doublescores[][N],introw,intcol)
{
inti,j;
printf("請輸入%d個學生%d門課程的成績,每個學生成績在一行,以空格分隔成績: ",row,col);
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
scanf("%lf",&scores[i][j]);
}
}
}
/*計算row個學生的平均成績並保存在avgs數組中*/
voidaverage(doublescores[][N],introw,intcol,doubleavgs[])
{
inti,j;
for(i=0;i<row;i++)
{
avgs[i]=0.0;
for(j=0;j<col;j++)
{
avgs[i]+=scores[i][j];
}
avgs[i]/=col;
}
}
/*輸出所有學生的平均成績*/
voidoutput(doubleavgs[],intsize)
{
inti;
printf("%6s%10s ","序號","平均成績");
printf("---------------------------- ");
for(i=0;i<size;i++)
{
printf("%6d%10.2lf ",i+1,avgs[i]);
}
}
三、運行測試
『貳』 c語言初學者 求6個人成績平均分的程序 源代碼如下,中間幾個printf是想知道錯在哪...
修改之後的代碼:
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,k;
int score[6][3]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
double average[3]={0.0,0.0,0.0},sum[3]={0.0,0.0,0.0};
printf("請輸入3門成績數學語文英語 ");
for(i=0;i<6;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&score[i][j]);
sum[j]+=score[i][j];
printf("%f ",sum[j]);
}
}
printf("%f%f%f",sum[0],sum[1],sum[2]);
printf("平均成績: ");
for(k=0;k<3;k++)
{average[k]=sum[k]/6.0;
printf("%.1f",average[k]);
}
}
測試結果:看是不是你想要的結果
你提問的時候也不說說自己的思路我只能猜這個6*3的數組是幹嘛的- -
這段代碼最主要的問題是嵌套for循環的時候括弧掉了導致score數組賦值的時候以初值0賦值,也就是你看到的0了。小問題是數組初始化的時候賦值不完整,比如score數組為嘛一行就給一個0嘛- -
其他的就是書寫規范上的問題 就不啰嗦了