用C语言计算加权分数

不知道有多少门课程(由用户自己确定)
用户需要做的是:依次输入这门课程的分数,以及该门课程所占的学分。(做的时候应该是遇到-1就停止?记得学过这样的,但是还是不太会哈)
最后屏幕输出的是 加权成绩,即 所有 成绩x学分 之和 除以 学分之和
突然想到这么个问题,但是水平有限无从下手。
希望好心人能够帮助写一个程序,最好有注释的:)
先谢谢了

本人(无界)用C-Free亲手编写的,亲测可运行

# include <stdio.h>

struct stu{ //用结构体数组储存学生的成绩和学分 
float score; //成绩
float credit; //学分
}Stu[100];

int main()
{
unsigned int x=1,y=0;
//y用于结构体数组Stu,同时用于循环计算该学生成绩 
double sxcsum=0,csum=0,sum; 
//sxcsum记录所有成绩乘以学分之和
//csum学分之和 
//sum加权成绩 
printf("提示:输入完后按回车键结束,输入负数代表学生成绩输入完成\n"); 
while(1) //循环用户输入成绩,直到用户输入完成后结束 
{
printf("请输入第%d门课程的成绩:",x);
scanf("%f",&Stu[y].score);  
getchar(); //吸收回车键字符
if(Stu[y].score<0) break; //输入负数结束循环,结束学生输入成绩操作 
printf("请输入第%d门课程的学分:",x++);
scanf("%f",&Stu[y++].credit);
getchar();
if(Stu[y-1].credit<0) break;
}
printf("---输入成绩结束---\n");
for(x=0;x<y;x++) //循环计算成绩,直到算完所有课程 ,y变量储存共有多少门课程 
{
sxcsum+=Stu[x].score*Stu[x].credit;
csum+=Stu[x].credit;
}
sum=sxcsum/csum;
printf("该学生的加权成绩为:%g\n",sum);
return(0);
}

---“无界”回答---

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2020-12-17
#include <stdio.h>
void main(){
float cj, scj=0;
int xf, sxf=0;
while(1){
printf("输入 成绩 学分(-1 -1数据结束):");
scanf("%f%d",&cj,&xf);
if(cj==-1)
break;
scj+=cj*xf;
sxf+=xf;
}
printf("总评成绩=%.2f\n", scj/sxf);
}追问

感谢阿,但是我运行了一下,不太会用你这个,成绩和学分之间 是空格?
-1结束那段也不太懂

追答

成绩和学分之间 是空格。成绩(cj)等于-1时执行break语句跳出循环。

追问

还是算不出。。。

追答

追问

学分是小数的时候 就出错了

本回答被提问者采纳
第2个回答  2014-07-16
#include <stdio.h>

#define STUDENT_COUNT 3 //宏定义 定义学生的成绩科目数

int main()

{

float sumCredit=0;//总学分

float sumScore=0;//总的加权分数

float score[STUDENT_COUNT];//存放学生的成绩

float credit[STUDENT_COUNT];//存放学生的成绩对应的学分

for (int i=0;i<STUDENT_COUNT; i++) {

printf("请输入学生第%d科的成绩:",i+1);

while (1) {

scanf("%f",&score[i]);

if (score[i]>=0&&score[i]<=100) {//保证输入的分数在合理区间

break;

}

else

{

printf("您输入的成绩不再0-100范围内请重新输入");

}

}

printf("请输入学生第%d科的成绩对应的学分:",i+1);

while (1) {

scanf("%f",&credit[i]);

if (credit[i]>=1&&credit[i]<=10) {//保证输入的学分在合理区间

break;

}

else

{

printf("您输入的学分不再1-10范围内请重新输入");

}

}

}

for (int i=0; i<STUDENT_COUNT; i++) {

sumCredit+=credit[i];

}

for (int i=0; i<STUDENT_COUNT; i++) {

printf("学生第%d科的加权成绩:%f\n",i+1,(score[i]*credit[i])/sumCredit);

sumScore+=(score[i]*credit[i])/sumCredit;

}

printf("学生的加权成绩为:%f\n",sumScore);

return 0;

}追问

运行环境?
到我这里各种报错

追答

xcode

追问

很感谢帮助 但是我这个真心运行不了

相似回答