第一篇:计算机程序设计比赛试卷
计算机程序设计比赛试卷
(考试时间120分钟,总分100分)
说明:
1、比赛使用语言:C、C++、VB2、题目完成后,存放在D:Test下以题号名单的文件夹当中
班别:姓名:机号:成绩:
1、输入一个摄氏温度,要求输出华氏温度,公式为F=
C代表华氏温度,结果取两位小数。(10分)
2、输入整数a、b、c,由小到大输出。(10分)
3、计算74和68公约数的和。(15分)
4、一电文(由字母和数字组成)字母按以下规则加密:(20分)
A->Za->z
B->Yb->y
C->Xc->x
。。
即第一个字母变成第26个字母,第i个字母编程第(26-i+1)个字母。
而数字变化规则如下:
0->9
1->8
2->7
。。
即第一个数字0变成9,第数字i变成(9-i)
求编写程序将电文加密
5、接上题,求解密程序。(20分)
6、魔方方阵是指方阵的每一行、每一列、对角线之和均相等,例如三阶的魔方方阵为:816
357
492
魔方方阵数字排列规则如下:
(1)、将“1”放在第一行中间的一列。
(2)、从“2”开始直到N×N(N为阶数)止各数按以下规则存放:每一个数存放行比
前一个数的行数减
1、列数加1
(3)、如果目前该数的行数为1,则下一个数的行数为N(最下面行)
(4)、如果目前该数的烈数为N,则下一个数的列数为1
(5)、按以上规则:如果当要存放数的位置已经有数存在、或者要存放的数是在第一行
时,则把要存放的数放在前一个数的下面。
按以上的规则,求5阶的魔方矩阵。(25分)9C32,其中F代表摄氏温度、5
第二篇:计算机程序设计比赛活动总结
计信系“技能接力赛 ——程序找茬” 活动总结
计算机在各行各业中应用都很广泛,基本上每个公司都会用到PPT、WORD等很多应用软件,为了促进计算机与信息工程系学生努力学习关于计算机的各方面知识,让同学们对各种软件有更好的了解我们举办了计算机系列比赛。
总体来说,我们这次以“技能接力赛”为主题的系列活动,各个阶段都十分成功,成功的原因我们总结为以下几点:
1、准备较充分
“凡事预则立,不预则废”在这次活动中得到了充分体现,正是因为有了详实的考虑、周全的计划和充分的准备,这次活动才有了成功开展的前提。如我们提前几个月就和老师商量,并且在活动开始之前我们就有了详细的计划及活动部署。
2、密切配合
多方面的积极协助和努力,是活动得以完成的保证。如在活动中我们需要的用电插座问题就是由学办、文艺部的工作人员帮助安排的。
3、分工具体安排合理
在活动没有开始之前,各部长就已经将劳动任务合理分配,同时也注意到宣传组织及工作时间的协调。事后,同学们普遍反映良好。
4、活动全面深入
从初期活动内容的确定到联系相关部门,一直到宣传组织同学进行分工,充分提高了同学们的思想认识。
当然在成功的背后,我们也认真反省思考了我们的不足。
1、场面有点混乱。活动虽然经过具体分工,详实安排,但在实际过程中由于人数较多,场面有点混乱,个别成员没有完成自己的分工。
2、安排上存在不足。主要体现在活动中个别支部成员不够积极,对分配的任务不能及时保证质量的完成,这与管理和分工上的失误有一定关系。
3、时间有些仓促。这主要是由于教室问题到四月二十七日(星期五)下午才最终解决。
附件
比赛项目:程序找茬
比赛时间:四月二十七日(星期五)下午 比赛地点:图书馆一楼(待定)
参赛对象:全系学生(主要针对我系大
二、大三学生)题目及比赛形式:题目可以有选择题、填空题和程序题构成,或
者只有程序题,可以找一些老师帮忙出题,或者找历年的竞赛题。
评分规则:根据考生完成作品所用时间和作品效果选出优秀作
品!
团总支
计算机与信息工程系
学生会
2012年5月20日
第三篇:计算机程序设计发展史
我对程序设计的一点粗浅看法
——计算机程序设计发展史
【内容提要】
程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计一般是以某种程序设计语言为基石,构造出这种语言下的程序。程序设计的过程一般包括分析、设计、编码、测试、排错等不同阶段。
程序设计语言是人们为了描述计算过程而设计的一种具有语法语义描述的记号。没有程序设计语言支持的计算机无异于一堆废料。从最早的一代设计程序语言——机器语言,到现在的面向于数据库的第四代语言,程序设计语言的发展已经突破了语言的本身,更是一种交互式程序设计环境的发展。在计算机问世至今的半个世纪中,人们一直在为研究出更新更好的程序设计语言而努力着。
【关键词】
程序设计语言程序设计方法 计算机技术 发展
计算机程序设计发展史
一、程序设计语言的发展
(一)“史前”时期
世界上最早的“计算机”是我国的算盘,它被人们沿用至今。在17世纪,Pascal等人发明了一种以传动齿轮为基础的“计算机”,它是以齿轮的转动来控制计算的累加与进位。上个世纪初,英国剑桥大学著名数学家Charles Babbage于1822年与1848年分别设计出了两种差分机,并于1833年制造出了有名的分析机。分析机在原理上与当今社会的计算机非常类似,它靠输入读进穿孔卡片来对输入的数进行算术运算并给出结果。而且分析机可以随意重复运算序列。这些是由Ada Lovelace设计的运算序列可以解决许多问题。实际上,这种运算序列就是程序的雏形,而这种设计思想一直沿用至今。因而Ada Lovelace被称为是世界上第一个程序员(ADA语言就是为纪念她而命名)。1890年Hollerith研制出了一种同样使用穿孔卡片的统计机被用作各种统计工作。此后,Hollerith成立了一个公司,这个公司便是如今的IBM。
本世纪30年代,英国数学家Turing提出了图灵机的概念,它是由一个控制块、一条存储带及一个读写头构成的能执行左移、右移、在存储带中清除或写入符号以及条件转移等操作的机器。这种图灵机的结构虽然较为简单,但是却能完成现代计算机所能完成的一切运算。随后Church发明了一种以逻辑公式中约束变量的代入为主要运算的λ-演算,这种运算已经相当于一种语法与语义都非常简单的程序设计语言,已被广泛应用于程序理论以及程序设计语言理论与实践的研究中。
(二)低级语言时期
1.第一代程序设计语言——机器语言
机器语言是二进制机器代码编成的代码序列,用来控制计算机执行规定的操作。其特点是能直接反映计算机的硬件结构,并且用机器语言编写的程序不须作任何处理即可直接输入计算机执行。由于机器语言与机器是一对一的,不同的机器有不同的指令系统,一种机器编写的程序也无法直接搬到另一种机器上运行。一个问题如果需要在多种机器上求解,那么就必须对同一问题重复编写多个应用程序。
2.第二代程序设计语言——汇编语言
由于机器语言程序的直观性差,且与人们习惯使用的数学表达式及自然语言差距太大,导致机器语言难学、难记,编写出来的程序难以调试、修改、移植和维护,极大限制了计算机的推广作用。在这种情况下,用助记符号来表示机器指令的操作符与操作数(亦称运算符与运算对象),用地址符号或标号代替指令或操作数的地址的汇编语言出现了。机器不能直接识别使用汇编语言编写的程序,还要由汇编语言编译器转换成机器指令才能运行。
由于汇编语言与机器指令之间是一对一的关系,导致即使是编写一个很简单的程序也需要数百条指令。所以在汇编语言的基础上,人们又研制出了只需一条指令便可编译成多条机器指令的宏汇编语言。而后又研制出了用于把多个独立编写的程序块连接组装成一个完整程序的连接程序。但汇编语言大多是针对特定的计算机或计算机系统设计的,所以它对机器的依赖性很强,同时还有很多的机器语言中存在的问题,汇编语言也没有解决。
(三)高级语言阶段
1954年,第一个完全脱离机器硬件的高级语言——FORTRAN语言问世了。高级语言在不同的平台上会被编译成不同的机器语言,使得程序设计语言不再过度的依赖某种特定的机器或者语言环境。1970年,一个标志着结构化程序设计时期开始的语言问世了,它就是Pascal语言。这个标致性的语言拥有严格的结构化形式、丰富且完备的数据类型,运行效率高、查错能力强。同时Pascal语言还是一种自编译语言。这个以法国数学家pascal命名的语言现已成为使用最广泛的基于DOS的语言之一。
80年代初,在程序设计的思想上又发生了一次大的革命。这个时期研制出的语言多为面对对象的程序设计。之后,高级语言的目标则是面对应用的程序设计。它侧重于描述程序“做什么”而不是“如何做”。
程序设计语言的发展是一个不断演变的过程。从最开始的机器语言,到汇编语言,再到各种各样的高级语言,最后到支持面对对象技术的面对对象的语言,甚至未来的面对应用的语言,它的演化过程的根本推动力就是抽象机制的更高要求,以及对程序设计思想的更好的支持。也就是说把机器能够理解的语言提升到能够很好的模拟人类思考问题的形式的过程。
二、程序设计方法的发展
(一)传统的程序设计方法
传统的编程方法主要是基于DOS操作系统下计算机程序的编程方法。用传统的编程方法编制完成特定功能的程序时,必须设计程序的算法,明晰数据的流程。传统编程方法的算法是变化多端的,同一问题可以有最优算法,也可以有一般算法,甚至可能存在劣等算法;它的数据流程是纷繁杂乱的,数据的调用、控制方向等又是交叉变化的,而且这种编程方法一般依赖于操作平台、编译系统等,所以移植性比较差。导致程序的设计也变得困难和繁琐。
(二)可视化编程方法
可视化编程可通过调用控件,并为控制对象设置属性,根据开发者的需要,直接在窗口中进行用户界面的布局设计。该项技术的优点是:编程简单、自动生成程序代码、效率高。因此在当今的编程语言中也被广泛采用。
(三)面向对象的编程方法
为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息而应运而生的面对对象的编程方法达到了软件工程的三个主要目标:重用性、灵活性和扩展性。用这种方法编写出的计算机程序是由单个能够起到子程序作用的单元或对象组合而成的。
面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法。是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而继承性是对具有层次关系的对象类的属性和操作进行共享的一种方式。从传统的程序设计方法,发展到可视化编程序设计方法,进而发展到面向对象的程序设计方法的发展轨迹,是计算机程序设计方法发展的三个重要的阶段。在程序设计实践中,这三种方法不仅严格独立,又相互交叉,彼此紧密联系。但是需要指出的是,在当今社会面向对象的程序设计方法是最大众化的程序设计方法,这是毋庸置疑的。
今天,程序设计方法学的研究已经取得了非常多的成果,不仅是结构程序设计的方法日益完善,且广泛推广。模块程序化,递归程序设计方法和逐步求精程序设计方法等均取得了巨大的成果,成为当今社会程序设计中非常有效的方法。而抽象数据的代数规范和程序的形式推导技术仍在发展中,特别是程序变换技术和自动化方面还不成熟,但也取得了可喜的进展。
结论
用科学的逻辑思维方法去认识事物才能更加清楚的了解过去、现在和未来。程序设计的发展同样遵循科学技术发展的一般规律。以自然辩证法的观点来分析程序设计有助于我们更加深入的认识和探讨程序设计发展的历史、现状和未来的发展趋势。有了自认辩证法这把开启科学认知大门的钥匙,我们将回首过去,把握现在,放眼未来。才能正确的选择程序设计的发展方向,更好的学习和利用程序设计来改变我们的生活。
参考文献
1.《程序设计语言概念》(美)Robert W.Sebesta 编著 中国电力出版社 2006.1 2.《程序设计语言编译原理》 陈火旺编著 国防工业出版社 2000.3 3.《汇编语言程序设计》 刘丽莉 编著 北京大学出版社 2010.11 4.《计算机语言及其应用实例》 童隆正,许远编 电子工业出版社2003.8
5.《计算机语言处理》(日本)安居院猛,中正之 编著 国防工业出版社2003.5 6.《程序设计方法》 教育部师范教育司 编著 高等教育出版社2001.1
7. 《程序设计方法学》 胡正国,吴健,邓正宏 编著国防工业出版社2003.1 8.《数据库发展新技术》 磊哲 编著 电子工业出版社2006.1 9.《智能协作信息技术》 姚莉,张维明 编著 电子工业出版社 2002.4 10.《软件发展与社会进步》 蔡希尧 编著 电子工业出版社2006.2
第四篇:《计算机程序设计》实验报告
《计算机 程序设计》 实验报告
姓名:
学号 :
实验日期:
****年**月**日
实验名称
控制结构与基本算法 一、实验目的要求 1.熟练掌握 if 语句和 switch 语句 2.循环控制结构的使用 二、实验内容 1.实验教材 P86 第四题。
2.实验教材 P87 第八题。
3.实验教材 P108 第一题。
4.实验教材 108 页的第四题。
5.选做题:参考实验教材 P104 第六题,做课件上题目:
科大有 4 位同学中的一位做了好事不留名,表扬信来了之后,校长问这四位是谁做的好事.A 说:不是我.B 说:是 C.C 说:是 D.D 说:他(C)胡说
• 文件名格式:学号-姓名-实验 5.doc
• 序号 1-23:tmf77@mail.ustc.edu.cn • 序号 24-45:yunmeng@mail.ustc.edu.cn • 序号 46-67:cys1024@mail.ustc.edu.cn
三、上机程序(算法设计思想)
四、运行结果
五、调试中的问题及解决方法
第五篇:计算机程序设计期中考试
《计算机程序设计》期中考试试卷答案分析
一、单项选择题(每空2分,共30分)
1.若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为()
A、4B、16C、32D、52
分析:先计算逗号表达式a=4,b=16,c=32;逗号表达式的结果为最后一个逗号后表达式的运算结果,因此为32;再将32赋值给num,因此选C.2.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()
A、必须为字母B、必须为下划线
C、必须为字母或下划线D、可以是字母,数字和下划线中任一种字符
3.下面四个选项中,均是合法转义字符的选项是()
A、''''''n'B、''' 17''“'
C、' 18''f''xab'D、' ' '101''xlf'
分析:转义字符是在一般字符前加,表示对其含义加以改变;主要有三类:
(1)单引号’,由于字符的定界符为单引号,因此要表示普通字符单引号,必须加;斜线,为了和转义字符的区别,因此也需要用转义’’,第1个表示转义,第2个表示普通字符;
(2)一些特殊的控制符,如换行符’n’,制表符’t’等;
(3)八进制,十六进制的转义字符,八进制以 为开始,后面跟八进制数,十六进制以x为开始,后面跟十六进制数
4.下面四个选项中,均是不合法的用户标识符的选项是()
A、AP_0doB、float la0 _A
C、b-a goto intD、_123 temp INT
分析:b-a中间有-不合法,goto和int均使用系统关键字作为标识符不合法.5.若有定义:int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值是()
A、2.500000B、2.7500000C、3.500000D、0.000000
分析:整型数据的%和/运算,其结果只能是整数,因此k%3*(int)(a+b)%2/4的计算结果为0
6.设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是()
A、y=(y*100+0.5)/100.0B、x=y*100+0.5,y=x/100.0
C、y=y*100+0.5/100.0D、y=(y/100+0.5)*100.0
7.已知a、b、c为int类型变量,若有输入语句:scanf(”a=%db=%dc=%d“,&a,&b,&c);为使a值为1,b值为3,c值为2,从键盘输入数据的正确形式应当是()
A、132<回车>B、a=1b=3c=2<回车>
C、1<回车>3<回车>2<回车>D、a=1<回车>b=3<回车>c=2<回车>
8.已知ch是字符型变量,则不正确的赋值语句是()
A、ch=5+9;B、ch=' ';C、ch='7'+'9';D、ch='a+b';
分析:字符型数据只包含一个字符.9.判断char型变量c1是否为大写字母的正确表达式是()
A、'A'<=c1<='Z'B、(c1>='A')&(c1<='Z')
C、(c1>='A')&&(c1<='Z')D、('A'<=c1)AND('Z'>=c1)
10.若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是()
A、num%2==1B、!(num%2==0)C、!(num%2)D、num%2
11.以下正确的if语句是()
A、if(n>0)printf(”%f“,n)C、if(n>0)
printf(”%f“,-n);{ n=n+m;printf(”%f“,n);};
elseprintf(”%f“,-n);
B、if(n>0)D、if(n>0)
{ n=n+m;printf(”%f“,n);}{ n=n+m;printf(”%f“,n)};elseprintf(”%f“,-n); elseprintf(”%f“,-n);
分析:复合语句{}后不能加;
12.以下程序运行的结果是()
main()
{intx1=3, x2=0, x3=0;
if(x1=x2+x3)
printf(”* * * *“);
else
} printf(”# # # #“);
C、存在语法错误D、无输出结果 A、输出:* * * *B、输出:# # # #
分析:x1=x2+x3是赋值表达式,其结果为0,因此表示假,执行else后的分支语句.13.语句while(!y)中的表达式!y 等价于()
A、y==0B、y!=1C、y!=0D、y==1
14.设有程序段如下,则描述正确的是()
int x=10;
while(x=0)x=x-1;
A、while循环执行10次B、循环是无限循环
C、循环体语句一次也不执行D、循环体语句只执行一次
分析:循环条件表达式x=0是赋值表达式,其结果为0,即假,所以循环一次也不执行。
15.设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是____
for(y=100;x!=y;++x,y++)
printf(”****n“);
A、循环体只执行一次B、是无限循环
C、循环体一次都不执行D、for语句中存在语法错误
分析:循环判断条件x!=y的值为0,即为假,循环不执行
二、填空题(每空1分,共20分)
1.若有定义:int y=7; float x=2.5,z=4.7;,则表达式x+(int)(y/3*(int)(x+z)/2)%4的值为___5.5_____。
2.若采用十进制数的表示形式,则077为___63___,0111为__73__,0x29为__41__,0xab为___171___。分析:077为八进制数:计算7×81+7×80=63;0111计算:1×81+1×80=73
0x29为十六进制数,计算2×161+9×160=41,0xab计算:a代表10,b代表11,10×161+11×160=171
3.设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。
① x或y中有一个小于z___x ② x、y和z中只有两个为负数 _x<0&&y<0&&z>=0||y<0&&z<0&&x>=0||x<0&&z<0&&y>=0___ ③ y是奇数 __y%2(或y%2==1)__ 4.设x、y、z均为int型变量,且x=3, y=-4, z=5,请写出下面每个表达式对应的结果。 ①(x&&y)==(x||z)____1___ ②!(x>y)+(y!=z)||(x+y)&&(y-z)____1__ 5.若a是int型变量,且a的初值为6,则计算表达式后a的值为____-60____ a+=a-=a*a 分析:赋值运算符具有右结合性,因此先计算a-=a*a,相当a=a-a*a,a=6-6*6=-30,再计算a+=-30,即a=a+(-30)=-30+(-30)=-60 6.若a和b均为int型变量,则以下语句的功能是__交换变量ab的值__ a+=b;b=a-b;a-=b; 7.若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为___10__,n的值为__6___ x+=n++ 8.若s是int型变量,且s=6,则下面表达式的值为___1___ s%2+(s+1)%2 9.已知有变量定义:int x=4;float y=3.5;则执行 x+=y+2 之后,x的值为__9__ 分析:x+=y+2相当与x=x+y+2=4+3.5+2=9.5,但是由于x为整型,因此对9.5取整赋值给x 10.C语言规定,可执行程序的开始执行点是__主函数(main)___ 11.有int a=3,b=4,c=5;则以下表达式的值是______1______ !(a+b)+c-1&&b+c/2 分析:先计算!(a+b),再计算算术表达式,最后计算逻辑表达式&&,因此结果只能是1或者0,此题结果为1 12.执行下面程序段后,k值是_____36____ k=1;n=263; do{ k*=n%10;;n/=10;}while(n); 分析:do_while循环先执行循环体,然后判断while后的表达式是否为真; 第1次执行循环体,k=k*n%10=3,n=n/10=26,此时n不为0,因此循环继续; 第2次执行循环体,k=3*26%10=18,n=n/10=2,n不为0,循环继续 第3次执行循环体,k=18*2%10=36,n=n/10=0,n为0,循环结束 13.设a、b、c均是int类型变量,则执行以下for循环后,c的值为_40_ for(a=1, b=5; a<=b; a++) c+=a+b; 分析:c的初值为0,循环初值a=1,b=5,循环条件a<=5,循环变量变化a++,由于b不发生变化,因此循环执行5次,累加a+b的和,即c=1+5+2+5+3+5+4+5+5+5=40 三、分析程序并写出运行结果(每题5分,共20分) 1.设有说明:int a=1,b=0; 则执行以下语句后的输出结果是**0** ______**2**_________ switch(a) { case 1: switch(b) { case 0: printf(”** 0 **n“); break; case 1: printf(”** 1 **n“);break; } case 2: printf(”** 2 **n“); break; } 分析:这是一个switch的嵌套,外层switch,由于a的值为1,所以进入case1 分支; 执行内层swtich,由于b的值为0,所以,执行case 0分支,输出**0**;遇到break,结束内层swtich; 外层switch的case 1分支没有break语句,因此继续执行下一个分支case 2,输出**2** 2.当a=1, b=3, c=5, d=4 时,执行完下面一段程序后x的值是__2___ if(a 分析:else总是与它距离最近的if配对。 3.下面程序的输出结果是____a=16 y=60_____ #include “stdio.h” main() {int a,y; a=10;y=0; do{ a+=2;y+=a; if(y>50)break; }while(a=14); printf(“a=%d y=%dn”,a,y); } 4.下面程序的输出结果是__7__ #include 四、程序填空(每题5分,共10分) 1.下面程序的功能是计算1至10之间的奇数之和以及偶数之和。 main() {int x, y, z, k;x=z=0;for(k=0; k<=10; k+=2){ x+=k;_y=k-1_; 或 y=k+1z+=y;} printf(”偶数之和 = %dn“, x); printf(”奇数之和 =%dn“,__z+1_);此时对应z=k-11 } 2.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。请填空。 main() { charch1; scanf(”%c“, ch1); if(_ch1>=’A’&& ch1<=’Z’_) ch1=ch1+32; elseif(ch1>='a' && ch1<='z') __ch1=ch1-32__; printf(”%c", ch1); } 五、编程题(共20分) 1.从键盘输入3个数,找出其中的最小数和最大数并输出。(10分) 答案有多种,下面给出二种参考(注意在使用if~else时,尽量使程序简洁,效率高)参考1:利用if语句 #include int main(){ int a,b,c,max,min; printf(“input a,b,c:”); scanf(“%d%d%d”,&a,&b,&c); if(a>b){ max=a;min=b; }else{ max=b;min=a; } if(c>max) max=c; if(c min=c; printf(“max=%d,min=%d”,max,min); return 0; } 参考2:利用条件表达式 #include ina main(){ int a,b,c,max,min; printf(“input a,b,c:”); scanf(“%d%d%d”,&a,&b,&c); max=a>b?a:b; max=c>max?c:max; min=a min=c printf(“max=%d,min=%d”,max,min); return 0; } 2.编程计算1 21 51 81 111 14...1 3n1的和并输出,直到某一项的绝对值小于10-6为止。(10分) #include #include int main(){ int n=2; double item,flag,sum=0;/*注意item和sum应均为实型数*/ flag=1; item=flag/n; while(fabs(item)>1e-6){/*fabs函数是对实型数求绝对值*/ sum=sum+item; flag=-flag;/*flag用来控制符号的正负*/ n=n+3; item=flag/n; } printf(“sum=%f”,sum); return 0; }