第一届浙江师范大学C语言程序设计竞赛解题报告
2013-2014第二学年秋浙江师范大学c语言程序设计试卷 - (附参考答案)

浙江师范大学《C语言程序设计》考试卷(2013——2014学年第 2 学期)考试形式笔试(闭卷)使用学生全校13级理工科(非行知)专业考试时间120分钟出卷时间2014 年6月9日说明:考生应将全部答案都写在答题纸上,否则作无效处理。
一、程序阅读与填空(35小题,每小题2分,共70分)1.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】素数判断。
运行示例:1111 is a prime number【程序】#include<stdio.h>(1)void main(){int m,i,k;(2);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0) (3)if( (4))printf("%d is a prime number\n", m);elseprintf("%d is not a prime number\n", m);}【供选择的答案】(1) A.#include <string.h> B.#include <math.h>C.#include <stdio.h> D.#include <ctype.h>(2) A、scanf("%d", &m) B、scanf("%c", &m)C、scanf("%f", &m)D、scanf("%s", &m)(3) A、continue; B、break;C、;D、k = i;(4) A、i >= k +1 B、i >= kC、i <= k +1D、i <= k2.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】输入一个正整数n,找出其位数中最小的数字.。
第二届浙江师范大学C语言程序设计竞赛解题报告

第二届浙江师范大学C语言程序设计竞赛解题报告(罗方炜,lfw2565295@ ,浙师大10计软)比赛概述首先是本届比赛的题目:本次比赛总共十道题,由应宁宸,陈余康,张超,陈新弛,钟浙云组成的编题组负责出题,由罗方炜,詹皇彬组成的验题组负责验题和整体难易程度的把握,同时詹皇彬还负责了服务器的运行维护。
本次比赛的提交统计:其中A,D,G为简单题,B,E,F,H,J为中等题,C,I为难题,比赛中的提交情况也符合这个题目难易度分类,A,D,G做出的人很多,获奖的人中,这三题基本要保证过掉。
本次比赛前十名的情况:其中,名字前打”*”的同学是友情参赛人员,他们是ACM集训队大二的女将,为明年的省赛练兵。
剩下的5名同学是本次比赛一等奖的获得者,经过5个小时的角逐,潘旭脱颖而出,解得8道,夺得“新生杯”,曹俆康,任超群,陈政伊,陶柄丞解出6道以上,获得一等奖,恭喜他们。
具体的获奖情况,可以参见/article.asp?articleid=4212。
题目讲解A:YQ的手表Time Limit: 1000MS Memory Limit: 32768KTotal Submissions: 249 Accepted: 90Description小YQ上次很快完成了爸爸给她得任务,爸爸奖励了她一个电子手表。
小YQ非常喜欢她的电子表,没事就盯着她的电子表看。
有天她看见电子表上显示“12:21”,小YQ觉得很漂亮。
现在给你一个时间,格式是xx:xx,请你判断是否合法(也就是符合电子表显示的数字,比如00:10合法,02:30合法,23:23合法,23:66不合法,24:00不合法)。
Input输入数据一行,为一个字符串,用空格隔开。
表示时间时间,格式为XX:XX ,Output合法输出”Yes”不合法输出”No”Sample Input00:1002:3023:6624:00Sample OutputYesYesNoNo思路:本题虽然是字符串形式输入一个“时间”,但格式比较固定,所以可以用scanf(“%d:%d”,&a,&b)形式,当成是两个整个的输入,这样判断就很简单了,判断条件就是时针的值在0~23之间,分针的值在0~59之间。
第一届浙江师范大学C语言程序设计竞赛解题报告

