C程序设计报告.doc

上传人:星星 文档编号:1077656 上传时间:2024-04-13 格式:DOC 页数:27 大小:292.50KB
下载 相关 举报
C程序设计报告.doc_第1页
第1页 / 共27页
C程序设计报告.doc_第2页
第2页 / 共27页
C程序设计报告.doc_第3页
第3页 / 共27页
C程序设计报告.doc_第4页
第4页 / 共27页
C程序设计报告.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、东北石油大学计算机程序设计训练院 系 电气信息工程学院 专业班级 学生姓名 学生学号 指导教师 2011年7月8日程序设计训练任务书课程 C计算机程序设计训练专业 姓名 学号 主要内容:【程序 1】题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。【程序2】题目:文件操作,要求以二进制方式打开命令行参数中指定的文件,并将二进制方式读取的文件数据(0和1)存储为文本文件,即文件内容是ASCII的0与1方式。【程序 3】题目:空间直角坐标系变换程序,在空间直角坐标系中,如果保持原点不动,x轴偏转度,y轴偏转度,求z轴偏转的角度以及z轴在原坐标系中XY平面的投影.【程序 4

2、】题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。【程序 5】题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。【程序 6】题目:要求设计一个程序对从键盘输入一个字符串str,str长度小于99,然后在屏幕打印出一个新字符串,新字符串的构成为AABB10strXCCDD,其中AABB和CCDD是开始标志和结束标志,第5、6位是字符串str的长度,X是整个字符串的逻辑异或结果。【程序 7】题目:要求设计一个程序提取程序6的输出字符串中的内容,并打印到屏幕上。【程序 8】题目:使用递归方式求解

3、hanoi塔问题。【程序 9】题目:设计两个链表,分别输入2个和3个数据,然后连接两个链表,采用搜索的方式找出链表中最大值与最小值。【程序10】题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?【程序11】题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以!结束。 【程序12】题目:有两个磁盘文件A和B,各存

4、放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。基本要求:1. 程序运行结果正确2. 程序可读性好,要有注释3. 发送所有完成程序到老师邮箱4. 撰写训练报告5. 至少完成10个程序完成期限 2010年7月8号 指导教师 2011年6 月12日计算机程序设计训练目 录程序12程序24程序35程序46程序57程序68程序79程序810程序911程序101224程序1题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。思路:把插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到

5、该元素为止,逐个后移一个单元。最后把插入数赋予元素i。开始程序流程图:输出ai;i+将aj赋值给aj+1;break跳出循环j-j大于等于ij赋值为9i小于等于9代入循环for(i=0;iai,如果i9定义变量i,j,n,数组a10;对n赋值,代入循环for(i=0;i9;i+) 否 是 否 是 否 是结束程序:#include stdio.hmain() int i,j,n,a10=90,80,70,60,50,40,30,20,10; scanf(%d,&n); for(i=0;iai) for(j=9;j=i;j-) aj+1=aj; break; ai=n; for(i=0;i=9;i

6、+) printf(%d ,ai); printf(n);运行截图:、程序2题目:文件操作,要求以二进制方式打开命令行参数中指定的文件,并将二进制方式读取的文件数据(0和1)存储为文本文件,即文件内容是ASCII的0与1方式。思路:定义变量和函数,建立两个文件,一个输入十进制数,经函数转换后输入另一个文件,输出结果。程序流程图:开始定义变量i=7,j;函数fun定义各种变量*fp1,*fp2;char b;int j;以二进制方式读取,打开文件A;以写的方式打开文件B;!feof(fp1)在fp2输出aj;j+;调用函数funfread(&b,sizeof(char),1,fp1); 否 是进

