C语言平时测验6参考代码
1 学霸猫题目描述
在我认识它的时候,它就已经叫学霸猫了,虽然我不知道它名字的由来,但在石大这种地方被冠以学霸之名。它经常会光顾正在上课的教室,并跟同学们一起耐心听讲,学校的教学楼、机房里到处都留下它的倩影,相信它将来会成为一个Doctor Cat。有心的同学记录下了它出现的课堂名称和出现时间。聪明的学霸猫是非常擅长学习的,即使在打盹的时候,也是在学习。它在某个课堂停留的时间越长,学习效果就越好。请你计算一下它哪门课学的最好吧。
输入
第一行输入一个正整数n(n<=100),表示有n组测试。
之后每组一行,包含三个数据,分别表示课堂名称(无空格,长度不超过30个字符),学霸猫的出现时间和离开时间,这两个时间都是指同一天。课堂名称保证不重复。
输出
输出学霸猫学习效果最好的一门课的名称和时长(具体格式见样例输出),占一行,两个数据间以空格分隔,末尾没有空格。
样例输入
2
programming 14:00 15:30
math 8:00 8:10
样例输出
programming 1:30
测试用例1
输入
3
Chinese 10:20 10:50
English 12:10 16:00
math 8:00 8:10
输出
English 3:50
测试用例2
输入
3
Chinese 10:50 12:20
English 12:30 13:00
math 8:00 9:10
输出
Chinese 1:30
代码#include #include #include typedef struct { char name[50]; int a1, a2, b1, b2; int t; } co; int cmp(const void *a, const void *b) { return (*(co*)b).t - (*(co*)a).t; } int main() { co cat[20]; int n,i = 0; scanf("%d",&n); while(n--) { scanf("%s", cat[i].name); scanf("%d:%d%d:%d", &cat[i].a1, &cat[i].a2, &cat[i].b1, &cat[i].b2); cat[i].t = cat[i].b1 * 60 + cat[i].b2 - cat[i].a1 * 60 - cat[i].a2; i++; } qsort(cat, i, sizeof(cat[0]), cmp); printf("%s %d:%d ", cat[0].name, cat[0].t / 60, cat[0].t % 60); return 0; }
2 学分绩题目描述
《中国石油大学(华东)学生素质综合评价办法》中"综合评价是对学生德智体诸方面所作的全面的、系统的评价。目的是贯彻党的教育方针,引导全体学生"以学习为中心,走全面发展之路",充分调动学生的主观能动性,培养学生成为有理想、有道德、有文化、有纪律的社会主义建设者和接班人"。并在学生素质综合评价体系中列举了指标内涵、权重设置、评价方法、等级标准。
对于总成绩的计算方法,具体如下:
其中:(1)Ii表示各门必修课、限选课的学分数;(2)Xi表示所学课程的百分制成绩;(3)Ni表示任意选修课的学分数;(4)成绩按所得的分数计算。
输入
第一行,一个整数T(0 c 98 2 bx
english 80 3 bx
writing 69 1 rx
样例输出
87.41
测试用例1
输入
3
c 88 2 bx
english 80 3 xx
writing 69 2 rx
输出
83.61
测试用例2
输入
4
c 80 4 bx
english 80 1 xx
writing 79 2 rx
program 60 2 bx
输出
74.76
代码#include #include #define M 100 typedef struct course { char name[30];//课程名 int score;//成绩 int credit;//学分 char type[10];//课程类别 } COURSE; double fun(COURSE stu[], int t) { int i, sum1 = 0, sum2 = 0, sum3 = 0; for(i = 0; i < t; i++) { if(strcmp(stu[i].type, "bx") == 0 || strcmp(stu[i].type, "xx") == 0) { sum1 += stu[i].score * stu[i].credit; sum2 += stu[i].credit; } else if(strcmp(stu[i].type, "rx") == 0) { sum3 += stu[i].score * stu[i].credit; } } return (double)sum1 / sum2 + 0.003 * sum3; } int main() { int T, i; double ave; COURSE s[M]; scanf("%d", &T); for(i = 0; i < T; i ++) { scanf("%s%d%d%s", s[i].name, &s[i].score, &s[i].credit, s[i].type); } ave = fun(s, T); printf("%.2f ", ave); return 0; }
3 电话簿
【题目描述】
为电话簿输入n(n<10)个用户的姓名、手机号码(姓名和手机号码中均无空格)和年龄,统计一下年龄大于60岁的用户数量,最后输出该数量,宽度均为4。注意:仅提交自己写的函数。下面是已给出的部分代码:#include #include typedef struct user { char name[20]; //姓名 char tel[20]; //手机号码 int age; //年龄 }USER; void input(USER user[],int n) { int i; for(i=0;i zhangsan 13905326785 65
lisi 13505325678 45
wangwu 13505325678 69
【样例输出】
2
【测试用例1】
5
zhang 13905321234 90
wang 13905322345 34
li 13905323456 23
zhao 13905325678 12
sun 13505327890 50
1
【测试用例2】
5
zhang 13805321234 20
zhang 13705325678 30
li 13605321234 40
li 13705326789 50
zhao 13705326789 34
0代码int fun(USER user[],int n) { int i,sum1=0; for(i=0;i60) sum1++; } return sum1; }4 计算成绩
【题目描述】
某小学的期中考试结束了,老师想尽快掌握每个学生的总成绩。现在输入n(n<=10)名学生的信息(姓名中无空格),请帮老师计算每名学生的总成绩,并输出每名学生的所有信息,学号宽度8,姓名宽度20,各门课成绩和总成绩宽度为6。注意:仅提交自己写的函数。下面是已给出的部分代码:#include typedef struct student { int id; //学号 char name[20]; //姓名 int score[3]; //三门课成绩 int sum; //总成绩 }STUD; void input(STUD std[],int n) { int i,j; for(i=0;i 1001 zhangsan 89 88 87
1002 lisi 90 98 78
1003 wangwu 89 87 89
【样例输出】
1001 zhangsan 89 88 87 264
1002 lisi 90 98 78 266
1003 wangwu 89 87 89 265
【测试用例1】
5
1001 zhang1 100 98 78
1002 zhang2 78 67 89
1003 zhang3 89 87 69
1004 zhang4 88 89 87
1005 zhang5 90 98 99
1001 zhang1 100 98 78 276
1002 zhang2 78 67 89 234
1003 zhang3 89 87 69 245
1004 zhang4 88 89 87 264
1005 zhang5 90 98 99 287
【测试用例2】
3
1001 zhang1 78 98 87
1002 zhang2 89 86 78
1003 zhang3 98 87 78
1001 zhang1 78 98 87 263
1002 zhang2 89 86 78 253
1003 zhang3 98 87 78 263代码void fun(STUD std[],int n) { int i,j; for(i=0; i #include #include #include int main() { int i,j; char a[100]; int sum[100]= {0},n=0; double s=0; scanf("%s",a); for(i=0; a[i]; i++) { for(j=i; a[i]; j++) { if(a[i]==a[j]) sum[i]++; else { n++; i=j-1; break; } } } for(i=0; a[i]; i++) { if(sum[i]!=0) s+=sum[i]; } printf("%.2f",s/n); return 0; }