![计算机程序设计训练(东北石油大学)_第1页](http://file4.renrendoc.com/view/36779ecda61d38b7bb5a7929eeeed583/36779ecda61d38b7bb5a7929eeeed5831.gif)
![计算机程序设计训练(东北石油大学)_第2页](http://file4.renrendoc.com/view/36779ecda61d38b7bb5a7929eeeed583/36779ecda61d38b7bb5a7929eeeed5832.gif)
![计算机程序设计训练(东北石油大学)_第3页](http://file4.renrendoc.com/view/36779ecda61d38b7bb5a7929eeeed583/36779ecda61d38b7bb5a7929eeeed5833.gif)
![计算机程序设计训练(东北石油大学)_第4页](http://file4.renrendoc.com/view/36779ecda61d38b7bb5a7929eeeed583/36779ecda61d38b7bb5a7929eeeed5834.gif)
![计算机程序设计训练(东北石油大学)_第5页](http://file4.renrendoc.com/view/36779ecda61d38b7bb5a7929eeeed583/36779ecda61d38b7bb5a7929eeeed5835.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE东北石油大学计算机程序设计训练院系院系电气信息工程学院专业班级测控**学生姓名***学生学号***指导教师段志伟、曹广华2014年6月28日
程序设计训练任务书课程C计算机程序设计训练专业测控姓名***学号***主要内容:【程序1】题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。【程序2】题目:文件操作,要求以二进制方式打开命令行参数中指定的文件,并将二进制方式读取的文件数据(0和1)存储为文本文件,即文件内容是ASCII的0与1方式。【程序3】题目:空间直角坐标系变换程序,在空间直角坐标系中,如果保持原点不动,x轴偏转度,y轴偏转度,求z轴偏转的角度以及z轴在原坐标系中XY平面的投影.【程序4】题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。【程序5】题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。【程序6】题目:要求设计一个程序对从键盘输入一个字符串str,str长度小于99,然后在屏幕打印出一个新字符串,新字符串的构成为AABB10strXCCDD,其中AABB和CCDD是开始标志和结束标志,第5、6位是字符串str的长度,X是整个字符串的逻辑异或结果。【程序7】题目:要求设计一个程序提取程序6的输出字符串中的内容,并打印到屏幕上。【程序8】题目:使用递归方式求解hanoi塔问题。【程序9】题目:设计两个链表,分别输入2个和3个数据,然后连接两个链表,采用搜索的方式找出链表中最大值与最小值。【程序10】题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?【程序11】题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以!结束。【程序12】题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。基本要求:至少完成10个程序,程序运行结果正确程序可读性好,要有注释所有程序完成后,统一保存为.c文件,用winrar压缩后发送到邮箱dqzly@163.com撰写训练报告,7月10日交到自动化馆104完成期限201*年7月1**号指导教师***201*年6月**日计算机程序设计训练PAGE12目录[程序1] 2[程序2] 3[程序3] 5[程序4] 6[程序5] 7[程序6] 8[程序7] 9[程序8] 11[程序9] 12[程序10] 13[程序1]题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。思路:随机产生一个数组再排好顺序,输入一个数与原数组中的数作比较,符合条件的数后面的数都往后移动一个位置,空出一个位置留给输入的数.再输出.程序:#include<stdio.h>#include<stdlib.h>#include<time.h>main(){intn,a[100],i,j,t;srand(time(0));for(i=0;i<10;i++)a[i]=rand()%100+1;//随机产生十个数for(i=0;i<9;i++)//排序for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}for(i=0;i<10;i++)printf("%5d",a[i]);//输出printf("\n");scanf("%d",&n);for(i=0;i<10;i++)if(n<a[i])break;//将n与数组中的数作比较当n小于数组中的数时打断循环for(j=10;j>i;j--)//将大于n的数往后移一个位置a[j]=a[j-1];a[j]=n;//将n插入空位中printf("\n");for(i=0;i<11;i++)//输出printf("%5d",a[i]);printf("\n");}运行截图:[程序2]题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。思路:先把人数按顺序排好,然后存入数组中,然后将数组中的数据按123循环排列,最后将数组中的3好去处,把最后一位此时的顺序输出。程序:程序:#include<stdio.h>main(){intn,i,k,m,a[100]; //定义所需变量int*p;p=a;printf("请输入人数:");scanf("%d",&n);for(i=0;i<n;i++) //在数组a中存放人数a[i]=i+1;i=0;k=0;m=0;while(m<n-1){if(a[i]!=0)k++; //对数组a中的数以1,2,3循环排列if(k==3) //将a中为3的去除{a[i]=0;k=0;m++;}i++;if(i==n)i=0;}while(!(*p))p++;printf("最后留下的是原来第%d号的那位\n",*p);}运行截图:[程序3]题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。思路:用fun求出字符串的字符个数并作为返回值,在主函数中输入字符串并调用fun。程序:#include<stdio.h>intfun(chara[]){inti;for(i=0;a[i]!='\0';i++);//计算字符串a中的字符总数returni;}main(){chara[100];intk;gets(a);k=fun(a);//调用函数funprintf("%d\n",k);//输出}运行截图:[程序4]题目:要求设计一个程序对从键盘输入一个字符串str,str长度小于99,然后在屏幕打印出一个新字符串,新字符串的构成为AABB10strXCCDD,其中AABB和CCDD是开始标志和结束标志,第5、6位是字符串str的长度,X是整个字符串的逻辑异或结果。思路:先定义字符串,然后将输入数据存放到字符串中,运用循环体函数求出字符串函数中字符的个数程序:#include<stdio.h>#include<string.h>#include<stdlib.h>main(){charstr[99];//定义字符串inti,n,x;n=0;gets(str);for(i=0;str[i]!='\0';i++)//求出字符串中字符的个数{n++;x=str[i]^str[i+1];}printf("AABB%d",n);for(i=0;str[i]!='\0';i++)printf("%c",str[i]);printf("%dCCDD\n",x);}运行截图:[程序5]题目:要求设计一个程序提取程序6的输出字符串中的内容,并打印到屏幕上。思路:运用fofen函数将文件以只读方式打开,然后用putchar将字符串输出。程序:#include<stdio.h>#include<stdlib.h>main(){charch;FILE*fp;if((fp=fopen("tca.txt","r"))==NULL){printf("bunengdakaitca.txt!\n");exit(0);//验证文件是否能够打开}elseprintf("chenggong!\n");ch=fgetc(fp);//读取文件的内容while(ch!=EOF){putchar(ch);ch=fgetc(fp);}//输出内容putchar('\n');fclose(fp);}运行截图:[程序6]题目:使用递归方式求解hanoi塔问题。思路:运用递归法,先将64个盘子转换为63个盘子和一个盘子,再将A塔上的63个圆盘借助C塔,移到B塔上;再将A塔上最后的一个盘子移到C塔上;最后将B塔上的63个盘子,借助A塔,移到C塔上。同理,移动63个盘子的问题转化为移动62个盘子的问题,以此类推,直到结束。程序:#include<stdio.h>main(){voidHN(intn,chara,charb,charc);intm;printf("请输入盘子个数:");//输入数据scanf("%d",&m);printf("%d个盘子移动的步骤如下:\n",m);HN(m,'A','B','C');}voidHN(intn,chara,charb,charc){if(n==1)printf("from%cto%c\n",a,c);else{HN(n-1,a,c,b);//借助c将a移到bprintf("from%cto%c\n",a,c);HN(n-1,b,a,c);//借助a将b移到c}}运行截图:[程序7]题目:设计两个链表,分别输入2个和3个数据,然后连接两个链表,采用搜索的方式找出链表中最大值与最小值。思路:将两组数据分别存入到两个数组之中,然后将第二个链表的首接到第一个链表的尾,然后比较出最大值与最小值,输出结果。程序:#include<stdio.h">#include<malloc.h>#definestrstructstdstr{intnum;str*next;};//定义结构体函数str*fun(intn){intk;str*p1,*end,*head;//定义列表的头指针,尾指针printf("shuju:\n");for(k=0;k<n;k++){p1=(str*)malloc(sizeof(str));scanf("%d",&p1->num);p1->next=NULL;if(k==0){head=p1;end=p1;}else{end->next=p1;end=p1;}}return(head);}main(){str*head,*head1,*head2,*p1,*p2;intn,max,min;head1=fun(2);//调用结构体函数head2=fun(3);//调用结构体函数p1=head1;head=head1;p2=head;while(p1->next!=NULL){p1=p1->next;p2->next=p1;p2=p1;}p1=head2;p2->next=p1;//将第二个链表的头接到第一个链表的尾部while(p1->next!=NULL){p1=p1->next;p2->next=p1;p2=p1;}p1=head;max=min=p1->num;while(p1->next!=NULL)//判断新链表中的最大值与最小值{p1=p1->next;if(p1->num<min)min=p1->num;if(p1->num>max)max=p1->num;}printf("max=%d,min=%d\n",max,min);//输出结果}运行截图:[程序8]题目:题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?思路:假如原来有a个桃子第1只猴子拿完后剩(a-1)4/5,第五只拿玩后至少要大于等于4,解不等式《【{[(a-1)4/5-1]4/5-1}4/5-1】4/5-1》4/5>=4求出a循环结束程序:#include<stdio.h>main(){ints,i,x,flag=1;for(s=6;flag;s++)//限定循环条件{for(x=s,i=1;flag&&i<=5;i++)//将现在的桃子分成5份if((x-1)%5==0)x=4*(x-1)/5;elseflag=0;if(flag)break;//判断flag的值,为1循环停止elseflag=1;}printf("%d\n",s);}运行截图:[程序9]题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以!结束。思路:首先用getchar函数向文件“test.Txt”中输入字符串,再将字符串中的小写字符转换为大写字符。程序:#include<stdio.h>main(){charc,str[100];inti=0;FILE*fp=fopen("test.txt","w");//向文件text中写入数据c=getchar();while(c!='!'){if(c>='a'&&c<='z')c-=32;//将小写的字符转化为大写的字符str[i]=c;i++;c=getchar();}str[i]='\0';fputs(str,fp);//向文件中写入转化后的字符fclose(fp);}运行截图:[程序10]题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。思路:首先用fopen函数,以只读的形式打开A文件,并将A文件的字符输入到字符串ch中,同理将B文件的字符输入到ch字符串中。然后将ch字符串中的字符以顺序排好,最后将将字符串的数据写入到c文件中,关闭文件。程序:#include<stdio.h>#include<stdlib.h>intcomp(constvoid*a,constvoid*b){return*(char*)a-*(char*)b;}main(){FILE*fp;inti,j,n,ni;chart,ch;charc[512]={0};if((fp=fopen("A.txt","r"))==NULL){return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年赡养老人专项附加扣除协议模板
- 2025年专业版的婚前财产协议
- 2025年购房贷营销推广服务战略合作协议
- 2025年分家协议书模板4人
- 2025年合同债务转让协议分析
- 2025年世界商标联合与发展策略协议
- 2025年劳务免责协议书
- 2025年再婚家庭抚养协议范本
- 2025年企业研发用房租赁协议范本
- 2025年化工产品购销合同样本
- 2025年业务员工作总结及工作计划模版(3篇)
- 必修3《政治与法治》 选择题专练50题 含解析-备战2025年高考政治考试易错题(新高考专用)
- 2024年连云港市赣榆区区属国企对外招聘笔试真题
- 海南省海口市2024-2025学年八年级上学期期末考试数学试题(含答案)
- 二零二五版电商企业兼职财务顾问雇用协议3篇
- 课题申报参考:流视角下社区生活圈的适老化评价与空间优化研究-以沈阳市为例
- 2025江西吉安市新庐陵投资发展限公司招聘11人高频重点提升(共500题)附带答案详解
- 深圳2024-2025学年度四年级第一学期期末数学试题
- 17J008挡土墙(重力式、衡重式、悬臂式)图示图集
- 道教系统诸神仙位宝诰全谱
- 双钢板组合剪力墙工法
评论
0/150
提交评论