学生成绩分析

代码如下 

#include "stdio.h"
#define N 10   //学生人数上限
#define M  5   //课程门数上限
struct stud
{   char name[10];   //姓名
    double course[M];//成绩
    double aver;     //平均分
}s[N];
int main()
{   int n,m,i,j;
    double course[M]={0};   //用于统计每门课程的平均分
    scanf("%d,%d",&n,&m);        //输入学生人数与课程门数
    
for(i=0;i<n;i++)
{
scanf("%s",s[i].name);
   请在此插入你的代码



}

    printf("name      ");
    for(j=0;j<m;j++)             //求每门课程的平均分
    {    course[j]=course[j]/n;
         printf("CNO:%d   ",j+1);//显示栏目
    }
    printf("\n");
    for(i=0;i<n;i++)
    {    printf("%10s",s[i].name);
         for(j=0;j<m;j++)
            if(s[i].course[j]<course[j])
                printf("%5.1f   ",s[i].course[j]);
            else
                printf("%8c",32);
         printf("\n");    
     }
     return 0;
} 

现对代码中难理解的一部分进行分析:

for(i=0;i<n;i++)//i表示的是人的个数
{
scanf("%s",s[i].name);//输出当前同学的名字 
    for(j=0;j<m;j++)//m是前面自己输入的有多少个科目,故循环多少次 
      {
        scanf("%lf",&(s[i].course[j]));//输出i同学在j科目的成绩(该循环循环m次)就把每一科对应的成绩输入进去 
         course[j]=course[j]+s[i].course[j];
         //这里course[j]原本程序初始化为0了,j为i同学对应科目,
		 //例如有2个同学,2个科目(n=m=2)
		 //i=0 输入名字 j=0 输入第一科的成绩,第一科总成绩等于0+该同学这科的成绩
		 //i=0          j=1 输入第二科的成绩,第二科总成绩等于0+该同学这科的成绩
		 //i=1 输入名字 j=0  输入第一科的成绩,第一科总成绩等于上一位同学该科成绩加上该同学这科的成绩
		 //i=1          j=1 输入第二科的成绩,第二科总成绩等于上一位同学该科成绩加上该同学这科的成绩
		 //总的来说course保存的是各科目的总分(每个同学该科的分数相加) 
      }
}

以上程序如果集合course[j]=course[j]/n;分析便轻松解决

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值