长沙医学院ACM编程大赛初赛实战题目及参考答案

需积分: 15 1 下载量 28 浏览量 更新于2024-09-06 收藏 130KB PDF 举报
长沙医学院计算机系ACM程序设计大赛选拔初赛共有四道题目,每道题都具有一定的难度级别和特定的要求。以下是各题目的详细介绍: 1. **字母排序** (难度系数:★☆☆☆☆) 题目要求参赛者编写一个程序,输入任意10个英文字母,包括大小写,然后按字母表顺序进行排序,小写字母必须位于大写字母之后。参考答案给出了使用C语言编写的代码,采用冒泡排序算法,通过逐个比较字符并交换位置实现排序。 ```c #include<stdio.h> void main() { char temp, str[10]; scanf("%s", str); for (int i = 0; i < 9; i++) { for (int j = i + 1; j < 10; j++) { if (str[i] > str[j]) { temp = str[i]; str[i] = str[j]; str[j] = temp; } } } printf("%s\n", str); } ``` 2. **报数序列** (难度系数:★★☆☆☆) 在这个题目中,参赛者需要解决的是一个动态选择问题。n个人围成一圈,从编号1的人开始,每过一个数到n的人就淘汰一位,直至剩下最后两位。问题是要确定初始位置,以便在游戏过程中成为最后两个幸存者。参考答案展示了如何使用数组来跟踪剩余的人及其位置,并输出最终的幸存者位置。 ```c #include<stdio.h> void main() { int size, i = 1, a[100] = {0}; scanf("%d", &size); for (int n = 0; n < size; n++) { a[n] = n + 1; } int x = 0; while (n >= 1) { if (a[i] != 0) { if (x % 2 == 0) { if (n == 2) printf("\n"); printf("%d", a[i]); x++; a[i] = 0; } else { i++; if (i == size) i = 1; } n--; } } printf("\n%d", i); } ``` 这两道题目考察了基础的编程技巧,如字符处理、字符串排序以及循环和条件判断,同时也涉及到了算法的策略思考,尤其是报数序列问题中的动态选择过程。参加比赛的学生需要具备扎实的数据结构和逻辑思维能力,同时对输入输出格式的处理也要到位,以确保程序的正确运行。