最近是综测计算,准备要评奖评优的时候,我用C语言写了一个可以计算平均绩点的程序,还能输出对应的信息。
输入方式
线输入科目名称,再输入科目的绩点,然后再输入对应的分数,最后按回车,一直输入,对照着教务处表,就像这张表一样,对着输入。
(我是菜鸡,没必要看,我不考研,所以无所谓)
输入结束
输入完后,在下一个里面输入三个0,就结束了
像这样,回车结束。
结果查询
输出的结果不仅有终端上的文字,也直接生成了.txt文件
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
依次输入 科目 成绩绩点 该课程的学分 空格隔开
终端会显示外,也生产了一个"绩点结果.txt"的.txt文件,去软件目录找对应就好
*/
typedef struct all {
char course[100];
float grade;
float xuefen;
struct all *next;
} hh;
hh *h, *t, *q, *p, *k;
char buffer[100];
void add(float a, float b, char *c) {
t = (hh *)malloc(sizeof(hh));
t->grade = a;
t->xuefen = b;
strcpy(t->course, buffer);
t->next = NULL;
if (h == NULL) {
h = t;
k = t;
} else {
k->next = t;
k = t;
}
}
int main() {
FILE *fp;
int i = 0;
float gsum = 0, xsum = 0, a, b;
char save[100];
fp = fopen("绩点结果.txt", "a");
while (1) {
printf("请输入第%d科目||学科名称\t分数\t学分 \n", i);
scanf("%s%f%f", buffer, &a, &b);
if (a == 0)
break;
add(a, b, buffer);
i++;
}
p = h;
while (p != NULL) {
gsum += p->grade * p->xuefen;
xsum += p->xuefen;
sprintf(save, "科目:%-20s|成绩:%6.2f|学分:%6.2f |累计当前总分:%6.2f| 累计总学分:%6.2f| 目前平均总分:%6.2f\n",
p->course, p->grade,
p->xuefen, gsum, xsum, gsum / xsum);
printf("科目:%-20s|成绩:%6.2f|学分:%6.2f |累计当前总分:%6.2f| 累计总学分:%6.2f| 目前平均总分:%6.2f\n",
p->course, p->grade,
p->xuefen, gsum, xsum, gsum / xsum);
fputs(save, fp);
p = p->next;
}
printf("\n\n输出完成,请查看.txt");
fclose(fp);
getchar();
getchar();
}