# 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)
}