鱼C论坛

 找回密码
 立即注册
查看: 2267|回复: 2

[已解决]帮忙找个bug

[复制链接]
发表于 2022-10-24 21:50:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:
学分绩点-加权平均成绩

大学里每一门课程都有一定的学分。只有通过这门课的考试,才能获得相应的学分。只有学分积累到专业要求后才能毕业。如果提前修完所要求课程与学分,还可以提前毕业。学分制是一种更加灵活的弹性学制,为学生在校期间创造了更多的灵活性,包括在一段时间内申请休学、创业,鼓励学有余力的同学提前毕业以及辅修、攻读其他专业和学位。大学每年的优秀和奖学金评选均需计算学分绩点(加权平均成绩)。
学分绩点计算的是学生每门课程的期末分数(课程成绩)按照学分的加权平均值(加权平均成绩)。
请你写一个程序求班级每人的学分绩点。

输入格式:
第一行2个正整数n和k,分别表示计算的人数和课程数目;
第二行k个以空格分隔的实数,依次表示k门课的学分;
其后n行,依次表示n个同学的成绩,每行k个以空格分隔的实数。

输出格式:
每行输出一个同学的学分绩点,小数点后保留3位小数。

输入样例:
3 5
6 3.5 4 3 1
89 92.5 88 78 96
92 89 92.5 88 89
78 98 99 94 92
输出样例:
87.986
90.657
90.343

我的代码如下:
#include<stdio.h>
int main()
{
        int n,cla,i,j;
        float sum1=0.0,sum2;
        scanf("%d %d",&n,&cla);
        float c[cla],a[cla];
        for(i=0; i<cla; i++)
        {
                scanf("%f",&c[i]);
                sum1+=c[i];
        }
        for(j=0; j<n; j++)
        {
        sum2=0.0;
                for(i=0; i<n; i++)
                {
                        scanf("%f",&a[i]);
                        sum2+=(a[i]*(c[i]/sum1));
                }
                printf("%.3f\n",sum2/cla);
        }
        return 0;
}

输入题目给的例子之后是这样的
3 5
6 3.5 4 3 1
89 92.5 88 78 96
13.826
92 89 92.5 88 89
13.394
13.826

很疑惑,为什么输入第二行学生成绩之后会直接打印两次,求大佬解决!!!
最佳答案
2022-10-24 22:48:58
本帖最后由 jackz007 于 2022-10-24 22:55 编辑
#include<stdio.h>
int main()
{
        int n,cla,i,j;
        float sum1=0.0,sum2;
        scanf("%d%d",&n,&cla) ;
        float c[cla] , a[cla] ;
        for(i=0; i<cla; i++)
        {
                scanf("%f",&c[i]);
                sum1 += c[i]  ;
        }
        for(j = 0 ; j < n ; j ++)
        {
                sum2 = 0.0                               ;
                for(i = 0 ; i < cla ; i ++)                // 这里有错 
                {
                        scanf("%f" , & a[i])             ;
                        sum2 = sum2 + a[i] * c[i] / sum1 ;
                }
                printf("%.3f\n" , sum2)                  ; // 这里有错
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-24 22:48:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-24 22:55 编辑
#include<stdio.h>
int main()
{
        int n,cla,i,j;
        float sum1=0.0,sum2;
        scanf("%d%d",&n,&cla) ;
        float c[cla] , a[cla] ;
        for(i=0; i<cla; i++)
        {
                scanf("%f",&c[i]);
                sum1 += c[i]  ;
        }
        for(j = 0 ; j < n ; j ++)
        {
                sum2 = 0.0                               ;
                for(i = 0 ; i < cla ; i ++)                // 这里有错 
                {
                        scanf("%f" , & a[i])             ;
                        sum2 = sum2 + a[i] * c[i] / sum1 ;
                }
                printf("%.3f\n" , sum2)                  ; // 这里有错
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-24 23:04:07 | 显示全部楼层

谢谢大佬!!正确了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 05:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表