第一届浙江师范大学C语言程序设计竞赛解题报告(罗方炜,lfw2565295@126。
com,浙师大10计软)比赛概述首先是本届比赛的题目:本次比赛的提交统计:其中B,F,H相对简单,C,E,G为中等题,A,D为稍难题本次比赛前十名的情况:有两名同学成功解出6道,还有6名同学解出5道,4道的还有些,同时恭喜前5名获得本次比赛的一等奖题目讲解A:欢乐五子棋Time Limit:1000MS Memory Limit:65536KTotal Submissions:8 Accepted: 3Description五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一.发展于日本,流行于欧美。
容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性.传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为19×19,棋子放置于棋盘线交叉点上。
两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。
Alice和Bob的五子棋游戏和传统的五子棋有一些不一样就是他们使用的棋盘被更改成为9×9。
由于Alice是女生,所以每局比赛都由Alice执黑先走.现在给定一个9×9的棋盘,问下一步走的那个人是否能获胜,你能编程告诉我吗?Input数据的第一行是一个整数N(N<50),表示一共有N组数据;接着是N组测试测试数据;每组测试数据包括9行9列的字符;这9行测试数据中的字符只包括‘b’、‘w’、‘。
’,分别代表黑子,白子和空的;输入数据都是合法数据,就是说(黑子数-白子数)=0或1,以及任何一方到当前步为止都没有取得胜利;输入数据之间用空行隔开(不需要考虑)。
Output如果下一步是Alice走并且能取得胜利,输出“Case x:Alice win!",下一步是Bob 走并且能取得胜利,输出“Case x:Bob win!”,其余情况输出“Case x:Tie”,x表示第x组数据。
浙江大学C语言上机练习参考答案汇总

《C语言程序开发》实验报告和参考答案

《C语言程序开发》实验报告和参考答案1实实验报告课程名称:C语言程序开发学生姓名:学生学号:专业班级:指导教师:实验日期:2目录实验一循环结构程序设计(一)求1+2+3+.......+100,1100nn(二)输出100~200之间的不能被3整除的数。
实验二数组及其应用(一)有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
(二)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
实验三函数及其应用(一)有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。
问第4个学生岁数,他说比第3个学生大2岁。
问第3个学生,又说比第2个学生大2岁。
问第2个学生,说比第1个学生大2岁。
最后问第1个学生,他说是10岁。
请问第5个学生多大。
(二)用选择法对数组中10个整数按由小到大排序,一维数组名作函数参数。
实验四指针及其应用(一)将若干字符串按字母顺序(由小到大)输出。
(二)有a个学生,每个学生有b门课程的成绩。
要求在用户输入学生序号以后,能输出该学生的全部成绩。
用指针函数来实现。
3实验一循环结构程序设计实验题目:(一)求1+2+3+.......+100,1100nn(二)输出100~200之间的不能被3整除的数。
实验目的1.掌握循环语句的执行过程及用法2.初步掌握循环程序设计的基本技巧3.掌握用while语句,do-while语句和for语句实现循环的方法4.掌握多重循环的使用(一)实验步骤1.题目分析2.源程序代码3.运行结果(二)实验步骤:1.题目分析源程序代码3.运行结果4实验二数组及其应用实验题目:(一)有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
(二)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
实验目的1.掌握一维数组的定义及其元素的引用方法2.掌握利用一维数组实现一些常用算法的基本技巧3.掌握二维数组的定义及其应用4.掌握字符数组和字符串函数的使用5.掌握有关二维数组的基本编程技巧(一)实验步骤:1.题目分析2.源程序代码:3.运行结果(二)实验步骤:1.题目分析2.源程序代码3.运行结果5实验三函数及其应用实验题目:(一)有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。
C语言程序设计习题集答案

《高级语言程序设计》习题集(答案可能有错,仅供参考!)淮南师范学院计算机与信息工程系2013年5月目录选择及填空题 (1)程序输出选择题 (13)程序完善题 (20)程序阅读题 (30)编程题 (51)选择及填空题1.C语言程序编译过程中产生的文件有( B )。
A. 索引文件和文本文件两种B. 目标文件和可执行文件C. 二进制文件一种D. ASCII码文件和二进制文件两种2.C语言源程序的基本单位是( A )。
A. 函数B. 标识符C. 表达式D. 语句3.C程序的运行需要经过编译和连接两步进行。
4.C语言的编译单位是文件。
5.C语言源程序的基本单位是( A )。
A. 函数B. 标识符C. 表达式D. 语句6.以下叙述正确的是( C )。
A) C语言比其他语言高级B) C语言可以不用编译就能被计算机识别执行C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D) C语言出现的最晚、具有其他语言的一切优点7.在一个C语言程序中( B )。
A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置8.C++语言中工程文件的扩展名是( B )。
A. .cppB. .prjC. .cD. .obj9.C文件的扩展名是( C )。
(A).cpp (B).prj (C).c (D).txt------------------------------------------------------------------------------------------------------------------------- 1.符合结构化原则的三种基本控制结构是:选择结构、循环结构和顺序结构。
2.C语言中用于结构化程序设计的三种基本结构是()。
A) 顺序结构、选择结构、循环结构 B) if、switch、breakC) for、while、do-while D) if、for、continue------------------------------------------------------------------------------------------------------------------------- 1.若有以下定义,则能使值为3的表达式是( D )。
c程序设计实验参考答案

