用C语言计算加权分数

Python025

用C语言计算加权分数,第1张

本人(无界)用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=0x<yx++) //循环计算成绩,直到算完所有课程 ,y变量储存共有多少门课程 

{

sxcsum+=Stu[x].score*Stu[x].credit

csum+=Stu[x].credit

}

sum=sxcsum/csum

printf("该学生的加权成绩为:%g\n",sum)

return(0)

}

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

//经过调试,可以运行

#include"stdio.h"

#include "ctype.h"

#define NAME_LEN 999

#define MAX_PRO 999

int num_parts = 0

float total_hours = 0,ave_marks = 0

struct

{

char pro_name[NAME_LEN+1]

float cre_hour

float marks

}project[MAX_PRO]

void sum_credit_hour(void)

void GPA(void)

void print(void)

int read_line(char str[], int)

int main()

{

char code

printf("This program is edited by siyuan lu.\n"

"if you want to make your life more convinent,please ask him to get more.\n\n")

for()

{

printf("操作码:\ni 写入科目及学分\ng 显示平均学分\np 显示已输入的数据\nq 退出程序")

printf("\n请输入操作码: ")

scanf(" %c", &code)

//冗余语句

/*************************

while (getchar() != '\n')

*************************/

switch ((int)code)

{

case 105: sum_credit_hour()break

case 103: GPA()break

case 112: print()break

case 113: goto Lbreak

default : printf("非法的输入码!")

}

printf("\n")

}

L:

return 0

}

/*这个函数的功能是写入科目名称及学分数并计算已输入的总学分数 这个函数使用了结构体变量*/

void sum_credit_hour(void)

{

int i

char j

printf("请输入学科名称:")

read_line(project[num_parts].pro_name, NAME_LEN)

printf("请输入学科学分数:")

scanf("%f", &project[num_parts].cre_hour)

printf("请输入您的成绩:")

scanf("%f", &project[num_parts].marks)

total_hours += project[num_parts].cre_hour

num_parts++

}

/*这个函数的功能是计算并显示加权平均分 这个函数使用了结构体变量*/

void GPA(void)

{

int i,total_marks = 0

for(i = 0i <num_partsi++)

{

total_marks += project[i].marks * project[i].cre_hour

}

ave_marks = total_marks / (int)total_hours

printf("您的加权平均分为:%.2f

", ave_marks)

}

/*这个函数的功能是显示已输入的数据 这个函数使用了结构体变量*/

void print(void)

{

int i

printf("学科 学分数 " "成绩\n")

for(i = 0i <num_partsi++)

printf("%-10s %-16f%8f\n", project[i].pro_name, project[i].cre_hour,project[i].marks)

}

int read_line(char str[], int n)

{

int ch, i = 0

while (isspace(ch = getchar()))

while (ch != '\n' &&ch != EOF)

{

if (i <n)

str[i++] = ch

ch = getchar()

}

str[i] = '\0'

return i

}

自己多练练,求这种代码容易被鄙视。。

手打的 但没编译检查是否正确- -~

#include <stdio.h>

#define KECHENG 12

#define JIANGJIN_LINE 82.13

#define JIGE 60

#define KEMU 12

#define TRUE 1

#define FALSE 0

void input_Num(int *Num)

{

printf("input Num \r\n")

scanf("%d",Num)

}

void input_Chengji(int *Xuefen,int *Chengji)

{

int i

for(i=0i<KEMUi++)

{

printf("input No. %d Xuefen \r\n",i)

scanf("%d",&Xuefen[i])

printf("input No. %d Chengji \r\n",i)

scanf("%d",&Chengji[i])

}

}

int Sum_Xuefen(int *Xuefen)

{

int Result

int i

Result = 0

for(i=0i<KEMUi++)

{

Result = Result + Xuefen[i]

}

return Result

}

int Sum_Chengji(int *Chengji)

{

int Result

int i

Result = 0

for(i=0i<KEMUi++)

{

Result = Result + Chengji[i]

}

return Result

}

int Output_JiGeCheck(int *Chengji)

{

int i

int Result

Result = TRUE

for(i=0i<KEMUi++)

{

if(Chengji[i]<60)

{

Result = FALSE

break

}

}

return Result

}

void OutputResult()

{

int T

int i

int L

int chengji[KEMU]

int xuefen[KEMU]

float MaxChengji

float TempChengji

MaxChengji = JIANGJIN_LINE

L = 0

input_Num(&T)

for(i=0i<Ti++)

{

input_Chengji(&xuefen[0],&chengji[0])

if(TRUE == Output_JiGeCheck(&chengji[0])

{

TempChengji = Sum_Chengji(&chengji[0])/Sum_Xuefen(&xuefen[0])

}

if(TempChengji >JIANGJIN_LINE)

{

L++

if(TempChengji >MaxChengji)

{

MaxChengji = TempChengji

}

}

}

printf("%.2f , %d",MaxChengji,L)

}