C语言编程:输入10个学生5门课成绩,分别用函数求: 1)每个学生平均分; 2)每门课的平均分;

2024-11-03 12:41:17
推荐回答(5个)
回答1:

#include

#include

void aver_stu(int t[][5]);               //定义学生平均分函数

void aver_course(int t[][5]);            //定义课程平均分函数

void high(int t[][5]);                   //定义最高分函数

void vari(int t[][5]);                   //定义方差函数

int main()

{

int stu[10][5];

int i, j;

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

for (j=0; j<5; j++)

scanf("%d", &stu[i][j]);     //输入10个学生各5门课的成绩

aver_stu(stu);                       //调用学生平均分函数

aver_course(stu);                    //调用课程平均分函数

high(stu);                           //调用最高分函数

vari(stu);                           //调用方差函数

return 0;

}

//学生平均分函数

void aver_stu(int t[][5])

{

int i, j;

float k, ave;

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

for (j=0, k=0.0; j<5; j++)

k+=t[i][j];

ave=k/5;

printf("No.%d student average is %f\n", i+1, ave);

}

}

//课程平均分函数

void aver_course(int t[][5])

{

int i, j;

float k, ave;

for (j=0; j<5; j++){

for (i=0, k=0.0; i<10; i++)

k+=t[i][j];

ave=k/10;

printf("No.%d course average is %f\n", j+1, ave);

}

}

//最高分函数

void high(int t[][5])

{

int i, j, h, stu, cour;

for (i=0, h=0, stu=0, cour=0; i<10; i++){

for (j=0, j<5; j++)

if (t[i][j]>h){

h=t[i][j];

stu=i+1;

cour=j+1;

}

}

printf("The highest score is %d, from No.%d student & No.%d course\n", h, stu, cour);

}

//方差函数

void vari(int t[][5])

{

int i, j, k, m;

float temp[10], var, x1, x2;

for (i=0, m=0; i<10; i++, m++){

for (j=0, k=0; j<5; j++)

k+=t[i][j];

temp[m]=k/5;

}

for (i=m=x1=x2=0; i<10; i++){

x1+=pow(temp[i], 2);

x2+=temp[i];

}

var=x1/10-pow(x2/10, 2);

printf("The variance is %f\n", var);

}

扩展资料:

scanf()用法:

输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&。

scanf("%s",s);改为scanf("%s",&s);

scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);

格式控制字符串包含:格式控制说明,普通字符。

1、格式控制字符串表示输入的格式,(int型用%d,float用%f,double型用%lf)

2、普通字符:在输出数据的时候,按照原样输出的字符,如:"fahr=%d,celsius=%d\n"中的fahr=,celsius=。

3、输入的参数是变量的地址,所以要在变量前面加&。

回答2:

相信我这个是最简单的了. 你看看. 有不明白的可以问我.#include
void main()
{
float stu_ave[10],lessom_ave[5]={0.0};
//stu_ave用于存放每个学生的总成绩,lessom_ave用于存放5门课的总成绩 float t1,t2,t3,t4,t5; //用于输入每个学生5门课的成绩.
int i;
for(i=0;i<10;i++)
{
printf("输入第%d个学生5门课的成绩: ",i+1);
scanf("%f%f%f%f%f",&t1,&t2,&t3,&t4,&t5);
stu_ave[i]=t1+t2+t3+t4+t5; //计算每个学生的总成绩;
//计算5门课的总分.
lessom_ave[0]+=t1;
lessom_ave[1]+=t2;
lessom_ave[2]+=t3;
lessom_ave[3]+=t4;
lessom_ave[4]+=t5;
}
//计算每个学生的平均分.并输出
for(i=0;i<10;i++)
{
stu_ave[i]/=5;
printf("第%d个学生的平均分:%.3f\n",i+1,stu_ave[i]);
}printf("\n\n");
//计算5门课程的平均分.并输出
for(i=0;i<5;i++)
{
lessom_ave[i]/=10;
printf("第%d门课的平均分:%.3f\n",i+1,lessom_ave[i]);
}
}

回答3:

这里定义的数组score[2][3]
这里使用的是max=a[0][0],
=(v[0]+v[1]/3;没有括号)
printf("the 平均成绩是%d",v[i]);这里输且仅输出一次,此时i=2,是个越界的值

这样看这段代码本身就是错的,没有什么可取的地方

下面这段是谭老师参考书上的一个例题,大意相似,可以参考一下

要求: 通过键盘输入3名学生4门课程的成绩,
分别求每个学生的平均成绩和每门课程的平均成绩。
要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车
其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。

#include
#include
main()
{ float a[4][5],sum1,sum2;
inti,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%f",&a[i][j]);
for(i=0;i<3;i++)
{sum1=0;
for(j=0;j<4;j++)
sum1+=a[i][j];
a[i][4]=sum1/4;
}
for(j=0;j<5;j++)
{ sum2=0;
for(i=0;i<3;i++)
sum2+=a[i][j];
a[3][j]=sum2/3;
}
for(i=0;i<4;i++)
{ for(j=0;j<5;j++)
printf("%6.2f",a[i][j]);
printf("\n");
}
}

回答4:

#include
#include
main()
{
float a[11][6],sum1,sum2;
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
{
scanf("%f",&a[i][j]);
}
}
for(i=0;i<10;i++)
{
sum1=0;
for(j=0;j<5;j++)
{
sum1+=a[i][j];
a[i][5]=sum1/5;
}
}
for(j=0;j<=5;j++)
{
sum2=0;
for(i=0;i<10;i++)
{
sum2+=a[i][j];
a[10][j]=sum2/10;
}
}
for(i=0;i<=10;i++)
{
for(j=0;j<=5;j++)
{
printf("%6.2f",a[i][j]);
}
printf("\n");
}
}

回答5:

打印bug..