7、入循环for(j=0;j8;j+)j=0;i-) ai=j%2; j=j/2; return; main() FILE *fp1,*fp2;char b;int j; fp1=fopen(C:A.txt,rb); fp2=fopen(C:B.txt,w); while (!feof(fp1) fread(&b,sizeof(char),1,fp1); fun(b); for(j=0;j8;j+) fprintf(fp2,%d,aj); fclose(fp1);fclose(fp2);运行截图:此处附运行图(从计算机屏幕直接截取,首先将运行窗口属性改为白底黑字,然后按prtScn键,在画图中粘贴

8、后剪切所需部分粘贴到此处)程序1程序3题目:要求设计一个程序对从键盘输入一个字符串str,str长度小于99,然后在屏幕打印出一个新字符串,新字符串的构成为AABB10strXCCDD,其中AABB和CCDD是开始标志和结束标志,第5、6位是字符串str的长度,X是整个字符串的逻辑异或结果。思路:定义变量和字符数组,建立循环计算长度,以AABB和CCDD是开始标志和结束标志,输入字符串,经循环后输出结果。程序流程图:结束开始以%dCCDDn形式输出x;stri!=0以AABB%d形式输出n;stri!=0定义各种变量charstr99;int i,j,k;n=0;进入循环for(i=0;str

9、i!=0;i+;) 否 是将x赋为stristri+1;n+; i+;进入循环for(i=0;stri!=0;i+;) 否 是输出stri;i+程序:#include stdio.h#include string.h#include stdlib.hmain() char str99; int i,n,x; n=0; gets(str); for(i=0;stri!=0;i+) n+; x=stristri+1; printf(AABB%d,n); for(i=0;stri!=0;i+) printf(%c,stri); printf(%dCCDDn,x);运行截图:此处附运行图(从计算机屏幕

10、直接截取,首先将运行窗口属性改为白底黑字,然后按prtScn键,在画图中粘贴后剪切所需部分粘贴到此处)程序1程序4题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。思路:定义变量,输入总人数,把人当做变量,使用循环,n记录总人数,i记录号码。直到循环停止,得出结果。程序流程图:开始break跳出将ps赋为0;a-;将s赋为(s+1)%n将i赋为3如果ps=1printf(%dn,i+1);i+i小于等于3进入循环for(i=1;i=3;i+)将a赋为1return0;i+循环while(1)将a赋为n;s赋为0;i小于等

11、于n定义各种变量n,s,a,i,*p;输入数n;进入循环for(i=0;in;i+)进入循环for(i=0;in;i+) 否 是结束i小于等于n;输出i+1;把pj赋为1;否i+ 是i+; 否 是返回 0; 否 是 否 是 否将s赋为(s+1)%n;将i赋为i-1; 是 否 是程序:#includeint main() int n,s,a,i,*p; printf(n:); scanf(%d,&n); p=s; for(i=0;in;i+) pi=1; a=n; s=0; while(1) if(a=1) break; for(i=1;i=3;i+) if(ps=1) if(i=3) ps=0

12、;a-; s=(s+1)%n;else s=(s+1)%n;i=i-1; for(i=0;in;i+) if(pi=1) printf(%dn,i+1); return 0;运行截图:程序5题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。思路:定义一指针变量,在主函数上定义一字符数组,输入字符串,在调用函数完成循环。开始程序流程图:定义各种变量int i=0;*p;函数fun;定义字符串长度char p500;调用函数fun输出fun(p)返回 0;结束程序:#include int fun(char *p) int i=0; while(*p) p+;i+;

