2012程序设计竞赛基础实训81
程序设计实训实验报告(热门20篇)
程序设计实训实验报告(热门20篇)c语言是在国内外广泛使用的一种计算机语言。
其语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。
其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的windows,unix,linux,mac,os/2,无一例外,哪一个不是c 语言写的?很多新型的语言如,c++,java,c,j,perl...都是衍生自c语言。
掌握了c语言,可以说你就掌握了很多门语言。
学习c程序这门课一年了,这是我们学的第一门专业课,在大学里c语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程。
所以作为我这个计算机专业的学生来说当然十分重要,老师在第一节课说过,c语言是计算机的基础,大多数软件都需要用c语言来编写,通过一个年的学习,使我由初步掌握简单的应试知识到完成高难度的深入编程,如我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。
同时,我觉得c语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。
在学习一年c语言的过程中我也在慢慢探索怎样才能学好c语言,并总结了一点经验:要了解c语言就要从语法规为基础来学习起,首先要是要了解它的结构,比如变量,首先要了解变量的定义方式(格式),其意义是什么(定义变量有什么用);其次就是要我要怎么去运用它(我要用什么型式去应用它)。
在c语言的命令行中所有的语句都是有它自己的一定格式和形式出现在我们面前,所以我们在学习某种语句或命令时你首先要了解的就是它的规则是什么、有什么用、怎么实现等。
这些都是语法基础也是c语言的基础如果把它们都了解很好了,那么你编起程序来就很得心应手了。
比如说ifelse和switchcase这两种条件语句都是用来判断执行功能的,那我要什么时侯用if什么时侯用switch呢?如果你很好地了解它们的结构和作用的话那么就知道:若它的条件分支是多个而且条件的值是整数或是一个字符值时就会选switch而不会选if。
程序设计基础的实训报告
一、实训目的本次实训旨在通过实际编写程序,巩固和加深对程序设计基础知识的理解,提高编程能力和解决问题的能力。
通过实训,使学生能够掌握程序设计的基本流程,熟悉常用编程语言和开发工具,具备独立编写程序、调试和优化程序的能力。
二、实训内容1. 编程语言:C语言2. 开发工具:Visual Studio3. 实训任务:(1)编写一个计算两个整数相加的程序;(2)编写一个计算两个整数相减的程序;(3)编写一个计算两个整数相乘的程序;(4)编写一个计算两个整数相除的程序,要求考虑除数为0的情况;(5)编写一个计算阶乘的程序;(6)编写一个冒泡排序的程序,对一组整数进行排序;(7)编写一个插入排序的程序,对一组整数进行排序;(8)编写一个选择排序的程序,对一组整数进行排序。
三、实训过程1. 编写计算两个整数相加的程序```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("两数之和为:%d\n", sum); return 0;}```2. 编写计算两个整数相减的程序```c#include <stdio.h>int main() {int a, b, sub;printf("请输入两个整数:");scanf("%d %d", &a, &b);sub = a - b;printf("两数之差为:%d\n", sub); return 0;}```3. 编写计算两个整数相乘的程序```c#include <stdio.h>int main() {int a, b, mul;printf("请输入两个整数:");scanf("%d %d", &a, &b);mul = a b;printf("两数之积为:%d\n", mul);return 0;}```4. 编写计算两个整数相除的程序,考虑除数为0的情况```c#include <stdio.h>int main() {int a, b, div;printf("请输入两个整数:");scanf("%d %d", &a, &b);if (b == 0) {printf("除数不能为0\n");} else {div = a / b;printf("两数之商为:%d\n", div);}return 0;}```5. 编写计算阶乘的程序```c#include <stdio.h>int factorial(int n) {if (n == 0) {return 1;} else {return n factorial(n - 1);}}int main() {int n;printf("请输入一个整数:");scanf("%d", &n);printf("%d的阶乘为:%d\n", n, factorial(n)); return 0;}```6. 编写冒泡排序的程序```c#include <stdio.h>void bubbleSort(int arr[], int n) {int i, j, temp;for (i = 0; i < n - 1; i++) {for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}int main() {int arr[] = {5, 3, 8, 6, 2};int n = sizeof(arr) / sizeof(arr[0]); int i;bubbleSort(arr, n);printf("排序后的数组:");for (i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```7. 编写插入排序的程序```c#include <stdio.h>void insertionSort(int arr[], int n) {int i, j, key;for (i = 1; i < n; i++) {key = arr[i];j = i - 1;while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j];j--;}arr[j + 1] = key;}}int main() {int arr[] = {5, 3, 8, 6, 2};int n = sizeof(arr) / sizeof(arr[0]); int i;insertionSort(arr, n);printf("排序后的数组:");for (i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```8. 编写选择排序的程序```c#include <stdio.h>void selectionSort(int arr[], int n) { int i, j, min_idx, temp;for (i = 0; i < n - 1; i++) {min_idx = i;for (j = i + 1; j < n; j++) {if (arr[j] < arr[min_idx]) { min_idx = j;}}temp = arr[min_idx];arr[min_idx] = arr[i];arr[i] = temp;}}int main() {int arr[] = {5, 3, 8, 6, 2};int n = sizeof(arr) / sizeof(arr[0]);int i;selectionSort(arr, n);printf("排序后的数组:");for (i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```四、实训心得通过本次实训,我深刻体会到了程序设计的重要性。
《visualbasic程序设计》实训与习题指导
《visualbasic程序设计》实训与习题指
导
Visual Basic程序设计是一种快速有效的应用程序开发方式,它拥有丰富的功能,可以实现复杂的应用程序开发。
Visual Basic程序设计的实训和题指导可以帮助初学者快速掌
握Visual Basic的基本原理和技巧,从而更好地掌握开发技能。
首先,在研究Visual Basic程序设计之前,应先掌握
Visual Basic编程语言的基本知识,包括语法、程序结构、数
据类型、控件、函数等,并熟练掌握Visual Basic的编程环境。
其次,在实训过程中,可以通过实际操作,更加深入地了解Visual Basic的基本原理和关键技术,并能够熟练操作
Visual Basic的调试工具,使其能够更好地检查程序的运行情况。
此外,在题指导过程中,可以通过解决许多实际问题,进一步加深对Visual Basic的理解,熟练掌握Visual Basic程序
设计的实际技术,并能够独立解决实际问题。
最后,在Visual Basic程序设计的实训和题指导过程中,
应多加练,不断的完善自己的技能,使自己能够熟练的操作Visual Basic,并能够更好地运用Visual Basic程序设计技术满
足开发需求。
总之,Visual Basic程序设计的实训和题指导可以帮助初学者更快地掌握Visual Basic的基本原理和技巧,从而更好地掌握开发技能,使其能够熟练地操作Visual Basic,并能够更好地运用Visual Basic程序设计技术满足开发需求。
12级-程序设计基础实训题目
2. 实验前的准备工作
回顾并复习实验中涉及的相关内容,上机实验前熟悉实验设计的知识,完成程序结构的设计工作, 准备好调试和运行时所需的测试数据,包括各类输入数据及正确的输出数据。
3. 关于实验报告的说明
(1)按照附录中的模板书写实验报告; (2)报告主体只有程序清单的实验报告以不及格报告评分并登记成绩; (3)认定为内容雷同的实验报告(包括内容完全相同、个别句子作少量修改等情况) ,以不及格报告 评分并登记成绩。
第 4页 共 21页
程序设计基础实训 单元实验
单元实验一 实验目的:熟悉 C 语言的文件操作
【问题描述】
需要长期保存的数据可以文件方式存储在外存上,C 语言提供了一组文件操作函数:fopen、fclose、 fgets、fputs、fgetc、fputc、fscanf、fprintf、fread、fwrite、rewind、fseek、feof 等,应了解这些函数的用 法并加以应用。
第 5页 共 21页 "a" "rb" "wb" "ab" Append to a text file Open a binary file for reading Create a binary file for writing Append to a binary file "a+" "rb+" "wb+" "ab+" Open a text file for read/write Open a binary file for read/write Create a binary file for read/write Open a binary file for read/write
程序设计实训报告(9篇)
程序设计实训报告(9篇)【导语】程序设计实训报告怎么写出亮点?整理了9篇优秀的《程序设计实训报告》通用版范文,有规范的开头结尾写法和标准的书写格式。
是您写出深受大家欢迎的综合报告抱负参考模板,盼望对您有所关心。
【第1篇】程序设计实训报告程序设计实训报告1一,实训目的:加深对可视化编程技术基本学问的理解,把握运用vb开发应用程序的基本方法及基本技巧。
二,实训时间:20xx年10月20xx年11月三,实训方式:上机操作四,实训类容:这次在杨立雄老师的带领下,利用vb开发工具与数据库sql开发一个使用的小型管理信息系统。
我选择了学籍管理系统。
它的功能要求如下:1,学籍信息输入:实现同学基本状况的输入。
包括各个同学的状况,姓名,家庭号码,家庭住址,学号等各个信息。
2,学籍信息管理:本模块实现了信息的修改,删除,查询。
还有个人信息。
把信息统计这个繁琐的工作简洁化,为同学信息的管理方面提高工作效率。
3,学籍信息查询:通过输入学号便可以查询到这个同学的全部信息,包括姓名,性别,诞生年月,班级,入学日期,联系电话,嘉奖和成果表都一目了然,很大的便利了教工们查询同学信息的过程。
4,统计查询:实现查询全班人数,男女生比例等。
五,实训体会:这次实训,感觉既好玩又有些辛苦。
这还是老师担忧我们适应不了所以没教那么多学问,即使这样我们仍学到了比以前上学时更多的学问,而且这些学问有好多都是我们自己去领悟的到的。
我也知道有人比我们更累,所以我自觉得还是挺好的。
经过这次的实训,我真真实切的感受到了计算机在我们生活中工作中的运用,这些软件,程序能让我们提高工作的效率,更直观更便捷切入主题。
这次我们学习的是数据源的原理及应用的各方面学问,由老师带着我们不断操作。
vb能有效的组织,管理和共享数据库信息,能把数据库信息与ado结合在一起,实现数据库信息的共享。
同时,vb概念清楚,简洁易学,使用。
是适合企业管理人员,数据库管理员使用的首选。
2012年软件设计大赛初赛题
对一个方阵转置,就是把原来的行号变列号,原来的列号变行号例如,如下的方阵:1 2 3 45 6 7 89 10 11 1213 14 15 16转置后变为:1 5 9 132 6 10 143 7 11 154 8 12 16但,如果是对该方阵顺时针旋转(不是转置),却是如下结果:13 9 5 114 10 6 215 11 7 316 12 8 4下面的代码实现的功能就是要把一个方阵顺时针旋转。
void rotate(int* x, int rank){int* y = (int*)malloc(___________________); // 填空for(int i=0; i<rank * rank; i++){y[_________________________] = x[i]; // 填空}for(i=0; i<rank*rank; i++){x[i] = y[i];}free(y);}int main(int argc, char* argv[]){int x[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};int rank = 4;rotate(&x[0][0], rank);for(int i=0; i<rank; i++){for(int j=0; j<rank; j++){printf("%4d", x[i][j]);}printf("\n");}return 0;}请分析代码逻辑,并推测划线处的代码。
答案写在“解答.txt”文件中注意:只写划线处应该填的内容,划线前后的内容不要抄写。
假设有两种微生物X 和YX出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
程序设计竞赛基础实训
2012年程序设计竞赛基础实训22 1解不等式nm 161514131211±+-++-+< 其中m 为从键盘输入的正整数,式中符号为二个“+”号后一个“-”号,即分母能被3整除时为“-”。
输入正整数m ,输出满足不等式的n 。
测试数据: (1) m=4 (2) m=7设计要点1:式中出现减运算,导致不等式的解可能分段。
设置条件循环,每三项(包含二正一负)一起求和,得一个区间解。
然后回过头来一项项求和,得个别离散解。
为叙述方便,记nn s 161514131211)(±+-++-+= (1) 通过循环知s(d+1)>m ,且n=d+1为“-”,可得n=d 为一个解;而n=d+2时1.0/(n+3)为“+”,可得s(d+2)>m 。
以后各项中,“-”项小于其前面的“+”项,可知对于n>d+2有s(n)>m 成立。
因而有区间解:n ≥d(2) 在n<d 时是否有解,逐个求和检验确定离散解。
这一步不能省,否则出现遗解。
程序设计1:// 解不等式:m<1+1/2-1/3+1/4+1/5-1/6+...+-1/n#include <stdio.h>void main(){ long d,n,m,k 。
double s 。
printf("\n 请输入m: ")。
scanf("%d",&m)。
n=-2。
s=0。
while(s<=m){ n=n+3。
s=s+1.0/n+1.0/(n+1)-1.0/(n+2)。
}d=n+1。
s=0。
// 可确定区间解n ≥d (1) for(k=1。
k<=n 。
k++){ if(k%3>0) s=s+1.0/k 。
else s=s-1.0/k 。
if(s>m) printf(" n=%ld, ",k)。
2012年青岛市程序设计竞赛试117
2012年青岛市程序设计竞赛试题(小学组)说明:1、必须以题目中规定的文件名进行保存,并用FTP上传到指定文件夹中,FTP上传在试题最后。
请选手每做完一道题及时上传一次,以确保无因机器故障引起的文件丢失。
2、比赛时间为:60分钟,试题100分。
3、使用竞赛规定的文件格式输入、输出。
第一题火柴盒(程序文件名a1.pas,25分)小林今年刚上一年级,最近开始学数学的加法。
老师给他出了这样一道题:火柴盒长为L,宽为W(1<=L,W<=100)。
高度有一层楼这么高,火柴只能按长或宽的方式放进去,给小林了N(1<=N<=50)根火柴,知道一根火柴的长度,问有多少跟火柴可以放进该火柴盒。
你能用计算器帮小林解决这个问题吗?输入(a1.in):第一行,三整数N,L和W用空格隔开;接下来N行每行输入一个1到1000范围内的一个整数,表示火柴的长度。
输出(a1.out):一行整数,能够装进火柴盒的火柴数量。
样例1:输入:5 3 484219输出:3第二题数据统计(程序文件名a2.pas,25分)小林最近想研究末尾有0的整数的性质。
小林给出任一整数N,请你帮小林算出这个整数末尾共有多少个连续的0?输入(a2.in):一行,一个整数N(1<=N<=1000000000)。
输出(a2.out):一行统计出N的末尾连续0 的个数。
样例1:输入:50100输出:2样例2:输入:102304输出:0第3题购文具(程序文件名a3.pas,25分)“六一”儿童节“文具套装”优惠销售,三种购买方式如下:1、现购:10元/套,超过2套以为的,9元/套,超过10套以外的,则7.5元/套;2、网购:9元/套,超过10套,全部按网购每套的价钱打8折;超过5套,则全部按网购每套的价钱六折;3、团购:10元起团购,6元/套,达到或超过50套,则5元/套,达到或超过100套,则4元/套。
小林想用其中一种方式购n套文具,请你帮他计算应付多少元钱?输入(a3.in):一行,两个用空格隔开的整数,分别表示购买方式号(1,2,3)和套数n(n<=200)输出(a3.out):一行,一个整数,应付饭钱(小数部分四舍五入)。
百度之星Astar2012程序设计大赛初赛试题及参考答案
百度之星Astar2021程序设计大赛初赛试题〔第一场〕————及B题答案比赛说明百度之星初赛:2021年6月2日、6月3日10:00Am~12:00Pm本次大赛的初赛的初赛采取在线答题、编译,离线判题的形式,选手报名后,可以在6月2日、6月3日任选一天参加比赛,也可选择两场都参加。
针对每题,交题后,系统将给出程序编译是否正确的结果,但不会给出程序是否通过全部测试数据的评价;当场比赛完毕后,所有选手的针对每题所写的程序将被离线评判,每题根据程序通过测试数据的数目计算得分。
每场初赛根据单场所有题目总分计算成绩,选出当场成绩在前400名的选手进入复赛〔第一场已经进入复赛的选手参加第二场比赛如果再次晋级,将被不在第二场参与排名〕。
2021年6月2日,2021百度之星Astar2021程序设计大赛初赛翻开大幕。
这里提供了初赛第一场的题目,供有未进初赛和其它有兴趣的朋友研究。
初赛第一场共4题。
分别是度度熊就是要第一个出场、小小度刷礼品、集合的交与并、轮子上的度度熊。
目录比赛说明······················· 1·A:度度熊就是要第一个出场·············· 2·B:小小度刷礼品··················· 5·C:集合的交与并····················6·D:轮子上的度度熊···················6·A:度度熊就是要第一个出场题目描述Baidu年会安排了一场时装秀节目。
2012程序计竞赛基础实训81
2012程序设计竞赛基础实训8239 台球碰撞在平面直角坐标系下,台球桌是一个左下角在(0,0),右上角在(L,W)的矩形。
有一个球心在(x,y),半径为R的圆形母球放在台球桌上(整个球都在台球桌内)。
受撞击后,球沿极角为b的射线(即:x正半轴逆时针旋转到此射线的角度为b)以初速度v飞出。
因球与桌面的磨擦,球作的加速度为a的匀减速率运动,每次碰到球桌边框时均发生完全弹性碰撞(反射角等于入射角)。
试求球停止时球心所在位置。
输入: l=180,w=120,x=35,y=40,r=5,b=30,v=27,a=6原题:在平面直角坐标系下,台球桌是一个左下角在(0,0),右上角在(L,W)的矩形。
有一个球心在(x,y),半径为R的圆形母球放在台球桌上(整个球都在台球桌内)。
受撞击后,球沿极角为a的射线(即:x正半轴逆时针旋转到此射线的角度为a)飞出,每次碰到球桌时均发生完全弹性碰撞(球的速率不变,反射角等于入射角)。
如果球的速率为v,s个时间单位之后球心在什么地方?输入输入文件最多包含25组测试数据,每个数据仅一行,包含8个正整数L,W,x,y,R,a,v,s(100<=L,W<=105, 1<=R<=5, R<=x<=L-R, R<=y<=W-R, 0<=a<360, 1<=v,s<=105),含义见题目描述。
L=W=x=y=R=a=v=s=0表示输入结束,你的程序不应当处理这一行。
输出对于每组数据,输出仅一行,包含两个实数x, y,表明球心坐标为(x,y)。
x和y应四舍五入保留两位小数。
设计要点:(1)确定球心区域设球心座标为(x,y),则有球心矩形区域:x1≤x≤x2,y1≤y≤y2其中:x1=r,x2=l-r; y1=r,y2=w-r(2)没撞击时球位置设开始时球心位于(x0,y0),球沿极角为a的射线射出,球的速率为v,s个时间单位之后球心在(x,y):x=x0+v*s*cos(a*3.14159/180)y=y0+v*s*sin(a*3.14159/180)(3)撞击轴对称若球与右竖边(x2)撞击,撞击后横月座标为:x=2*x2-x若球与上横边(y2)撞击,撞击后纵月座标为:y=2*y2-y程序设计:// 台球碰撞#include <math.h>#include<stdio.h>void main(){double l,w,r,a,v,s,x,y,x1,x2,y1,y2;printf(" 请确定球台边框(l,w): "); scanf("%lf,%lf",&l,&w);printf(" 请确定球心开始位置(x,y): ");scanf("%lf,%lf",&x,&y);printf(" 请确定球半径r: "); scanf("%lf",&r);printf(" 请确定射击角度a: "); scanf("%lf",&a);printf(" 请确定射击速度v: "); scanf("%lf",&v);printf(" 请确定时间s: "); scanf("%lf",&s);x1=r;x2=l-r;y1=r;y2=w-r;x=x+v*s*cos(a*3.1415926/180);y=y+v*s*sin(a*3.1415926/180);while(x<x1 || x>x2 || y<y1 || y>y2){if(x>x2) x=2*x2-x;if(x<x1) x=2*x1-x;if(y>y2) y=2*y2-y;if(y<y1) y=2*y1-y;}printf(" 所求位置为:(%.2f,%.2f).\n",x,y);}请确定球台边框(l,w): 130,110请确定球心开始位置(x,y): 30,40请确定球半径r: 5请确定射击角度a: 30请确定射击速度v: 20请确定时间s: 20所求位置为:(113.59,40.00).引申:在平面直角坐标系下,台球桌是一个左下角在(0,0),右上角在(L,W)的矩形。
程序设计竞赛基础实训
2012年程序设计竞赛基础实训1 2012年程序设计竞赛共6道题,注意控制了试题的难度与梯度。
第1、2题是较容易的基础题,大多数参赛者(大约70—80%)可解决。
第3题难度也不大,但比较灵活,估计20—30%参赛者可通过。
第4、5题新颖且有一定难度,预计10—15%参赛者或可求解。
第6题难度较大,主要是实现递增的循环结构难以确定,大约只有个别高手才能求解。
1 不等式对指定的正整数m ,试求满足不等式 11253321+<-++++<m n n m 的正整数n 。
输入正整数m (1<m<10000),输出正整数n 所在的区间。
例如m=2,输出正整数n 的区间为:[4,8]测试数据:(1) m=1000(2) m=2012程序设计:// 解不等式,t1#include <stdio.h>#include<math.h>void main(){ long c,d,i,m; double s;printf(" 请输入m: ");scanf("%ld",&m);i=0;s=0;while(s<m){i=i+1;s=s+sqrt(i)/(2*i-1);}c=i;while(s<m+1){i=i+1;s=s+sqrt(i)/(2*i-1);}d=i-1;printf("\n 满足不等式的正整数n 为: [%ld,%ld] \n",c,d);}数据测试:请输入m: 1000满足不等式的正整数n 为: [999550,1001549]请输入m: 2012满足不等式的正整数n 为: [4047237,4051260]变通:如果和式中增加有规律的“-”号,如何求解?实训1:解不等式nm 161514131211±+-++-+< 其中m 为从键盘输入的正整数,式中符号为二个“+”号后一个“-”号,即分母能被3整除时为“-”。
程序设计实训总结
程序设计实训总结在这次的程序设计实训中,我对于程序设计有了更加深入的了解,并且取得了一定的进步。
在这100个小时的实训中,我充分发挥了自己的学习能力和解决问题的能力,通过不断学习和实践,我逐渐掌握了程序设计的基本原理和方法。
首先,在这次实训中,我学习了C语言和Python语言的基本语法,并且了解了它们的特点和用途。
通过学习这两种语言,我对于程序的运行过程、变量的使用、条件控制和循环结构等有了更加深入的理解。
我能够编写简单的程序代码,并且能够利用编程语言解决一些简单的实际问题。
其次,在实训过程中,我学习了如何使用开发工具来编写程序。
我学会了使用编译器、集成开发环境和调试器等工具来开发、调试和运行程序。
通过使用这些工具,我能够更加高效地编写程序,并且能够快速定位和解决程序中的问题。
另外,在实训中,我逐渐培养了良好的代码风格和编程习惯。
我学会了使用有意义的变量名和函数名,使用注释来解释代码的功能和实现思路,以及遵循代码缩进规范等。
这些良好的编程习惯能够提高代码的可读性和可维护性,使得程序更加易于理解和修改。
在实训的过程中,我也遇到了一些困难和挑战。
有时候,我会遇到一些难以理解的错误信息,需要通过查找资料和请教老师来解决问题。
有时候,我会遇到一些难以解决的编程问题,需要反复尝试和思考才能找到解决方法。
但是,正是这些困难和挑战,让我能够不断提高自己的编程能力和解决问题的能力。
通过这次实训,我还学习了如何进行团队合作和分工合作。
在实训中,我们组内的成员相互配合,共同完成项目任务。
我们明确分工,各司其职,通过交流和讨论来解决问题。
通过团队合作,我们能够更加高效地完成任务,并且能够从其他成员那里学习到更多有益的知识和经验。
最后,通过这次实训,我认识到程序设计是一个需要不断学习和实践的过程。
虽然我在这次实训中取得了一定的进步,但是我也意识到自己的不足之处,还有很多需要学习和提高的地方。
因此,我将继续努力学习,不断完善自己的程序设计能力。
2012年C语言程序设计竞赛题
2012年首届北京联合大学程序设计竞赛《C语言程序设计》试题考试时间:90分钟答题要求:? 将“给学生”文件夹中的“答题”文件夹复制到D盘后重命名,更名后的文件夹以参赛组号和组员姓名构成(如:C语言-T60张三、李四、王五)。
? 分别打开本组文件夹中的3个.c文件答题。
? 做题过程中请及时存盘,不要擅自重启机器,遇到死机时请找监考老师。
? 答卷完毕,关闭所有窗口,经监考教师检查后,离开考场。
? 不要关机。
1.(40分)编写程序实现如下功能:假设有一个圆心为(a,b)、半径为r的圆,其中a、b、r 从键盘输入。
输入10个点的平面坐标(x轴和y轴的坐标值),判断其中哪些点在该圆内、圆外或圆周上,并分别统计圆内、圆外或圆周上点的个数。
已知:两个点(x1,y1)和(x2,y2)间的距离s的计算公式为:s?(x2-x1)2?(y2?y1)22.(30分)下面程序的功能是计算两个49位超大整数之和,请补充完整程序。
#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 50void mycreate(int *p);void myout(int *p);void mysum(int *a,int *b,int *c);main(){ int a[N]={0},b[N]={0},c[N]={0},i=0;mycreate(a); // 产生一个49位整数,并将该数的每一位数字存放在数组a中mycreate(b); // 产生一个49位整数,并将该数的每一位数字存放在数组b中printf("第一个整数: ");myout(a); //输出a[1]至a[N-1]printf("第二个整数: ");myout(b); //输出b[1]至b[N-1]mysum(a,b,c); //计算两个49位整数之和,并将该和的每一位数字存放在数组c中printf("两个整数和:");if(c[0]!=0) //有进位时printf("%d",c[0]);else //无进位时printf(" ");myout(c); //输出c[1]至c[N-1]}// 产生一个49位整数,并将该数的每一位数字存放在p指向的数组中//函数mycreate的首部{ int i=0;。
百度之星Astar2012程序设计大赛 初赛试题(二)
百度之星Astar2012程序设计大赛初赛试题————及答案(第二场)A:度度熊就是要刷排名第一一天度度熊在Baidu游戏大厅中发现了一个隐藏的神奇游戏,叫做“度度熊的逆袭”。
度度熊很好奇到底是什么情况,于是就进入了游戏。
这个游戏很神奇,游戏会给出n个数Ai,度度熊可以任意从中选取一些数,一个数可以选任意多次。
选好之后度度熊得到的分数为度度熊选出的数的Xor(异或)值。
度度熊顿时产生了兴趣,决心要刷至Ranklist的第一名。
但是度度熊犯难了,度度熊不知道自己给出的方案是不是最好的,于是度度熊找到了你,希望你告诉他对于某个回合,度度熊能得到的最高分和第二高分是多少?输入第1行1个数n,接下来1行n个整数表示Ai, (0<=Ai<231)1<=n<=105输出输出一行两个数,表示度度熊能够得到的最高分和第二高分为多少样例输入25 3样例输出6 5#include<stdio.h>main(){long a[100000],i,max1,max2,j,n;scanf("%ld",&n);for(i=0;i<n;i++)scanf("%ld",&a[i]);max1=0;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(max1<a[i]^a[j]){max2=max1;max1=a[i]^a[j];}printf("%ld %ld",max1,max2);}B:度度熊的礼物度度熊拥有一个自己的Baidu空间,度度熊时不时会给空间朋友赠送礼物,以增加度度熊与朋友之间的友谊值。
度度熊在偶然的机会下得到了两种超级礼物,于是决定给每位朋友赠送一件超级礼物。
不同类型的朋友在收到不同的礼物所能达到的开心值是不一样的。
开心值衡量标准是这样的:每种超级礼物都拥有两个属性(A, B),每个朋友也有两种属性(X, Y),如果该朋友收到这个超级礼物,则这个朋友得到的开心值为A*X + B*Y。
2012程序设计竞赛基础实训72
2012程序设计竞赛基础实训7232 m位完美平方数用0,1,2,...,9能组成多少个没有重复数字的m(1<m≤10)位平方数?输入m,输出没有重复数字的m位平方数的个数,并输出其中最大数。
m=7, 输出:m=10, 输出:// 用0,1,2,...,9组成没有重复数字的m位平方数#include <math.h>#include <stdio.h>void main(){int k,m,n,t,f[10];double a,b,c,d,w,x,a1,d1;printf(" 请确定整数m: "); scanf("%d",&m);x=1.0;for(k=2;k<=m;k++) x=x*10; // 确定m位数的起点xn=0;b=(int)pow(x,0.5);c=pow(10*x-1,0.5);for(a=b+1;a<=c;a++){d=a*a; w=d; // 确保d为m位平方数for(k=0;k<=9;k++) f[k]=0;while(w>0){ t=(int)fmod(w,10);f[t]=f[t]+1;w=floor(w/10);}for(t=0,k=0;k<=9;k++)if(f[k]>1) {t=1; break;} // 测试平方数是否有重复数字if(t==0 ) // 测试平方数中没有重复数字{n++;d1=d;a1=a;}}printf(" 共可组成%d个没有重复数字的%d位平方数.",n,m);printf(" 其中最大的为:%.0f=%.0f^2 \n",d1,a1);}请确定整数m: 7共可组成123个没有重复数字的7位平方数. 其中最大的为:9872164=3142^2请确定整数m: 10共可组成87个没有重复数字的10位平方数. 其中最大的为:9814072356=99066^2变通:用0,1,2,...,9能组成没有重复数字的m(1<m≤10)位平方数的个数为s(m).问:(1)求s(10),即求出没有重复数字的10位平方数的个数。
2012程序设计竞赛基础实训31
2012年程序设计(chénɡ xù shè jì)竞赛(jìngsài)基础(jīchǔ)实训3118 统计(tǒngjì)试统计含有数字(shùzì)7且不能被7整除的m位整数的个数s1,并指出这s1个数中不含有数字4的整数的个数s2。
输入m, 输出s1,s2。
m=5, 输出:m=6, 输出:(1) 设计要点首先通过乘m-1个10计算m位数的起点b=10^(m-1),为枚举提供范围t(b —10*b-1)。
为了检测m位数t含有多少个数字7,每个m位整数t赋给d(以保持t不变),然后通过m次求余先后分离出t的m个数字c,if(c==7) f++, 统计整数t中数字7的个数f。
同时统计数字4的个数g。
如果f>0,说明整数t中含有数字7。
如果g=0,说明整数t中不含数字4。
对每一个m位整数,据f>0 && t%7>0, s1作相应统计。
据f>0 && t%7>0 && g==0, s2作相应统计。
(2)程序设计// 统计含数字7且不能被7整除的m位整数的个数s1,其中不含数字4的个数s2#include <stdio.h>void main(){ int c,f,g,i,j,m;long b,d,s1,s2,t;printf(" 请输入位数m (2<=m<=9): "); scanf("%d",&m);b=1; s1=0;s2=0;for(i=2;i<=m;i++) b=b*10; // 计算m位数的起点for(t=b;t<=10*b-1;t++) // 枚举每一个m位数{ d=t;f=0;g=0;for(j=1;j<=m;j++){ c=d%10; d=d/10;if(c==7) f++; // 统计数字7的个数if(c==4) g++; // 统计数字4的个数}if(f>0 && t%7>0) s1++; // 统计含数字(shùzì)7且不能被7整除数的个数if(f>0 && t%7>0 && g==0) s2++; // 统计(tǒngjì)其中不含数字4的个数}printf(" s1=%ld ,s2=%ld \n",s1,s2);}(3)程序运行示例(shìlì)请输入(shūrù)位数m (2<=k<=9): 5s1=32152 ,s2=20412请输入(shūrù)位数m (2<=k<=9): 6s1=366522 ,s2=208300变通1:试统计含有数字7且能被7整除的没有重复数字的m位整数的个数s1,并指出其中最大的一个数。
大学C语言程序设计实验教程实验答案2012年版
case 1: y=x2+3;break;
case 2:
case 3: y=-0.5*x2+10;break;
default: y=2*x2-5;break;
}
}
printf("x=%f,y=%f",x1,y);
}
5.以下程序计算某年某月有几天,闰年与平年的二月份天数不同。判别闰年的条件是:能被4整除但不能被100整除的年是闰年,或者能被400整除的年也是闰年。请分析程序填空。
if(score>=90)
printf("A\n");
else if(score>=80)
printf("B\n");
else if(score>=70)
printf("C\n");
else if(score>=60)
printf("D\n");
else
printf("E\n");
}
9.给一个不多于3位的正整数,编写程序完成以下要求:
case 1: b++; break;
}
case 1: a++;b++; break;
case 2: a++;b++;
}
printf("\na=%d,b=%d",a,b);
}
4.将下列的程序段改用switch语句来实现,使它完成相同的功能。
if(x>=0&&x<10)y=x;
else if(x<20)y=x+3;
2012程序设计C大赛及答案(修正)
C一、填空题(本大题两种题型,程序填空或写结果,程序填空要求每空仅填一条语句,即不能出现分号)(共40分)1、求17922和5394的最小公倍数。
(共5分)答案:答案:5555822、分解成质因数(如输出435234,251 17 17 3 2) (共5分)void prim(int m, int n){if(m>n){while(m%n != 0)n++;;;printf("%d ", n);}}void main(){int n = 435234;printf("%d,", n);prim(n, 2);}答案: m /= n; prim(m, n);3、从数字1开始向右顺时针方向移动,可以得到如下的5×5的螺旋:(共10分)21 22 23 24 2520 7 8 9 1019 6 1 2 1118 5 4 3 1217 16 15 14 13可以算出对角线上数字之和是101.1001×1001的螺旋中对角线上数字之和是?答案:6691710014、欧拉曾发表过一个著名的二次公式:n2+ n + 41。
这个公式对于0到39的连续数字能够产生40个质数。
但是当n=40时,402+40+41 = 40(40+1)+41能够被41整除。
当n=41时,412+41+41显然也能被41整除。
利用计算机,人们发现了一个惊人的公式:n2- 79n+1601,这个公式对于n=0到79能够产生80个质数。
这个公式的系数, -79和1601的乘积是-126479。
考虑如下形式的二次公式:n2+an+b, 其中|a|1000,|b|1000。
找出对于能够为从0开始的连续的n产生最多数量的质数的二次公式,写出该公式的系数a 和b的乘积。
答案:答案: -59231 (a = -61 b = 971 n = 70 )5、有一个整形数组a,长度为n,数组里有正数也有负数。
程序设计基础课程实训总结
程序设计基础课程实训总结
程序设计基础课程实训是针对初学者特点,通过实践性教学,使学员掌握程序设计的基本概念、语法规则、算法分析和编程技巧。
在课程实训中,学员需要完成一定数量的编程练习和项目任务,以培养自己的分析问题、解决问题的能力。
课程实训总结如下:
1. 掌握基本概念:在实训过程中,学员需要掌握程序设计的基本概念,如变量、数据类型、运算符、控制结构等,为后续编程打下基础。
2. 熟悉语法规则:学员需要熟悉C语言或其他编程语言的语法规则,以便能够正确地编写和调试程序。
3. 学会算法分析:实训过程中,学员需要学会分析算法的复杂度,选择合适的算法解决问题,提高程序的效率和可读性。
4. 编程实践:通过完成编程练习和项目任务,学员可以将理论知识应用于实际编程中,提高自己的编程能力和动手实践能力。
5. 调试技巧:在实训过程中,学员需要掌握常用的调试技巧,如断点调试、打印调试等,以便能够快速定位并修复程序中的错误。
6. 团队协作:实训过程中,学员需要学会与团队成员进行有效沟通和协作,共同完成项目任务,提高自己的团队合作能力。
7. 总结与反思:在课程实训结束后,学员需要对自己的学习过程进行总结和反思,找出自己的不足之处,为今后的学习和工作打下坚实基础。
通过程序设计基础课程实训,学员可以在实践中掌握程序设计的基本知识和技能,为后续专业课程学习和未来职业发展奠定基础。
百度之星Astar2012程序设计大赛复赛试题(下)
百度之星Astar2012程序设计⼤赛复赛试题(下)百度之星Astar2012程序设计⼤赛复赛试题(下)2012年6⽉17⽇,百度爱好者给⼤家带了2012百度之星Astar2012程序设计⼤赛复赛第⼆场的题⽬,供有兴趣的朋友研究。
复赛第⼆场共3题。
分别是轮⼦上的度度熊2、消灭病毒和BD语⾔翻译器。
第⼀题、轮⼦上的度度熊2百度楼下有⼀块很⼤很⼤的⼴场。
⼴场上有很多轮滑爱好者,每天轮滑爱好者们都会在⼴场上做⼀种叫做平地花式轮滑的表演。
度度熊也想像他们⼀样在轮上飞舞,所以也天天和他们练习。
因为度度熊的天赋,⼀下就学会了好多动作。
但他觉得只是单独的做动作很没意思,动作的组合才更有欣赏性。
平地花式轮滑(简称平花),是穿轮滑鞋在固定数量的标准桩距间做⽆跳起动作的各式连续滑⾏。
度度熊表演的舞台上总共有N个桩,⽽他也从⾃⼰会的动作中挑出M最好看的。
但事情并没有这么简单。
⾸先,每个动作因为复杂度不同,所以经过的桩的个数、消耗的体⼒也不尽相同。
然⽽度度熊的体⼒是有限的。
然后,为了保持连贯性,有些动作是接不起来的,所以每个动作都有他前⾯能接的⼀个动作的列表。
更有甚者,有的动作要考虑前很多个动作才能确定是否能做出来。
但度度熊这次把这些应该连接在⼀起的动作直接定为⼀个动作了。
所以⼀个动作被描述为⼀个序列:{X1, X2, X3, … Xn}表⽰,做这个动作的时候会先前进X1个桩,再前进X2个桩(注意:Xi可能是负数,这表⽰后退|Xi|个桩)。
度度熊的完整表演需要恰好停在最后⼀个桩后⾯,并且在表演过程中不允许有前进/后退⽅向上桩不够的情况发⽣。
最后,评分也很复杂。
这次每个动作没有单独得分了,最终得分=组合得分+剩余体⼒。
表演的时候,需要确定⼀个组合,表演过程中完成这组组合中所有的动作,同样的动作允许多次出现,但不能包含其他多余的动作。
这个组合的分数就是最终得分中的“组合得分”。
举个例⼦,总共有10个桩,体⼒上限是25,有以下⼏个动作:动作1:{1,3,1},需要5的体⼒。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012程序设计竞赛基础实训8239 台球碰撞在平面直角坐标系下,台球桌是一个左下角在(0,0),右上角在(L,W)的矩形。
有一个球心在(x,y),半径为R的圆形母球放在台球桌上(整个球都在台球桌内)。
受撞击后,球沿极角为b的射线(即:x正半轴逆时针旋转到此射线的角度为b)以初速度v飞出。
因球与桌面的磨擦,球作的加速度为a的匀减速率运动,每次碰到球桌边框时均发生完全弹性碰撞(反射角等于入射角)。
试求球停止时球心所在位置。
输入: l=180,w=120,x=35,y=40,r=5,b=30,v=27,a=6原题:在平面直角坐标系下,台球桌是一个左下角在(0,0),右上角在(L,W)的矩形。
有一个球心在(x,y),半径为R的圆形母球放在台球桌上(整个球都在台球桌内)。
受撞击后,球沿极角为a的射线(即:x正半轴逆时针旋转到此射线的角度为a)飞出,每次碰到球桌时均发生完全弹性碰撞(球的速率不变,反射角等于入射角)。
如果球的速率为v,s个时间单位之后球心在什么地方?输入输入文件最多包含25组测试数据,每个数据仅一行,包含8个正整数L,W,x,y,R,a,v,s(100<=L,W<=105, 1<=R<=5, R<=x<=L-R, R<=y<=W-R, 0<=a<360, 1<=v,s<=105),含义见题目描述。
L=W=x=y=R=a=v=s=0表示输入结束,你的程序不应当处理这一行。
输出对于每组数据,输出仅一行,包含两个实数x, y,表明球心坐标为(x,y)。
x和y应四舍五入保留两位小数。
设计要点:(1)确定球心区域设球心座标为(x,y),则有球心矩形区域:x1≤x≤x2,y1≤y≤y2其中:x1=r,x2=l-r; y1=r,y2=w-r(2)没撞击时球位置设开始时球心位于(x0,y0),球沿极角为a的射线射出,球的速率为v,s个时间单位之后球心在(x,y):x=x0+v*s*cos(a*3.14159/180)y=y0+v*s*sin(a*3.14159/180)(3)撞击轴对称若球与右竖边(x2)撞击,撞击后横月座标为:x=2*x2-x若球与上横边(y2)撞击,撞击后纵月座标为:y=2*y2-y程序设计:// 台球碰撞#include <math.h>#include<stdio.h>void main(){double l,w,r,a,v,s,x,y,x1,x2,y1,y2;printf(" 请确定球台边框(l,w): "); scanf("%lf,%lf",&l,&w);printf(" 请确定球心开始位置(x,y): ");scanf("%lf,%lf",&x,&y);printf(" 请确定球半径r: "); scanf("%lf",&r);printf(" 请确定射击角度a: "); scanf("%lf",&a);printf(" 请确定射击速度v: "); scanf("%lf",&v);printf(" 请确定时间s: "); scanf("%lf",&s);x1=r;x2=l-r;y1=r;y2=w-r;x=x+v*s*cos(a*3.1415926/180);y=y+v*s*sin(a*3.1415926/180);while(x<x1 || x>x2 || y<y1 || y>y2){if(x>x2) x=2*x2-x;if(x<x1) x=2*x1-x;if(y>y2) y=2*y2-y;if(y<y1) y=2*y1-y;}printf(" 所求位置为:(%.2f,%.2f).\n",x,y);}请确定球台边框(l,w): 130,110请确定球心开始位置(x,y): 30,40请确定球半径r: 5请确定射击角度a: 30请确定射击速度v: 20请确定时间s: 20所求位置为:(113.59,40.00).引申:在平面直角坐标系下,台球桌是一个左下角在(0,0),右上角在(L,W)的矩形。
有一个球心在(x,y),半径为r的圆形母球放在台球桌上(整个球都在台球桌内)。
受撞击后,球沿极角为b的射线(即:与正半轴逆时针旋转到此射线的角度为b)以初速度v飞出。
因球与桌面的磨擦,球作的加速度为a的匀减速率运动,每次碰到球桌边框时均发生完全弹性碰撞(反射角等于入射角)。
试求球停止时球心所在位置。
解:球作的初速度为v0,加速度为a的匀减速率运动,设t时刻球的速度为vt,则vt=v0-a*t停止时vt=0,则运行时间为:t=v0/a球运行距离为s=v0*t-a*t*t/2=v0*v0/2/a// 台球碰撞#include <math.h>#include<stdio.h>void main(){double l,w,r,a,b,v,s,x,y,x1,x2,y1,y2;printf(" 请确定球台边框(l,w): "); scanf("%lf,%lf",&l,&w);printf(" 请确定球心开始位置(x,y): "); scanf("%lf,%lf",&x,&y);printf(" 请确定球半径r: "); scanf("%lf",&r);printf(" 请确定射击角度b: "); scanf("%lf",&b);printf(" 请确定射击初速度v: "); scanf("%lf",&v);printf(" 请确定匀减速的加速度a: "); scanf("%lf",&a);x1=r;x2=l-r;y1=r;y2=w-r;s= v*v/2/a;x=x+s*cos(b*3.1415926/180);y=y+s*sin(b*3.1415926/180);while(x<x1 || x>x2 || y<y1 || y>y2){if(x>x2) x=2*x2-x;if(x<x1) x=2*x1-x;if(y>y2) y=2*y2-y;if(y<y1) y=2*y1-y;}printf(" 球停止时球心所求位置为:(%.2f,%.2f).\n",x,y);}请确定球台边框(l,w): 180,120请确定球心开始位置(x,y): 35,40请确定球半径r: 5请确定射击角度b: 30请确定射击初速度v: 27请确定匀减速的加速度a: 6球停止时球心所求位置为:(87.61,70.37).40 守形数若正整数n是它平方数的尾部,则称n为守形数,又称同构数。
例如,6是其平方数36的尾部,•76是其平方数5776的尾部,6与76都是守形数。
试求出指定区间[x,y]内所有守形数。
测试数据:(1) x=10,y=10000, 输出:(2) x=10000,y=1000000,输出:1. 常规求解(1) 设计要点对指定范围[x,y]内的每一个整数a(约定a>1),求出其平方数s;计算a的位数w,同时计算b=10^w,a的平方s的尾部c=s%b;比较a,c,若a=c则输出守形数。
(2)程序实现// 求[x,y]内的守形数#include<stdio.h>void main(){long int a,b,c,k,s,x,y;printf(" 求区间[x,y]中的守形数.");printf(" 请输入整数x,y:");scanf("%ld,%ld",&x,&y);for(a=x;a<=y;a++){ s=a*a; // 计算a的平方数sb=1;k=a;while(k>0){b=b*10;k=k/10;}c=s%b; // c为a的平方数s的尾部if(a==c)printf("%ld^2=%ld \n",a,s);}}(3)程序运行结果求区间[x,y]中的守形数.请输入整数x,y:10,1000025^2=62576^2=5776376^2=141376625^2=3906259376^2=879093762. 探索n位守形数(1) 求解要点为了求更多位数的守形数,可应用守形数的性质:一个m位守形数的尾部m-1位数也是一个守形数。
道理很简单,a是一个m位数,a的平方数尾部的m-1位仅由a的尾部m-1位决定而与a的其他位无关。
实施易知一位守形数有三个:1,5,6。
则二位守形数的个位数字只可能是1,5,6这三个数字。
根据这一思路,我们可应用递推求出多位守形数。
(2) 程序设计// 求n位守形数#include<stdio.h>void main(){ int n,d,k,j,i,t,m,w,z,u,v,a[500],b[500],c[500];printf("n=");scanf("%d",&n);for(d=1;d<=9;d++){for(k=1;k<=500;k++){a[k]=0;b[k]=0;c[k]=0;}a[1]=d; // 给个位数赋值for(k=2;k<=n;k++){for(j=0;j<=9;j++){a[k]=j;v=0;for(i=1;i<=k;i++) c[i]=0; // 探索a(k)for(i=1;i<=k;i++){for(z=0,t=1;t<=k;t++){u=a[i]*a[t]+z;z=u/10;b[i+t-1]=u%10; // 计算平方}for(w=0,m=i;m<=k;m++){u=c[m]+b[m]+w;w=u/10;c[m]=u%10;}}for(i=1;i<=k;i++)if(a[i]!=c[i]) v=1;if(v==0) break;}}if(v==0 && a[n]!=0) // 输出n位守形数结果{printf(" %d结尾的%d守形数: ",a[1],n);for(k=n;k>=1;k--)printf("%d",a[k]);printf("\n");}}}(3)程序运行示例运行程序,输入n=30,得30位守形数5结尾的30守形数: 1066199773922562599182128906256结尾的30守形数: 893380022607743740081787109376 41 奇数序列运算式在由指定相连奇数组成的序列的每相邻两项中插入运算符号:若相邻两项都是合数,则两项中插入“-”号;若相邻两项一项合数一项素数,则两项中插入“+”号;若相邻两项都是素数,则两项中插入乘号“*”号;输入奇数b,c(b<c),完成[b,c]中奇数序列的运算式,并计算该式的运算结果。