第二届新生C语言竞赛解题报告

合集下载

c语言第二次实验报告

c语言第二次实验报告

c语言第二次实验报告摘要:本次实验主要是关于C语言的指针和数组的实验。

通过这次实验,我对C语言的指针和数组有了更深入的理解和应用能力。

一、实验要求:1.编写一个程序,实现对10个整数的输入、输出、求和、求平均数等操作。

2.编写一个程序,实现对10个学生的成绩进行排序并输出。

二、实验过程及结果:1.程序一:对10个整数进行输入、输出、求和、求平均数等操作。

步骤:(1)定义整型数组a[10],用for循环对其进行输入。

(2)定义sum变量并用for循环对数组元素进行求和运算。

(3)定义double类型的avg变量,计算数组元素的平均数。

(4)输出数组元素和平均数。

结果:输入10个整数:1 2 3 4 5 6 7 8 9 1010个数字的和为:5510个数字的平均数为:5.502.程序二:对10名学生的成绩进行排序并输出。

步骤:(1)定义数组grade[10],用for循环进行输入。

(2)用冒泡排序法进行排序。

(3)用for循环进行打印输出操作。

结果:输入10名学生的成绩:99 60 88 72 65 92 78 84 70 95排序后的成绩为:60 65 70 72 78 84 88 92 95 99三、实验总结:通过本次实验,我深刻认识到指针和数组对于C语言程序设计的重要性。

指针和数组是C语言中非常重要的概念,其掌握程度直接影响着程序的设计和效率。

在实验过程中,我充分体会到了C语言指针和数组的使用方法,并加深了其中的应用技巧。

在以后的编程过程中,我会更加熟练的使用指针和数组,努力提高自己的编程能力,为今后的学习和工作打下坚实的基础。

c语言实验报告(附答案版)

c语言实验报告(附答案版)
二、实验目的
1、熟练掌握while,do—while,for语句实现循环的方法,包括如何正确地设定循环条件,如何控制循环的次数。
2、掌握break语句与continue语句的使用方法。
3、熟悉循环的嵌套以及从循环体内退出循环的处理。
4、理解什么是循环程序结构。
三、实验指导
为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。
实验1简单判定性问题求解
一、实验学时
完成本实验需4学时。
二、实验目的
1、阅读程序题
(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;
(2)掌握不同的类型数据之间赋值的规律;
(3)掌握数据在内存中的存储方式;
(4)学会输入、输出函数的基本格式和使用方法;
(5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。
1)解题分析:解决问题的关键算法为求圆的面积并按要求输出。循环求圆的面积area,若area<40,则用continue语句提前结束本次循环并开始新一轮循环,若area>90,则用break语句跳出循环。
2)算法流程图如图2-1:
3)综合分析
需要从循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下的语句而立即从头开始新的一轮循环,这时就要用到break和continue语句。
(1)将一个百分制成绩转换成等级制成绩,百分制与等级制的对应关系如下表:
百分制
90-100
80-89
70-79
60-69
<60
等级制





具体要求如下:
1)用switch语句实现该功能;

c语言综合实验报告

c语言综合实验报告

c语言综合实验报告《C语言综合实验报告》一、实验目的本次实验旨在通过综合性的C语言编程实践,加深学生对C语言程序设计的理解和掌握,提高学生的编程能力和解决问题的能力。

二、实验内容1. 编写一个简单的C语言程序,实现对用户输入的两个整数进行加法运算并输出结果。

2. 设计一个C语言程序,实现对用户输入的字符串进行逆序输出。

3. 编写一个C语言程序,实现对用户输入的一组整数进行排序并输出排序后的结果。

4. 设计一个C语言程序,实现对用户输入的一组学生成绩进行统计,包括平均分、最高分、最低分等。

三、实验过程1. 首先,对于加法运算的程序,我们使用scanf函数获取用户输入的两个整数,然后利用printf函数输出它们的和。

2. 对于字符串逆序输出的程序,我们使用gets函数获取用户输入的字符串,然后使用循环和数组实现逆序输出。

3. 对于排序程序,我们使用冒泡排序算法对用户输入的整数进行排序,并使用printf函数输出排序后的结果。

4. 对于学生成绩统计程序,我们使用循环获取用户输入的学生成绩,并计算平均分、最高分、最低分等统计信息,最后使用printf函数输出结果。

四、实验结果经过以上步骤,我们成功编写了四个C语言程序,分别实现了加法运算、字符串逆序输出、整数排序和学生成绩统计等功能。

这些程序在实际运行中均能正常工作,并得到了预期的结果。