13、return i;main() char p500; gets(p); printf(%dn,fun(p); return 0;运行截图:程序6题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。开始思路:建立三个文件A,B,C,在A,B中输入字符串,通过文件函数连接文件,在循环中相互比较,最后在C中输出。程序流程图:在C中写入(ci,fp);i+;i小于n令i=0printf(n C file is:n);i+交换值t=ci;ci=cj;cj=t;如果cicji小于n令i=0关闭(fp);令i=m关闭(fp);fclose(fp)

14、;i+打开文件A,B,C; 令i=0;定义各种变量*fp;i,j,n,m; char c300,t,ch;如果(ch=fgetc(fp)!=EOF 否 是将ci赋为ch;i+;如果(ch=fgetc(fp)!=EOF 否 是将ci赋为ch; i+ 否 是 否 是 否 是 结束程序:main() FILE *fp;int i,j,n,m;char c300,t,ch;fp=fopen(c:A.txt,w);printf(“nplease input a stringn);gets(c);fputs(c,fp);fclose(fp); fp=fopen(c:B.txt,w);printf(plea

15、se input a stringn);gets(c);fputs(c,fp);fclose(fp);fp=fopen(c:A.txt,r);printf(n A nei rong are :n);for(i=0;(ch=fgetc(fp)!=EOF;i+)ci=ch;putchar(ci);fclose(fp);m=i; fp=fopen(c:B.txt ,r)printf(n B nei rong are :n);for(i=m;(ch=fgetc(fp)!=EOF;i+)ci=ch;putchar(ci);fclose(fp);n=i;for(i=0;in;i+)for(j=i+1;jc

16、j)t=ci;ci=cj;cj=t;printf(n C file is:n);fp=fopen(c: C.txt ,w);for(i=0;i=a&stri=a&striC;否则移动A,B,C,输出结果。程序流程图:以move函数移动hanoi(n-1,A,C,B);以move函数移动hanoi(n-1,B,A,C);移动A到C;输出结果开始定义各种变量char x,char y;int n;输出move函数,x移动到y;令n=1否是输入n;结束程序:void move(char x,char y) printf(%c-%cn,x,y); hanoi(int n,char A,char B,c

17、har C) if (n=1)move(A,C); else hanoi(n-1,A,C,B); move(A,C); hanoi(n-1,B,A,C); main() int n; printf(n:); scanf(%d,&n); printf(move%3dn,n); hanoi(n,A,B,C);运行截图:此处附运行图(从计算机屏幕直接截取,首先将运行窗口属性改为白底黑字,然后按prtScn键,在画图中粘贴后剪切所需部分粘贴到此处)程序1程序9题目:设计两个链表,分别输入2个和3个数据,然后连接两个链表,采用搜索的方式找出链表中最大值与最小值。思路:定义变量,建立两个链表,通过文件函数

18、相连,再通过函数循环,输出结果。开始程序流程图:定义变量str *head,*head1,*head2,*p1,*p2end-next=p1;end=p1;head=p1;end=p1;如果k=0p1=(str*)malloc(sizeof(str);返回 head;k+如果k小于n令k=0定义变量int k; p1-next!=NULL 是 否p1=p1-next; 否 是p1=head2;p2-next=p1;p1-next!=NULL 否 否 是 是 p1=p1-next;p2-next=p1;p2=p1;令p1=head;Min=p1num;Max=p1-num;p1-nummaxp1

19、-numnext;printf(max=%d,min=%dn,max,min);p1-numnummax把p1-next赋值给p1;否p1-next!=NULL 是否 是将min赋为p1-num;否输出,max,min;是结束 将max赋为p1-num; 程序:#include stdio.h#include #define str struct stdstr int num; str *next; str *fun(int n) int k; str *p1,*end,*head; printf(shu ju:n); for(k=0;knum); p1-next=NULL; if(k=0)

20、head=p1;end=p1; else end-next=p1;end=p1; return(head); main() str *head,*head1,*head2,*p1,*p2; int n,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; ma

21、x=min=p1-num; while(p1-next!=NULL) p1=p1-next; if(p1-numnum; if(p1-nummax) max=p1-num; printf(max=%d,min=%dn,max,min);运行截图:此处附运行图(从计算机屏幕直接截取,首先将运行窗口属性改为白底黑字,然后按prtScn键,在画图中粘贴后剪切所需部分粘贴到此处)程序1程序10题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第

22、三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?思路:定义循环变量,从最少来看,最后的猴子分桃时桃数应为6,且为上一次的数减一后的五分之一,递归循环后,输出结果。程序流程图:开始 结束break 跳出;输出s;s+;将flag赋为1;flagx=4*(x-1)/5; flag=0; i+;若flag&i=5将x赋为s,i赋为1flag将s赋为6;定义各种变量ints,i,x,flag=1; 否 是 否 是 否 是程序:#include stdio.hmain( ) int s,i,x,flag=1; for(s=6;flag;s+) for(x=s,i=1;flag&i=5;i+) if(x-1)%5=0) x=4*(x-1)/5; else flag=0; if(flag) break; else flag=1; printf(%dn, s);运行截图:此处附运行图(从计算机屏幕直接截取,首先将运行窗口属性改为白底黑字,然后按prtScn键,在画图中粘贴后剪切所需部分粘贴到此处)计算机程序设计训练评分表

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922