当前目录下有一个文件名为 score1.txt 的文本文件,存放着某班学生的计算机课成绩,共有学号、平时成绩、期末成绩三列。请根据平时成绩占 40%,期末成绩占 60%的比例计算总评成绩。

练习一:

当前目录下有一个文件名为 score1.txt 的文本文件,存放着某班学生的计算机课成绩,共有学号、平时成绩、期末成绩三列。请根据平时成绩占 40%,期末成绩占 60%的比例计算总评成绩(取整数) ,并分学号、总评成绩两列写入另一文件 score2.txt 。同时在屏幕上输出学生总人数, 按总评成绩计 90 以上、80~89、70~79、60~69、60 分以下各成绩档的人数 和班级总平均分(取整数) 。

# -*- coding:utf-8 -*-
f = open("score1.txt")
a = f.readline()
line = (f.readline()).strip()
f2 = open("score2.txt",'w')
f2.write("学号 平均成绩\n")
L2 = [0,0,0,0,0]
count = 0
sum = 0
while (len(line) != 0):
    L1 = line.split()
    f2.write(L1[0]+" ")
    f_score = int(int(L1[1])*0.4+int(L1[2])*0.6)
    if 90<f_score <=100:
        L2[0] += 1
    elif f_score >=80:
        L2[1] += 1
    elif f_score >=70:
        L2[2] += 1
    elif f_score >=60:
        L2[3] += 1
    else :
        L2[4] += 1
    count += 1
    sum += f_score
    f2.write(str(f_score)+"\n")
    line = (f.readline().strip())
f.close()
f2.close()
avg_score = int(sum/count)
print("学生总人数为{0},按总评成绩计,90以上{1}人,80-90有{2}人,70-80有{3}人,60-70有{4}人,60以下有{5}人,班级总平均分为{6}".format(count,L2[0],L2[1],L2[2],L2[3],L2[4],avg_score))

Demo:

score1.txt

学号 平时成绩 期末成绩
170691501 90 91
170691502 60 70
170691503 85 60
170691504 80 75
170691505 95 60
170691506 95 100
170691507 60 40

Result:

  • 22
    点赞
  • 155
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
纯C语言学生成绩管理系统(以包含文件的形式写的),结构体,链表,数组,以下是main.c #include #include #include #define m 3/*宏定义m的值为3*/ struct node/*链表初始化*/ { char name[20]; int no; float score[m]; float sum; float avg; struct node *next; }; char ch[m+4][20]={{"学号"},{"姓名"},{"语文"},{"数学"},{"英语"},{"总分"},{"平均分"}};/*定义并初始化一个全局二维字符数组*/ #include "save.c"/*包含保存文件*/ #include "read.c"/*包含读取文件*/ #include "output.c"/*包含打印文件*/ #include "set.c"/*包含录入文件*/ #include "demand.c"/*包含查询文件*/ #include "sort.c"/*包含排序文件*/ #include "modified.c"/*包含修改文件*/ #include "add.c"/*包含添加文件*/ #include "del.c"/*包含删除文件*/ void main() { int n; printf("\n\t\t\t欢迎使用学生成绩管理系统\n\n"); printf("\t\t\t\t\t\t制 作: XIA XIA\n"); do { printf("\n\n1:学生成绩录入,并保存\n"); printf("2:学生成绩查询\n"); printf("3:学生成绩的排序\n"); printf("4:学生成绩的修改\n"); printf("5:学生成绩的打印\n"); printf("6:学生信息的添加\n"); printf("7:学生信息的删除\n"); printf("0:退出学生成绩管理系统\n\n\n"); printf("输入你要执行操作的相应序号\n"); scanf("%d",&n);/*输入相就的操作的序号*/ switch (n) { case 1: set();break;/*调用录入函数*/ case 2: demand();break;/*调用查询函数*/ case 3: sort();break;/*调用排序函数*/ case 4: modified();break;/*调用修改函数*/ case 5: output();break;/*调用打印函数*/ case 6: add();break;/*调用添加函数*/ case 7: del();break;/*调用删除函数*/ case 0: printf("正在退出学生成绩管理系统......\n");exit(0);/*直到输入“0”退出学生成绩管理系统*/ default:printf("输入错误码,重新输入\n"); } }while(1); }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟敛寒林o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值