c程序设计实验参考答案在计算机科学领域中,C程序设计是一门重要的课程,通过实验来加深对C语言的理解和应用,提高编程技巧和问题解决能力。
本文将提供一些C程序设计实验的参考答案,帮助学生更好地完成实验任务。
1. 实验一:基础语法练习实验目的:熟悉C语言的基础语法,掌握变量定义、运算符使用和基本IO操作等。
```c#include <stdio.h>int main() {int a = 5, b = 3;int sum, product;sum = a + b;product = a * b;printf("The sum of a and b is %d\n", sum);printf("The product of a and b is %d\n", product);return 0;}```2. 实验二:条件语句和循环结构实验目的:学习和掌握if-else语句、switch-case语句以及while和for循环的基本用法。
```c#include <stdio.h>int main() {int score;printf("Please enter your score: ");scanf("%d", &score);if (score >= 90) {printf("Excellent!\n");} else if (score >= 80) {printf("Good job!\n");} else if (score >= 70) {printf("Keep it up!\n");} else {printf("You need to work harder!\n");}int i;for (i = 1; i <= 10; i++) { if (i % 2 == 0) {printf("%d ", i);}}printf("\n");int j = 1;while (j <= 10) {if (j % 2 != 0) {printf("%d ", j);}j++;}printf("\n");return 0;}```3. 实验三:数组和字符串实验目的:熟悉数组和字符串的定义、初始化和基本操作,学习使用数组和字符串解决问题。
《C语言程序设计》试题库及答案

