一些经典CC++程序源码.docx

上传人:b****5 文档编号:6790665 上传时间:2023-01-10 格式:DOCX 页数:11 大小:21.51KB
下载 相关 举报
一些经典CC++程序源码.docx_第1页
第1页 / 共11页
一些经典CC++程序源码.docx_第2页
第2页 / 共11页
一些经典CC++程序源码.docx_第3页
第3页 / 共11页
一些经典CC++程序源码.docx_第4页
第4页 / 共11页
一些经典CC++程序源码.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

一些经典CC++程序源码.docx

《一些经典CC++程序源码.docx》由会员分享,可在线阅读,更多相关《一些经典CC++程序源码.docx(11页珍藏版)》请在冰豆网上搜索。

一些经典CC++程序源码.docx

一些经典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<data<<"->";

PreOrder(T->lchild);

PreOrder(T->rchild);

}

}

voidInOrder(BiTnode*T)

{

if(T!

=NULL)

{

InOrder(T->lchild);

cout<data<<"->";

InOrder(T->rchild);

}

}

voidPostOrder(BiTnode*T)

{

if(T!

=NULL)

{

PostOrder(T->lchild);

PostOrder(T->rchild);

cout<data<<"->";

}

}

voidLevelOrder(BiTnode*T)

{BiTnode*ptr;

QueueQ;

if(T==NULL)return;

SetQueue(&Q,50);

QInsert(&Q,T);

while(!

QEmpty(&Q))

{ptr=QDelete(&Q);

cout<data<<"->";

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;qlength;q++)//为什么有的出现,有的不出现。

cout<

 cout<

}

voidOPage(Pageye)

for(intj=0;j

{cout<<"row:

"<<(j+1)<<"";

for(inti=0;ilength;i++)//为什么有的出现,有的不出现。

cout<

cout<

}

}

voidStastics(Pageye)

{ intzm=0,sz=0,kg=0,az=0,i=0;charc;

for(intj=0;j

{for(i=0;ilength;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;ilength;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;jlength;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;jlength;j++,k++)

   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;jlength;j++,k++)

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(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1