一些经典CC++程序源码.docx
- 文档编号:6790665
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:11
- 大小:21.51KB
一些经典CC++程序源码.docx
《一些经典CC++程序源码.docx》由会员分享,可在线阅读,更多相关《一些经典CC++程序源码.docx(11页珍藏版)》请在冰豆网上搜索。
一些经典CC++程序源码
一些经典C/C++程序源码
转自:
编程之道论坛
1、运动会分数统计**
任务:
参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
功能要求:
1).可以输入各个项目的前三名或前五名的成绩;
2).能统计各学校总分,
3).可以按学校编号、学校总分、男女团体总分排序输出;
4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:
输入数据形式和范围:
20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
2、订票系统
任务:
通过此系统可以实现如下功能:
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
订票:
(订票情况可以存在一个数据文件中,结构自己设定)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票:
可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
3、拓扑排序
任务:
编写函数实现图的拓扑排序。
4、迷宫求解
任务:
可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;
要求:
在上交资料中请写明:
存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;
5、文章编辑**
功能:
输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;
输入数据的形式和范围:
可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:
(1)分行输出用户输入的各行字符;
(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;
6、joseph环
任务:
编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。
一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。
设计一个程序来求出出列顺序。
要求:
利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。
测试数据:
m的初值为20,n=7,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?
要求:
输入数据:
建立输入处理输入数据,输入m的初值,n,输入每个人的密码,建立单循环链表。
输出形式:
建立一个输出函数,将正确的输出序列
7、猴子选大王**
任务:
一堆猴子都有编号,编号是1,2,3...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
要求:
输入数据:
输入m,nm,n为整数,n 输出形式: 中文提示按照m个猴子,数n个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能 8、建立二叉树,层序、先序遍历(用递归或非递归的方法都可以)** 任务: 要求能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列;分别建立建立二叉树存储结构的的输入函数、输出层序遍历序列的函数、输出先序遍历序列的函数; 9、赫夫曼树的建立 任务: 建立建立最优二叉树函数 要求: 可以建立函数输入二叉树,并输出其赫夫曼树 在上交资料中请写明: 存储结构、基本算法(可以使用程序流程图)、输入输出、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法; 10、纸牌游戏** 任务: 编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出: 这时正面向上的牌有哪些? 11、图的建立及输出 任务: 建立图的存储结构(图的类型可以是有向图、无向图、有向网、无向网,学生可以任选两种类型),能够输入图的顶点和边的信息,并存储到相应存储结构中,而后输出图的邻接矩阵。 要求: 头文件一 #include #include #include structBiTnode {chardata; BiTnode*lchild,*rchild; }; structQueue {BiTnode**data0; intmax; intfront,rear,size; }; voidSetQueue(Queue*Q,intn) {Q->data0=(BiTnode**)malloc(n*sizeof(BiTnode*)); if(Q->data0==NULL) {cout<<"overfilow.";exit (1); } Q->max=n;Q->front=0; Q->rear=0;Q->size=0; } voidFreeQueue(Queue*Q) {free(Q->data0);} voidQInsert(Queue*Q,BiTnode*item) {if(Q->size==Q->max){cout<<"Queueisfull."< (1);} Q->data0[Q->rear]=item; Q->rear=(Q->rear+1)%Q->max; Q->size++; } BiTnode*QDelete(Queue*Q) {BiTnode*item; if(Q->size==0) {cout<<"Deletingfromanemptyqueue! "< (1);} item=Q->data0[Q->front]; Q->front=(Q->front+1)%Q->max; Q->size--; returnitem; } intQEmpty(Queue*Q) {if(Q->size==0)return (1);return(0); } voidCreateBitree(BiTnode*&T) {charch; cin>>ch; if(ch=='/')T=NULL; else { if(! (T=(BiTnode*)malloc(sizeof(BiTnode)))) {cout<<"Allocationfailed."< (1);} T->data=ch; CreateBitree(T->lchild); CreateBitree(T->rchild); } } voidPreOrder(BiTnode*T) { if(T! =NULL) {cout< PreOrder(T->lchild); PreOrder(T->rchild); } } voidInOrder(BiTnode*T) { if(T! =NULL) { InOrder(T->lchild); cout< InOrder(T->rchild); } } voidPostOrder(BiTnode*T) { if(T! =NULL) { PostOrder(T->lchild); PostOrder(T->rchild); cout< } } voidLevelOrder(BiTnode*T) {BiTnode*ptr; QueueQ; if(T==NULL)return; SetQueue(&Q,50); QInsert(&Q,T); while(! QEmpty(&Q)) {ptr=QDelete(&Q); cout< if(ptr->lchild! =NULL) QInsert(&Q,ptr->lchild); if(ptr->rchild! =NULL) QInsert(&Q,ptr->rchild); } FreeQueue(&Q); } voidBiTreeTraverse() { BiTnode*T; charj; intflag=1; cout<<"***************本程序实现二叉树遍历的操作***************"< cout< cout<<"按先序遍历来构造二叉树: "< printf("例如: a/b/c/d//(回车)\n");CreateBitree(T); //初始化队列 while(flag) { cout< cout<<" 请选择: "< <<" ┌──────────┐"< <<" │ 1.递归先序遍历 │"< <<" │ 2.递归中序遍历 │"< <<" │ 3.递归后序遍历 │"< <<" │ 4.非递归层序遍历│"< <<" │ 0.退出程序 │"< <<" └──────────┘"< cin>>j; switch(j) { case'1': if(T) { cout<<"递归先序遍历二叉树: "< PreOrder(T); cout< } elsecout<<"二叉树为空! "< break; case'2': if(T) { cout<<"递归中序遍历二叉树: "< InOrder(T); cout< } elsecout<<"二叉树为空! "< break; case'3': if(T) { cout<<"递归后序遍历二叉树: "< PostOrder(T); cout< } elsecout<<"二叉树为空! "< break; case'4': if(T) { cout<<"非递归层序遍历二叉树: "< LevelOrder(T); cout< } elsecout<<"二叉树为空! "< break; default: flag=0;cout<<"程序运行结束,按任意键退出! "< } } } 头文件二 //猴子选大王 #include #include voidJosephus(intn,intm) {inti,j,*p; p=(int*)malloc(n*sizeof(int)); for(i=0;i p=i+1; i=0; while(n>1) {i=(i+m-1)%n; printf("del%d\n",p); for(j=i+1;j p[j-1]=p[j]; n--; if(i==n)i=0; } printf("King! %d\n",p[0]); } voidMonkeyking() {intn,count; printf("请问您,这个猴子群有多少只: "); scanf("%d",&n); printf("\n猴子们随机抽取的数为: "); scanf("%d",&count); printf("\n猴子选大王开始了: \n"); Josephus(n,count); } 头文件三 //文章编辑**** #include #include #include structRow {char*rbase; intlength; }; structPage {Row*pbase; intn; }; //创建一页文章。 voidCString(Row&R,intlength) {R.rbase=(char*)malloc(length*sizeof(char));R.length=length; cout<<"请输入字符串: "; for(inti=0;i {charc;cin>>c;R.rbase=c;} } voidCPage(Page&ye,intlength,intn) {ye.pbase=(Row*)malloc(n*sizeof(Row));ye.n=n;//还需附加分配不成功等条件 for(intj=0;j {ye.pbase[j].rbase=(char*)malloc(length*sizeof(char));//还需附加分配不成功等条件 if(! ye.pbase[j].rbase)cout<<"Allocationfailed."< cout<<"huale."< for(j=0;j for(inti=0;i {charnote;cin>>note; ye.pbase[j].rbase=note; if(note=='$')for(;i if(note=='#')for(j++;j }cout<<"huale."< for(intp=0;p {cout<<"row"<<(p+1)<<""; for(intq=0;q cout< cout< } voidOPage(Pageye) { for(intj=0;j {cout<<"row: "<<(j+1)<<""; for(inti=0;i cout< cout< } } voidStastics(Pageye) { intzm=0,sz=0,kg=0,az=0,i=0;charc; for(intj=0;j {for(i=0;i {c=ye.pbase[j].rbase; if(c=='')kg++; elseif((int)c>64&&(int)c<91||((int)c>96&&(int)c<123))zm++; elseif((int)c>47&&(int)c<58)sz++; } } az=i*j-kg;//为什么i是未定义的,而j不是 cout<<"全部字母个数为: "< <<"全部数字个数为: "< <<"空格数 为: "< <<"总字数 为 "< } voidStasString(Pagep,Rows) { intm=0;intk=0;charc; for(intj=0;j for(inti=0;i {c=p.pbase[j].rbase; if(c! =s.rbase[k])k=0; elsek++; if(k==s.length){m++;}//考虑重叠情况for(k--;k! =0;k--,j--); } cout<<"所给串在文章中出现的次数为: "< } voidDelString(Page&p,intm,Rows) {if(s.length<1||s.length>p.pbase->length||m<1||m>p.n)cout<<"你的输入有误,请仔细看提示."< else { intk=0,temp;charc;cout<<"jinxingceshi."< for(intj=0;j { c=p.pbase[m-1].rbase[j];//m-1才是正确的行 if(c! =s.rbase[k])k=0; elsek++;cout<<"k值: "< if(k==s.length) {cout<<"确实存在此字符串."< temp=j+1-k;break;//inttemp=j-k;break;同样错误1 } } cout<<"I'mhere;"< Rowa;a.rbase=(char*)malloc((p.n-m+1)*(p.pbase->length-temp)*sizeof(char));a.length=(p.n-m+1)*(p.pbase->length-temp);//weizhi是a的长度,同样错误1 k=0; cout<<"I'mhere;"< for(inti=m-1;i { for(j=temp;j a.rbase[k]=p.pbase.rbase[j]; j=0; }cout<<"I'mhere;"< for(k=0;k for(;k for(i=m-1,k=0;i {for(j=temp;j p.pbase.rbase[j]=a.rbase[k];j=0;}cout<<"I'mhere;"< OPage(p);//可以调用函数0page(p); } } voidSave(PageP)//new {fstreamoutfile; outfile.open("information.dat",ios: : out|ios: : binary); if(! outfile) {cout<<"information.datcan'topen.\n"; abort(); } for(inti=0;i outfile.write(P.pbase.rbase,sizeof(P.pbase.rbase)); outfile.close(); } voidRead(Page&P) {fstreaminfile,outfile; infile.open("information.dat",ios: : in|ios: : binary); if(! infile) {cout<<"information.datcan'topen.\n"; abort(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一些 经典 CC 程序 源码
![提示](https://static.bdocx.com/images/bang_tan.gif)