C语言程序设计习题集及答案电子信息工程学院内容简介本习题集是为根据嘉应学院电子信息工程学院《C语言程序设计》课程教学大纲筛选题目整理而成的。
本习题集共分10章,提供了361道选择题,85道填空题,42道编程题,题集覆盖了《C语言程序设计》的全部内容,满足嘉应学院电子信息工程学院《C语言程序设计》考试大纲的要求。
寄语亲爱的同学们:很高兴你们学习计算机的语言—C语言,她将带你进入一个全新的计算机的世界。
我是你们的老师,但我更希望是你们的朋友,为你在学习C语言的道路上提供帮助。
同学们,“攻城不怕坚,攻书莫畏难。
科学有险阻,苦战能过关。
”,学习是辛苦的,但也充满了挑战和乐趣。
我希望你们在学习C语言时,带着希望出发,体会一路的艰辛,最后满载收获而回。
朋友们,学习向来没有什么捷径可寻。
“多看、多模仿、多操作”是我能给你们的唯一建议。
祝你们学业有成。
杨久红目录第一部分习题第1章C语言概述 (1)1.1选择题 (1)1.2填空题 (2)1.3编程题 (2)第2章数据的存储与运算 (3)2.1选择题 (3)2.2填空题 (6)2.3编程题 (7)第3章最简单的程序设计-顺序程序设计 (8)3.1选择题 (8)3.2填空题 (13)3.3编程题 (14)第4章选择结构程序设计 (15)4.1选择题 (15)4.2填空题 (19)4.3编程题 (20)第5章循环结构程序设计 (21)5.1选择题 (21)5.2填空题 (29)5.3编程题 (30)第6章利用数组处理批量数据 (32)6.1选择题 (32)6.2填空题 (37)6.3编程题 (38)第7章用函数实现模块化程序设计 (40)7.1选择题 (40)7.2填空题 (52)7.3编程题 (57)第8章善于使用指针 (58)8.1选择题 (58)8.2填空题 (70)8.3编程题 (71)第9章结构体 (72)9.1选择题 (72)9.2填空题 (73)9.3编程题 (74)第10章利用文件保存数据 (75)10.1选择题 (75)10.2填空题 (77)10.3编程题 (79)第二部分参考答案第1章C语言概述 (81)1.1选择题 (81)1.2填空题 (81)1.3编程题 (81)第2章数据的存储与运算 (81)2.1选择题 (81)2.2填空题 (82)2.3编程题 (82)第3章最简单的程序设计-顺序程序设计 (83)3.1选择题 (83)3.2填空题 (83)3.3编程题 (83)第4章选择结构程序设计 (84)4.1选择题 (84)4.2填空题 (85)4.3编程题 (85)第5章循环结构程序设计 (87)5.1选择题 (88)5.2填空题 (88)5.3编程题 (88)第6章利用数组处理批量数据 (95)6.1选择题 (95)6.2填空题 (95)6.3编程题 (95)第7章用函数实现模块化程序设计 (100)7.1选择题 (100)7.2填空题 (100)7.3编程题 (100)第8章善于使用指针 (104)8.1选择题 (104)8.2填空题 (104)8.3编程题 (104)第9章结构体 (106)9.1选择题 (106)9.2填空题 (106)9.3编程题 (106)第10章利用文件保存数据 (107)10.1选择题 (107)10.2填空题 (107)10.3编程题 (107)第一部分习题第1章C语言概述1.1选择题1.以下说法中正确的是( )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目讲解
A:欢乐五子棋
Time Limit: 1000MS Memory Limit: 8 Accepted: 3 65536K Total Submissions:
Description
五子棋是一种两人对弈的纯策略型棋类游戏, 是起源于中国古代的传统黑白棋种 之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入 胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。 传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为 19× 19,棋子放置于 棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的 5 个或 5 个以上同色棋子连成不间断的一排者为胜。 Alice 和 Bob 的五子棋游戏和传统的五子棋有一些不一样就是他们使用的棋盘被 更改成为 9× 9。由于 Alice 是女生,所以每局比赛都由 Alice 执黑先走。 现在给定一个 9× 9 的棋盘,问下一步走的那个人是否能获胜,你能编程告诉我 吗?
右移 >> 如:探测 a 的第 i 位是否为 1,可用 if (((1<<i)&a)>0) {};计算 a 与 b 的运算结果 赋值给 a,使用 a=a^b; 据说:同时做出 C、D 两题的同学能召唤神龙,好运。
Input
集训队里一共有 N 人(N<=1,000,000),两位队员可能有相同的编号 no(0<=no<=1,000,000,000),他们所交的奖牌就以上交队员的编号作为区分,共 有 2*N-1 块奖牌编号作为输入,每个测试文件只有一组数据。
Input
第一行一个整数 case,表示下面有 case 组数据。每组数据两行,第一行一个数 N ( 3 < N < 10005 ),表示有 N 个评分。接下来一行有 N 个实数,表示得分.
Output
每一行对应一组答案即平均得分(保留小数点后 2 位)。
Sample Input
1 5 1.1 1.9 3.1 4.0 5.1
Sample Input
5 13501537
Sample Output
07 思路: 在上一题的基础上,假设 a 和 b 是我们要找的两个数,然后 c=a ^ b,这样,c! =0,所以 c 化成二进制数时,必然某位上是 1。 那么任意取 c 为 1 的那位数,与其他所有的数去 & 一下,就可以分成两类,同 时,a,b 保证分别在这两类中,对于每一类,就跟上一题一样的做法了,这样的 复杂度为 O(n),此题数据较多,所以一般的 O(nlogn)方法可能会超时 参考代码: #include<stdio.h> #include<string.h> int a[2000005]; int p[50]; int main(){ int i,n; p[0]=0; p[1]=1; for(i=2; i<32; i++){ p[i]=p[i-1]*2; } while(scanf("%d",&n) != EOF ){ int x=0; n=n*2-2; for(i=0; i<n; i++){ scanf("%d",&a[i]); x=x^a[i]; } int k; for(i=1; i<32; i++){ if((p[i]&x)==p[i]) { k=i; break; } } int r1=0,r2=0; for(i=0; i<n; i++){ if((p[k]&a[i])==p[k]) r1=r1^a[i]; else r2=r2^a[i]; } if(r1>ile(n--){ scanf("%d",&d); c^=d; } printf("%d\n",c); }
D:逃税的惩罚 II
Time Limit: 1000MS Memory Limit: 22 Accepted: 1 65536K Total Submissions:
} } }if(tie) printf("Tie\n"); } }
B:简单求平均
Time Limit: 1000MS Memory Limit: 615 Accepted: 95 65536K Total Submissions:
Description
我们都知道求平均数吧,即 ( A1+A2+……+An ) / n。这显然是很简单的。不过 一般一些比赛中各个评分要去掉最高分和最低分,然后对剩下的求平均。我的问 题也是如此,你要对输入的数去掉最高分和最低分后在求平均,并输出。
为止都没有取得胜利; 输入数据之间用空行隔开(不需要考虑)。
Output
如果下一步是 Alice 走并且能取得胜利,输出“Case x:Alice win!”,下一步是 Bob 走并且能取得胜利,输出“Case x:Bob win!”,其余情况输出“Case x:Tie”,x 表示 第 x 组数据。
Input
集训队里一共有 N 人(N<=1,000,000),任意两位队员可能有相同的编号 no(0<=no<=1,000,000,000),他们所交的奖牌就以上交队员的编号作为区分,共 有 2*N-2 块奖牌编号作为输入,每个测试文件只有一组数据。
Output
两个漏缴保护费的队员的编号, 从小到大输出,数据保证两位漏缴队员没有相同 编号。
Output
漏缴保护费的队员的编号。
Sample Input
5 135015355
Sample Output
0
Hint
两个编号为 5 的队员都交了两块奖牌,而编号为 0 的队员只交了一块。 思路: 题目意思有点拗口,但意思其实很简单,给你 2*n-1 个数,让你找出哪个数只出 现了奇数次,这个利用位运算就很简单了,用异或操作 (^),相同的数异或则为 0,0 异或任何数都是任何数,所以,初始一个 0,然后去异或所有的数,则这个 结果就是答案。 参考代码: #include<stdio.h> int main(){ int n,c,d; scanf("%d",&n);
C:逃税的惩罚 I
Time Limit: 1000MS Memory Limit: 88 Accepted: 15 65536K Total Submissions:
Description
现在是每年集训队收保护费的时间。 每个集训队队员每年这个时候需要交纳两块奖牌给韩 BOSS,其他多余奖牌留给 自己做纪念,但有一个队员只交了一块奖牌,琪琪受命于韩 BOSS,要揪出这一 个队员。 琪琪想起了霍格沃兹战斗分队的队长在第一节学员培训课上就讲述过“百万军中 揪逃税者如探囊取物”的知识,但是琪琪打瞌睡没有认真听。现在,她非常需要 你的帮忙! 【位运算小知识】 与 & 或 | 非 ! 异或 ^ 左移 <<
Sample Output
Case 1:Tie Case 2:Alice win! 思路: 其实本题并不难,类型为模拟题。 读入 9*9 的字符矩阵后,可以先统计下黑子和白字的数量,如题目中描写,黑子
多则该白字下了,数量一样则该黑子下了。 对于下哪步,可以枚举空白部分的各种情况,把相应的棋子放进去,判断下,横 线、竖线或斜线有没有连成 5 颗的情况,有的话,就有胜负,各种情况都没有的 话,就是平局。 参考代码: #include<stdio.h> char g[15][15]; int dx[]={-1,-1,-1,0,1,1,1,0}; int dy[]={-1,0,1,1,1,0,-1,-1}; bool chk(int x,int y,int t){ int i,tx,ty,ct[8]; char p=t?'w':'b'; for(i=0;i<8;i++){ ct[i]=0; tx=x+dx[i], ty=y+dy[i]; while(tx>=0&&tx<9&&ty>=0&&ty<9&&g[tx][ty]==p){ ct[i]++; tx=tx+dx[i], ty=ty+dy[i]; } } for(i=0;i<4;i++) if(ct[i]+ct[i+4]>=4) { printf("%s\n",t?"Bob win!":"Alice win!"); return 1; } return 0; } int main(){ int i,j,r=1,Cas,cb,cw,tie; scanf("%d",&Cas); while(Cas--){ for(i=0;i<9;i++) scanf("%s",g[i]); printf("Case %d:",r++); cb=cw=0; for(i=0;i<9;i++){ for(j=0;j<9;j++){ if(g[i][j]=='b') cb++; if(g[i][j]=='w') cw++; } }tie=1; for(i=0;i<9&&tie;i++){ for(j=0;j<9&&tie;j++){ if(g[i][j]=='.'&&chk(i,j,cb-cw)) { tie=0; break;