一些经典CC++程序源码Word文件下载.docx
《一些经典CC++程序源码Word文件下载.docx》由会员分享,可在线阅读,更多相关《一些经典CC++程序源码Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
退票:
可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
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
中文提示按照m个猴子,数n个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能
8、建立二叉树,层序、先序遍历(用递归或非递归的方法都可以)**
要求能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列;
分别建立建立二叉树存储结构的的输入函数、输出层序遍历序列的函数、输出先序遍历序列的函数;
9、赫夫曼树的建立
任务:
建立建立最优二叉树函数
可以建立函数输入二叉树,并输出其赫夫曼树
在上交资料中请写明:
存储结构、基本算法(可以使用程序流程图)、输入输出、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;
10、纸牌游戏**
编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;
然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;
然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;
...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:
这时正面向上的牌有哪些?
11、图的建立及输出
建立图的存储结构(图的类型可以是有向图、无向图、有向网、无向网,学生可以任选两种类型),能够输入图的顶点和边的信息,并存储到相应存储结构中,而后输出图的邻接矩阵。
头文件一
#include<
iostream.h>
stdio.h>
stdlib.h>
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;
front=0;
rear=0;
size=0;
voidFreeQueue(Queue*Q)
{free(Q->
data0);
voidQInsert(Queue*Q,BiTnode*item)
{if(Q->
size==Q->
max){cout<
Queueisfull."
endl;
data0[Q->
rear]=item;
rear=(Q->
rear+1)%Q->
max;
size++;
BiTnode*QDelete(Queue*Q)
{BiTnode*item;
size==0)
Deletingfromanemptyqueue!
item=Q->
data0[Q->
front];
front=(Q->
front+1)%Q->
size--;
returnitem;
intQEmpty(Queue*Q)
size==0)return
(1);
return(0);
voidCreateBitree(BiTnode*&
T)
{charch;
cin>
>
ch;
if(ch=='
/'
)T=NULL;
else
{
if(!
(T=(BiTnode*)malloc(sizeof(BiTnode))))
Allocationfailed."
T->
data=ch;
CreateBitree(T->
lchild);
rchild);
voidPreOrder(BiTnode*T)
if(T!
=NULL)
T->
data<
->
PreOrder(T->
voidInOrder(BiTnode*T)
InOrder(T->
cout<
voidPostOrder(BiTnode*T)
PostOrder(T->
voidLevelOrder(BiTnode*T)
{BiTnode*ptr;
QueueQ;
if(T==NULL)return;
SetQueue(&
Q,50);
QInsert(&
Q,T);
while(!
QEmpty(&
Q))
{ptr=QDelete(&
Q);
ptr->
if(ptr->
lchild!
QInsert(&
Q,ptr->
rchild!
rchild);
FreeQueue(&
voidBiTreeTraverse()
BiTnode*T;
charj;
intflag=1;
cout<
***************本程序实现二叉树遍历的操作***************"
按先序遍历来构造二叉树:
printf("
例如:
a/b/c/d//(回车)\n"
);
CreateBitree(T);
//初始化队列
while(flag)
{
cout<
请选择:
"
endl
<
┌──────────┐"
│
1.递归先序遍历
│"
2.递归中序遍历
3.递归后序遍历
4.非递归层序遍历│"
0.退出程序
└──────────┘"
cin>
j;
switch(j)
case'
1'
:
if(T)
递归先序遍历二叉树:
PreOrder(T);
}
elsecout<
二叉树为空!
break;
2'
递归中序遍历二叉树:
InOrder(T);
3'
递归后序遍历二叉树:
PostOrder(T);
4'
非递归层序遍历二叉树:
LevelOrder(T);
default:
flag=0;
程序运行结束,按任意键退出!
头文件二
//猴子选大王
voidJosephus(intn,intm)
{inti,j,*p;
p=(int*)malloc(n*sizeof(int));
for(i=0;
i<
n;
i++)
p=i+1;
i=0;
while(n>
1)
{i=(i+m-1)%n;
printf("
del%d\n"
p);
for(j=i+1;
j<
j++)
p[j-1]=p[j];
n--;
if(i==n)i=0;
}
King!
%d\n"
p[0]);
voidMonkeyking()
{intn,count;
请问您,这个猴子群有多少只:
scanf("
%d"
&
n);
\n猴子们随机抽取的数为:
count);
\n猴子选大王开始了:
\n"
Josephus(n,count);
头文件三
//文章编辑****
fstream.h>
structRow
{char*rbase;
intlength;
structPage
{Row*pbase;
intn;
//创建一页文章。
voidCString(Row&
R,intlength)
{R.rbase=(char*)malloc(length*sizeof(char));
R.length=length;
请输入字符串:
for(inti=0;
length;
{charc;
c;
R.rbase=c;
voidCPage(Page&
ye,intlength,intn)
{ye.pbase=(Row*)malloc(n*sizeof(Row));
ye.n=n;
//还需附加分配不成功等条件
for(intj=0;
{ye.pbase[j].rbase=(char*)malloc(length*sizeof(char));
if(!
ye.pbase[j].rbase)cout<
ye.pbase[j].length=length;
huale."
//进行测试
for(j=0;
{charnote;
note;
ye.pbase[j].rbase=note;
if(note=='
$'
)for(;
i++)ye.pbase[j].rbase='
'
//这个地方还不行
#'
)for(j++;
j++)ye.pbase[j].rbase='
}cout<
//测试
for(intp=0;
p<
ye.n;
p++)
row"
(p+1)<
for(intq=0;
q<
ye.pbase->
q++)//为什么有的出现,有的不出现。
ye.pbase[p].rbase[q];
voidOPage(Pageye)
{
row:
(j+1)<
i++)//为什么有的出现,有的不出现。
ye.pbase[j].rbase;
voidStastics(Pageye)
intzm=0,sz=0,kg=0,az=0,i=0;
charc;
{for(i=0;
{c=ye.pbase[j].rbase;
if(c=='
)kg++;
elseif((int)c>
64&
&
(int)c<
91||((int)c>
96&
123))zm++;
47&
58)sz++;
az=i*j-kg;
//为什么i是未定义的,而j不是
全部字母个数为:
zm<
全部数字个数为:
sz<
空格数
为:
kg<
endl
总字数
为
az<
voidStasString(Pagep,Rows)
intm=0;
intk=0;
charc;
p.n;
p.pbase->
{c=p.pbase[j].rbase;
if(c!
=s.rbase[k])k=0;
elsek++;
if(k==s.length){m++;
}//考虑重叠情况for(k--;
k!
=0;
k--,j--);
所给串在文章中出现的次数为:
m<
voidDelString(Page&
p,intm,Rows)
{if(s.length<
1||s.length>
length||m<
1||m>
p.n)cout<
你的输入有误,请仔细看提示."
//你的输入有误,请仔细看提示
intk=0,temp;
jinxingceshi."
p.pbase[0].length;
j++)//for(intj=0;
c=p.pbase[m-1].rbase[j];
//m-1才是正确的行
if(c!
elsek++;
k值:
s.rbase[k-1]<
if(k==s.length)
{cout<
确实存在此字符串."
temp=j+1-k;
break;
//inttemp=j-k;
同样错误1
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;
for(inti=m-1;
i++)//从删除位置开始赋值到数组a
for(j=temp;
j++,k++)
a.rbase[k]=p.pbase.rbase[j];
j=0;
for(k=0;
k<
a.length-s.length;
k++)a.rbase[k]=a.rbase[k+s.length];
//
for(;
a.length;
k++)a.rbase[k]='
for(i=m-1,k=0;
{for(j=temp;
p.pbase.rbase[j]=a.rbase[k];
j=0;
OPage(p);
//可以调用函数0page(p);
voidSave(PageP)//new
{fstreamoutfile;
outfile.open("
information.dat"
ios:
out|ios:
binary);
outfile)
information.datcan'
topen.\n"
abort();
P.n;
outfile.write(P.pbase.rbase,sizeof(P.pbase.rbase));
outfile.close();
voidRead(Page&
P)
{fstreaminfile,outfile;
infile.open("
in|ios:
infile)
abort(