期末考试之排名次 (sdut oj)

通过编程自动计算学生期末考试总成绩并进行排序,提高教师工作效率。输入包括学生人数及各科成绩,输出为按总成绩降序排列的成绩列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



期末考试之排名次

Time Limit: 1000MS  Memory Limit: 65536KB



Problem Description

期末考试结束了,童鞋们的成绩也出来的了,可是为了排名次可忙坏了老师,因为学生太多了。这时,老师把这个任务交给了你,希望你能帮老师完成。作为IT人,你当然不能用笨笨的人工方法了,编程解决才是好办法。
共有三门课,语文、数学和英语,要求根据学生的各科成绩计算出其总成绩,并根据总成绩从高到低排序。


Input
第一行一个整数N(N<=100),代表学生的人数。
接下来的N行数据,每行有三个整数,C,M,E分别代表一个学生语文、数学和英语的成绩。

Output
一共N行,每行一个数,从大到小,分别代表各个学生的总成绩。

Example Input
3
70 80 90
59 59 59
100 100 100

Example Output
300
240
177
Hint
Author






参考代码



#include<stdio.h>
int main()
{
    int a[100];
    int n;
    int i,j,temp;
    int c,m,e;
    scanf("%d",&n);
    for(i = 0; i < n; i++)
    {
        scanf("%d%d%d",&c,&m,&e);
        a[i] = c + m + e;
    }
    for(i = 0; i < n - 1; i++)
    {
        for(j = i + 1; j < n; j++)
        {
            if(a[i] < a[j])
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    for(i = 0; i < n; i++)
    {
        printf("%d\n",a[i]);
    }
    return 0;
}


期末考试之排名次

Time Limit: 1000MS  Memory Limit: 65536KB
Problem Description

期末考试结束了,童鞋们的成绩也出来的了,可是为了排名次可忙坏了老师,因为学生太多了。这时,老师把这个任务交给了你,希望你能帮老师完成。作为IT人,你当然不能用笨笨的人工方法了,编程解决才是好办法。
共有三门课,语文、数学和英语,要求根据学生的各科成绩计算出其总成绩,并根据总成绩从高到低排序。

Input
第一行一个整数N(N<=100),代表学生的人数。
接下来的N行数据,每行有三个整数,C,M,E分别代表一个学生语文、数学和英语的成绩。
Output
一共N行,每行一个数,从大到小,分别代表各个学生的总成绩。
Example Input
3
70 80 90
59 59 59
100 100 100
Example Output
300
240
177
Hint
Author

### 关于 SDUT C语言 期末考试 PTA 题目的分析 以下是关于山东科技大学 (SDUT) 的 C语言期末考试可能涉及的一些典型 PTA 练习题目及其解析: #### 1. **余弦函数近似计算** 该类题目通常考察学生对泰勒级数展开的理解以及循环控制的应用。 ```c #include <stdio.h> int main() { double x, sum, t, item; int n, i; while (scanf("%lf %d", &x, &n) == 2) { t = x * x; item = 1.0; sum = 1.0; for (i = 1; i <= n; i++) { item *= -t / ((2 * i - 1) * (2 * i)); sum += item; } printf("%.4lf\n", sum); } return 0; } ``` 此代码实现了基于泰勒级数的 `cos(x)` 近似计算[^1]。输入为角度值 `x` 和迭代数 `n`,输出为四舍五入到四位小数的结果。 --- #### 2. **结构体应用:比赛排名统计** 此类题目主要考查学生对结构体定义、初始化及序算法的实际运用能力。 ```c #include <stdio.h> #include <stdlib.h> typedef struct Team { long id; int score; } Team; // 比较函数用于 qsort 序 int compare(const void* a, const void* b) { Team team_a = *(Team*)a; Team team_b = *(Team*)b; if (team_a.score != team_b.score) return team_b.score - team_a.score; // 按分数降序列 else return team_a.id - team_b.id; // 如果分数相同,则按 ID 升序列 } int main() { int T, N, i; scanf("%d", &T); while (T--) { scanf("%d", &N); Team teams[N]; for (i = 0; i < N; i++) scanf("%ld %d", &teams[i].id, &teams[i].score); qsort(teams, N, sizeof(Team), compare); for (i = 0; i < N; i++) printf("%ld %d\n", teams[i].id, teams[i].score); } return 0; } ``` 这段代码实现了一个简单的竞赛成绩管理系统[^2]。通过读取多个团队的成绩并按照特定规则序后输出结果。 --- #### 3. **整除条件判断** 这类基础编程题旨在帮助初学者掌握基本逻辑运算符和分支语句。 ```c #include <stdio.h> int main() { int n; scanf("%d", &n); if (n % 3 == 0 && n % 5 == 0) printf("Yes"); else printf("No"); return 0; } ``` 上述程序验证给定数值是否能同时被 3 和 5 整除[^3]。如果满足条件则打印 `"Yes"`;否则打印 `"No"`。 --- #### 4. **数组序与索引追踪** 本题综合考察了冒泡序法以及其他辅助功能的设计思路。 ```c #include <stdio.h> void bubble_sort(int arr[], int index[], int n) { int i, j, temp, temp_idx; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - 1 - i; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; temp_idx = index[j]; index[j] = index[j + 1]; index[j + 1] = temp_idx; } } } } int main() { int arr[10], index[10], i; for (i = 0; i < 10; i++) { scanf("%d", &arr[i]); index[i] = i + 1; } bubble_sort(arr, index, 10); for (i = 0; i < 10; i++) { if (i == 9) printf("%d", arr[i]); else printf("%d ", arr[i]); } printf("\n"); for (i = 0; i < 10; i++) { if (i == 9) printf("%d", index[i]); else printf("%d ", index[i]); } return 0; } ``` 在此例子中,我们不仅完成了对原始数据列表从小到大重新安的任务,而且记录下了每一个位置变动前后的映射关系[^4]。 --- ### 总结说明 以上列举了几种常见的针对大学计算机科学课程中的实践作业形式。它们分别涵盖了不同的知识点和技术要点,有助于提高学生的实际动手能力和理论联系实际的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值