五、实验总结通过本次实验,我们深入理解了C语言的基本语法和编程思想,掌握了常见的编程技巧和算法,并提高了自己的编程能力和解决问题的能力。

希望在今后的学习和工作中能够继续努力,不断提升自己的编程水平,为实现更多的创新和突破打下坚实的基础。

第二届浙江师范大学C语言程序设计竞赛解题报告

第二届浙江师范大学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语言上机真题答题要点

【上机题命题及答题要点】1、近年来江苏省高校上机题目难度有所下降。

本轮上机命题的难度系数及全国计算机等级考试二级C语言接近。

2、改错题通常有3~4个错误。

错误分为两大类,一类是语法出错,这类错误比较查错和容易修改,即在编译时报的错误。

另一类是结果出错,即程序的算法出错,这类错误需认真审题。

3、编程题必须掌握C语言的文件,应熟悉文件指针的定义,文件的打开及文件的输入输出。

编程题的固定框架。

必须记忆。

以C01的编程为例。

#include <stdlib.h> /*库函数exit(0)需要*/#include <stdio.h> /*定义文件指针时需要的头文件*/…………..{}void main(){ FILE *fp;所有数据类型的说明和定义if((fp=fopen("t:\\myf2.out","w"))==NULL){ printf("\nCan't open the file!"); exit (0);}函数调用(具体问题具体分析)结果输出printf("\nMy number is:120992340\n");fprintf(fp,"\nMy number is:1292340\n");fclose(fp);}4、必须熟悉常用算法。

5、江苏省高校计算机二级C语言上机编程题常考问题:字符串相关问题、素数相关问题、回文数相关问题、矩阵(二维数组)相关问题、特殊数问题(如,合数、真因子或质因子之和、水仙花数、亲密数、完数、数制转换、哥德巴赫猜想等)。

6、掌握文件输出操作标准形式。

【2013年3月江苏省等考上机真题解析】江苏省高等学校非计算机专业学生(C01)计算机基础知识和应用能力等级考试上机试卷二级C语言(试卷代号C01)(本试卷完成时间70分钟)一、改错题(16分)【程序功能】判断一个N×N方阵(N为奇数)是否为魔方阵。

第二届国信蓝点 c语言本科 附部分答案

第二届国信蓝点 c语言本科 附部分答案

第二届国信蓝点 c语言本科附部分答案2011-04-28 08:342011模拟c语言本科注意:本套模拟题主要模拟命题形式与考核范围。

真实竞赛题的数量、难度可能与此套模拟题有差异。

说明:本试卷包含两种题型:“代码填空”与“程序设计”。

填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。

所填写的代码不多于一条语句(即不能出现分号)。

编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。

注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。

选手的程序必须是通用的,不能只对试卷中给定的数据有效。

1.代码填空(满分2分)下列代码,把一个2位整数交换十位与个位的位置。

请填写缺失的代码。

例如:当x=95时,返回59。

int switch_num(int x){int a = x / 10;int b = x % 10;return ____b*10+a______________;}2.代码填空(满分3分)下列代码把一个二进制的串转换为整数。

请填写缺少的语句;char* p = "1010110001100";int n = 0;for(int i=0;i<strlen(p); i++){n = __n*2+(p[i]-'0')________;}printf("%d\n", n);3.代码填空(满分3分)假设a,b,c是3个互不相等的整数。

下列代码取出它们中居中的数值,记录在m中。

其中的swap()函数可以交换两个变量的值。

请完善代码。

if(a>b) swap(&a, &b); // a<bif(b>c) swap(&b, &c); // b<cif(a>b) swap(&a, &b);______________________;int m = b;4.代码填空(满分5分)计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。

计算机二级C语言编写程序题及答案解析精选[最新].docx

计算机二级C语言编写程序题及答案解析精选[最新].docx

2011年计算机二级C语言编写程序题及答案解析精选【4. 1】已知银行幣存胳取存款不同期限的刀息利率分别为:0. 315%期限一年0.330%期限二年月息利率=0. 345%期限三年0. 375%期限五年0. 420%期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。

【4・2】输入年份year和月month,求该月有多少天。

判断是否为闰年,可用如下C语言表达式:year%4==0 && ycarO! =0 | year@0==0<>若表达式成立(即表达式值为1),则year 为闰年;否则,表达式不成立(即值为0), year为平年。

【4.3】编写一个简单计算器程序,输入格式为:datal op data20其中data】和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、机/.【4.4】输入n值,输出如图所示矩形。

******图4.1 n=6时的矩形【4・5】输入门值,输出如图所示平行四边形。

**** ******************** ***图4. 2 n=6时的平行四边形[4.6]输入n值,输出如图所示高为n的等腰三角形。

