Description
输入10个学生,每个学生的数据包括学号、姓名、3门课的成绩。定义结构体类型表示学生类型,输入10个学生的数据,
计算每个学生的平均成绩。按平均成绩由高到低输出所有学生信息,成绩相同时按学号从小到大输出。
{
输入格式
10个学生信息,每行一个学生
输入样例
1 aaa 50 60 70
2 bbb 50 50 50
3 ccc 60 70 80
4 ddd 40 40 40
5 eee 70 80 90
6 fff 30 30 30
7 ggg 80 90 100
8 hhh 20 20 20
9 iii 100 100 100
10 jjj 10 10 10
输出样例
9 iii 100 100 100
7 ggg 80 90 100
5 eee 70 80 90
3 ccc 60 70 80
1 aaa 50 60 70
2 bbb 50 50 50
4 ddd 40 40 40
6 fff 30 30 30
8 hhh 20 20 20
10 jjj 10 10 10
}
--------------------------------------------------------------
根据理解和记忆打的代码
# include <stdio.h>
struct date
{
int num;
char name[100];
double score[3], avg, sum;
};
int main()
{
int i, j;
struct date stu[10], tmp;
/*输入学生的所有信息*/
for (i = 0; i < 10; i++)
{
scanf("%d%s%lf%lf%lf", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
}
/*计算学生平均分*/
for (i = 0; i < 10; i++)
{
stu[i].sum = 0;
for (j = 0; j < 3; j++)
{
stu[i].sum += stu[i].score[j];
}
stu[i].avg = stu[i].sum / 3;
}
/*按题目的两个要求进行冒泡排序*/
for (i = 0; i < 10 - 1; i++)
{
for (j = 0; j < 10 - 1 - i; j++)
{
if (stu[j].avg < stu[j+1].avg)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
else if (stu[j].avg == stu[j+1].avg)
{
if (stu[j].num > stu[j+1].num)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
}
/*循环输出学生类型数组,从而输出每个学生的所有信息*/
for (i = 0; i < 10; i++)
{
printf("%d %s %.0lf %.0lf %.0lf\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
}
return 0;
}
/*
--------------------------------------------------------------便于理解的测试调试程序:
可修改删减后通过OJ
#include <stdio.h>
struct data
{
int num;
char name[100];
float score[3];
float avg, sum;
};
int main()
{
int i,j;
struct data stu[10],tmp;
for(i=0; i<10; i++)
{
printf("请输入学生的学号:");
scanf("%d", &stu[i].num);
printf("请输入学生的姓名:");
scanf("%s", stu[i].name);
stu[i].sum = 0;
for(j = 0; j < 3; j++)
{
printf("请输入学生的第%d门成绩:",j+1);
scanf("%f", &stu[i].score[j]);
stu[i].sum += stu[i].score[j];
}
stu[i].avg = stu[i].sum / 3;
printf("该名学生的平均成绩为:%.2f", stu[i].avg);
printf("\n\n");
}
for(i=0; i<9; i++)
for(j=0; j<9-i; j++)
{
if (stu[j].avg < stu[j+1].avg)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
else if (stu[j].avg == stu[j+1].avg)
{
if (stu[j].num > stu[j+1].num)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
for(i=0; i<10; i++)
{
printf("%d %s %.0lf %.0lf %.0lf\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
}
return 0;
}
*/
/*
请输入学生的学号:1
请输入学生的姓名:aaa
请输入学生的第1门成绩:50
请输入学生的第2门成绩:60
请输入学生的第3门成绩:70
该名学生的平均成绩为:60.00
请输入学生的学号:2
请输入学生的姓名:bbb
请输入学生的第1门成绩:50
请输入学生的第2门成绩:50
请输入学生的第3门成绩:50
该名学生的平均成绩为:50.00
请输入学生的学号:3
请输入学生的姓名:ccc
请输入学生的第1门成绩:60
请输入学生的第2门成绩:70
请输入学生的第3门成绩:80
该名学生的平均成绩为:70.00
请输入学生的学号:4
请输入学生的姓名:ddd
请输入学生的第1门成绩:40
请输入学生的第2门成绩:40
请输入学生的第3门成绩:40
该名学生的平均成绩为:40.00
请输入学生的学号:5
请输入学生的姓名:eee
请输入学生的第1门成绩:70
请输入学生的第2门成绩:80
请输入学生的第3门成绩:90
该名学生的平均成绩为:80.00
请输入学生的学号:6
请输入学生的姓名:fff
请输入学生的第1门成绩:30
请输入学生的第2门成绩:30
请输入学生的第3门成绩:30
该名学生的平均成绩为:30.00
请输入学生的学号:7
请输入学生的姓名:ggg
请输入学生的第1门成绩:80
请输入学生的第2门成绩:90
请输入学生的第3门成绩:100
该名学生的平均成绩为:90.00
请输入学生的学号:8
请输入学生的姓名:hhh
请输入学生的第1门成绩:20
请输入学生的第2门成绩:20
请输入学生的第3门成绩:20
该名学生的平均成绩为:20.00
请输入学生的学号:9
请输入学生的姓名:iii
请输入学生的第1门成绩:100
请输入学生的第2门成绩:100
请输入学生的第3门成绩:100
该名学生的平均成绩为:100.00
请输入学生的学号:10
请输入学生的姓名:jjj
请输入学生的第1门成绩:10
请输入学生的第2门成绩:10
请输入学生的第3门成绩:10
该名学生的平均成绩为:10.00
9 iii 100 100 100
7 ggg 80 90 100
5 eee 70 80 90
3 ccc 60 70 80
1 aaa 50 60 70
2 bbb 50 50 50
4 ddd 40 40 40
6 fff 30 30 30
8 hhh 20 20 20
10 jjj 10 10 10
*/
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
华农C语言程序设计OJ代码 (401个子文件)
结构体定义学生类型-多个学生的成绩表.c 5KB
水仙花数-有疑问.c 5KB
一年的第几天.c 5KB
打印菱形.c 4KB
0‘知识点.c 4KB
转换字符问题.c 4KB
1098.链表结点的插入.c 4KB
链表的排序.c 3KB
20秒后的时间.c 3KB
杨辉三角.c 3KB
高精度加法.c 3KB
链表的倒序.c 3KB
矩阵鞍点.c 3KB
打印空心数字菱形.c 3KB
选择排序法.c 3KB
计算高精度加法.c 3KB
辗转相除法求最大公约数.c 2KB
学生成绩信息统计.c 2KB
你总共写了_行代码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。.c 2KB
按分数评定等级.c 2KB
无头单链表的合并.c 2KB
运用指针逐层拆分遍历二维数组的每一个元素.c 2KB
链表的合并.c 2KB
调用函数交换矩阵的行和列并输出.c 2KB
求两个数的最大公约数.c 2KB
百万富翁.c 2KB
统计不相等数字的个数.c 2KB
打印图案.c 2KB
回文串的判断.c 2KB
寻找字符串.c 1KB
用数组进行进制转换.c 1KB
18710 统计不同数字的个数(升级版).c 1KB
小红买菜.c 1KB
鞍点.c 1KB
判断用精度判断坐标是否在单位圆上.c 1KB
计算阶乘.c 1KB
调用函数,分类字符.c 1KB
贷款计算还款情况.c 1KB
文本文件操作_字符输入.c 1KB
调用函数进行数的交换.c 1KB
打印转置矩阵.c 1KB
寻找矩阵鞍点.c 1KB
转置矩阵.c 1KB
1051 找矩阵中的鞍点.c 1KB
字符串的合并.c 1KB
字符串的合并.c 1KB
数的整除.c 1KB
计算平均分.c 1KB
1046 计算高精度加法.c 1KB
1047 冒泡排序.c 1KB
编程找出所有1000之内所有的完全数.c 1KB
找满足要求的数字.c 1KB
输出前一个和后一个字符.c 1KB
数组冒泡排序法.c 1KB
累加一行字符中的数字.c 1KB
打印图案.c 1KB
插入数据.c 1KB
打印三角形_2.c 1KB
打印空心菱形.c 1KB
1038 打印图案.c 1022B
冒泡排序.c 1014B
迭代法求平方根.c 1012B
不定个数的字符变换.c 1008B
1 打印星号空心菱形.c 1005B
计算一个正整数的位数.c 980B
1050 寻找字符串.c 956B
1023 简单计算器.c 950B
判断一个球能否装进长方体盒子里.c 914B
统计三行字符串中的大写字母个数.c 914B
输出最小值.c 905B
1145 回文串.c 898B
递归求x的y次方.c 887B
求函数值2.c 887B
输入一个年份和月份,判断该月份有多少天.c 886B
计算两串字符的ASCII码之和的差.c 865B
求素数.c 854B
1062 打印矩阵.c 853B
字符变换.c 844B
1035 打印菱形图案.c 842B
字母分类.c 825B
打印杨辉三角.c 812B
1042 百万富翁.c 799B
1040 统计不同数字的个数.c 787B
用指针删去空格.c 781B
打印菱形.c 760B
static int类型的作用-保留数值.c 751B
简单计算器.c 727B
判断一个数是否是平方数.c 720B
对指针和数组的理解.c 720B
自由落体.c 714B
累加循环计算.c 708B
回文串.c 703B
调用函数运用指针交换两个数.c 699B
1018 数的排序.c 689B
求函数值.c 688B
1031 统计单词个数.c 684B
百万富翁.c 680B
转置矩阵.c 676B
1 两数和为1909.c 672B
1019 数的整除.c 659B
共 401 条
- 1
- 2
- 3
- 4
- 5
Hunter_Kevin
- 粉丝: 719
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1