******** *** 图4. 3 n=6时的等腰三角形[4. 7]输入n值,输出如图所示高为n的等腰三角形。

* ** ** ** ** ** ** * ** * ** * ** * ** * ** * *[4.8]输入n 值,输出如图所示高和上底均为n 的等腰梯形。

******* ******** ********* * *** ****** 图4. 5沪5时的等腰梯形* * * * * * *********图4・6 n 二5时的空心等腰梯形 [4.10]输入n 值,输出如图所示边长为n 的空心正六边型。

***** * * * * * * *图4. 7 n=5时的空心正六辺型 [4.11]输入n 值,输岀如图所示图形。

C语言兴趣小组练习题解题报告

C语言兴趣小组练习题解题报告

C语言兴趣小组练习题解题报告附录这里是我个人的一些看法,希望能有所作用。

需要说明的是解题报告上有很多源代码写的不好(题目自带的,我写的可以提供电子版,不通过书面给出了),具体自己注意斟酌。

第一、二两道题看解题报告就可以了,算法没有什么可以改进的了,只是程序的优秀性了。

第三题的程序很简单,注意后面在计算平均分的时候如果要保留小数位数就不能直接int/int了。

感觉解题报告的程序有点烦琐,有兴趣的可以看看我写的代码。

第四题的思路就像解题报告上的,不过推荐用while循环语句搞定(简单)。

第五题参照解题报告。

第六题就是三个for循环语句,注意判断条件。

第七题解题报告提供的程序包含了大家常用的两种方法,一是从31到99去是平方数,另一个是对前两位和后两位进行循环选择。

注意使用sqrt要包含math.h这个头文件。

第八至第十一我没有细看,不给出建议和程序了。

第十二题是很简单的一个题目,注意每一位数是怎么抠出来的就行了。

第十三题就是不停的试a的值就可以了,条件很好判断。

第十四题解题报告给出的思路很好,推荐……。

第十五题思路如解题报告。

第十六大题没有什么特别的地方,注意控制语句的使用就可以了,需要注意的是应该养成好的编程风格,行用j控制,列用i控制。

第十七题简单,本来准备要求格式的,注意控制输入输出的参数(%d,%2d,%-2d……)。

第十八题的解法是挨个字符读入,弄一个计数器,读到‘(’的时候加一,‘)’的时候减一,中间只要计数器出现负数马上跳出,否则到读完后根据计数器的正负情况输出结果。

第十九题只有穷举所有可能的情况,然后判断是否符合条件。

源代码没写 ,最终结果是E D A C B。

第二十题可以通过很笨的方法实现,比较好的方法是不停的取余。

课本上有介绍,也可以看看我的代码。

需要补充的是希望大家养成一个好的编程风格,具体可以参照课本(虽然我觉得不是非常好)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二届浙江师范大学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之间。

参考代码:#include<stdio.h>int main(){int m,n;scanf("%d:%d",&m,&n);if (m>=0&&m<24&&n>=0&&n<60) printf("Y es");else printf("No");return 0;}B:TouchTime Limit: 1000MS Memory Limit: 32768KTotal Submissions: 133 Accepted: 35Description现有面积无限大的一堵墙,墙上有根一端固定且无限长的杆,初始状态是竖直向上的。

另外,在墙上有n个钉子。

为研究方便,我们以杆所在的方向为y轴,建立直角坐标系,如图:现在,杆以下端(固定端)为中心,向右旋转,请问碰到的第一个钉子编号是多少?针对上图:即此时,墙上的杆固定端位于(0,4),且此时墙上有3个钉子,则碰到的第一个钉子编号是2.Input第一行有两个数y0,n,其中y0表示杆固定端位于(0,y0),n表示有墙上有n个钉子。

接下来有n行,每行有两个数xi,yi(1<=i<=n),表示第i个钉子的坐标为(xi,yi).其中输入各数均是正整数,且不超过10000注意:钉子的编号不一定是按x坐标递增来编号的(如样例2)Output输出碰到的第一个钉子编号(输入数据,确保答案只有一个)Sample Input4 34 47 710 513 34 410 57 72 14 4Sample Output221Hint样例1已在题目中描述过样例2示意图样例3示意图思路:设杆端点坐标为(0,Y),碰到的第一个钉子编号是i,则由该两个点组成的直线的斜率必定是最大的。

即Ki>=Kj(对任何的j!=i)在比较两个斜率大小时,可以直接用y/x的形式,也可以转化为乘法判断,以避免浮点运算。

参考代码:#include<string.h>#include<stdio.h>int main(){int n;double m,x[10001],y[10001];scanf("%lf%d",&m,&n);if(m<=0 || m>10000) while(1);if(n<=0 || n>10000) while(1);double maxK;int id;for(int i=0; i<n; i++){scanf("%lf%lf",&x[i],&y[i]);if(x[i]<=0 || x[i]>10000) while(1);if(y[i]<=0 || y[i]>10000) while(1);y[i]-=m;double k=y[i]/x[i];if(i==0) maxK=k, id=i;else if(maxK<k){maxK=k;id=i;}}for(int i=n-1; i>=0; i--){ //看看ID是不是唯一if(maxK==(y[i]/x[i])) id=i;}printf("%d\n",id+1);}C:日期Time Limit: 1000MS Memory Limit: 32768KTotal Submissions: 12 Accepted: 1DescriptionYNingC同学在看日历的时候想到一个问题。

问题很简单,今天是12月4日,今天又是星期天(万恶啊,为什么比赛都是安排在星期天啊~),不过好吧,那么纵观历史长河12月4日是星期天的概率是多少的?假如2012不是世界末日,地球的寿命是无限大等等……Input数据只有一行,有三个数据,前两个是整数,M, D, 表示M月D日,第三个数据是一串字符,为”Mon, Tue, Wed, Thu, Fri, Sat, Sun”, 分别表示周一至周日。

Output每组数据输出一行,输出一个概率保留4位小数,格式见样例。

Sample Input12 4 SunSample Output14.5000%Hint用printf("%%\n");输出"%"。

思路:这题的思路主要就是找循环节,400年为一个循环,所以计算概率的时候,只要找到相应的分子天数与分母的天数就行。

做这道题的前提可以参考另外道计算天数的题,里面有闰年判断方法。

当然本题作为难题,主要因为用计算机程序寻找数字间的规律对新手来说比较难,但这个却是开动思维,探索发现的好题。

参考代码:#include<cstdio>#include<cstring>#include<iostream>using namespace std;int sum[15][40][10];int mo[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int y,m,d,w,T;char s[20];bool check(){if(m!=2) return true;if(y%4!=0) return true;if(y%100!=0) return false;if(y%400==0) return false;return true;}void add(){w=(w+1)%7;d++;if((d>mo[m] && check())||d-mo[m]>=2){m++;d=1;if(m==13){m=1;y++;}}}void init(){for(int i=1;i<=12;i++){for(int j=1;j<=31;j++){for(int k=0;k<=7;k++){sum[i][j][k]=0;}}}y=2011,m=10,d=3,w=0;for(int i=0;i<146097;i++){sum[m][d][w]++;sum[m][d][7]++;add();}}void trans(){if(s[0]=='M') w=0;else if(s[0]=='T'){if(s[1]=='u') w=1;else w=3;}else if(s[0]=='W') w=2;else if(s[0]=='F') w=4;else if(s[0]=='S'){if(s[1]=='a')w=5;else w=6;}}int main(){init();scanf("%d%d%s",&m,&d,&s);trans();printf("%0.4lf%%\n",sum[m][d][w]*100.0/sum[m][d][7]);return 0;}D:比大小Time Limit: 1000MS Memory Limit: 32768KTotal Submissions: 162 Accepted: 103 Description给出三个正整数a,b,c,请判断a2+b2与c2的大小关系Input每行有三个正整数a,b,c(不超过10000)Output如果满足a2+b2< c2,则输出<;如果满足a2+b2= c2,则输出=;如果满足a2+b2>c2,则输出> 。

Sample Input3 4 51 1 25 4 3Sample Output=<>思路:这题应该算最简单的题了,输入三个数字a,b,c,然后判断a*a+b*b与c*c的大小就行。

参考代码:#include<stdio.h>int main(){int a,b,c;scanf("%d %d %d",&a,&b,&c);if(a*a+b*b<c*c)printf("<");if(a*a+b*b==c*c)printf("=");if(a*a+b*b>c*c)printf(">");return 0;}E:不等式Time Limit: 1000MS Memory Limit: 32768KTotal Submissions: 148 Accepted: 21DescriptionFarmer John 喜欢不等式,但是他数学很差,现在他需要你的帮助,帮他判断能否成功找到n个正整数,a1, a2, ..., a n,使得满足下列不等式:∙a12 + a22 + ... + a n2 ≥ x∙a1 + a2 + ... + a n ≤ yInput输入包含三个整数n, x and y (1 ≤ n ≤ 104, 1 ≤ x ≤ 109, 1 ≤ y ≤ 104). Output如果能够找到,输出”Yes”,否则输出”No”。

相关文档
最新文档