完整word版数据结构课程设计校园导航word文档良心出品

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、课程设计目的
本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。

设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。

通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。

同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

二、课程设计内容
1)问题描述
用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。

要求能够回答有关景点介绍、游览路径等问题。

2)基本要求
(1)查询各景点的相关信息;
(2)查询图中任意两个景点间的最短路径。

(3)查询图中任意两个景点间的所有路径。

(4)增加、删除、更新有关景点和道路的信息
三、课程设计过程
1.需求分析
(1)设计学校的校园平面图,选取出若干的具有代表性的景点构成一个抽象的无向带权图,顶点为景点,边的权值代表了景点间路径的长度。

(2)将景点的序号,名称,介绍存放起来准备查询。

(3)提供任意景点的信息;
(4)提供任意经典的路径查询及其最优路线的查询
(5)平面图景点的增加及删除,以及边和权值(长度)的改变
.概要设计2.
1:第一点是主界面的设计,首先,为了该系统各个功能的管理,设计出含有多个菜
单项的主菜单界面,可以更方便的使用该系统。

2:第二点是存储结构的设计,采取了图结构类型( mgraph)存储校园图的信息,景点信息用结构数组vexs存储,而且利用全局变量:visited[]数组用于存储顶点是否被访问标志;d[]数组用于存放权值和查找路径顶点的编号;campus是一个图结构的全局变量。

3:第三点是设计各个功能的实现,学校景点的介绍通过函数 browsecompus()来实现;查询景点间的最段路径通过Floyd(弗洛伊德)算法实现;查询景点间的所有路径通过allpath函数和path函数来实现;更改图的信息可以由主函数changegraph以及其他函数可以实现。

3.详细设计
(1)主要的操作界面的显示以及无向网操作
void initgraph(graph *ga)
{
int i,j;
ga->n=9;
ga->e=11;
for( i=0;i<ga->n;i++)
{
ga->vexs[i].num=i;
}
strcpy(ga-瘾硥孳崰渮浡?西门);
strcpy(ga-瘾硥孳崰椮瑮潲畤散尬学校的正大门,设有公交站);
strcpy(ga-瘾硥孳崱渮浡?风雨篮球场);
strcpy(ga->vexs[1].introduce,\);
strcpy(ga-瘾硥孳崲渮浡?田径场);
strcpy(ga-瘾硥孳崲椮瑮潲畤散尬举办运动会,平时体育跑步锻炼等);
strcpy(ga-瘾硥孳崳渮浡?京元食堂);
strcpy(ga-瘾硥孳崳椮瑮潲畤散尬新食堂);
strcpy(ga-瘾硥孳崴渮浡?苍霞湖畔);
strcpy(ga-瘾硥孳崴椮瑮潲畤散尬戏称“分手湖”,景色宜人);
strcpy(ga-瘾硥孳崵渮浡?思源楼);
strcpy(ga-瘾硥孳崵椮瑮潲畤散尬学校王牌土木的教学区);
strcpy(ga-瘾硥孳崶渮浡?图书馆);
strcpy(ga-瘾硥孳崶椮瑮潲畤散尬是大学城最高的标志性建筑);
strcpy(ga-瘾硥孳崷渮浡?北教区);
strcpy(ga-瘾硥孳崷椮瑮潲畤散尬北校区集中的教学楼);
);禾堂餐厅瘾硥孳崸渮浡?-strcpy(ga
strcpy(ga-瘾硥孳崸椮瑮潲畤散尬旧食堂);
for(i=0;i<ga->n;i++)
for(j=0;j<ga->n;j++)
ga->edges[i][j]=1000;
ga->edges[0][1]=1;
ga->edges[1][2]=2;
ga->edges[1][3]=5;
ga->edges[2][4]=4;
ga->edges[3][4]=9;
ga->edges[4][5]=1;
ga->edges[4][8]=1;
ga->edges[5][6]=5;
ga->edges[5][7]=7;
ga->edges[7][8]=1;
ga->edges[6][7]=9;
for(i=0;i<ga->n;i++)
for(j=0;j<ga->n;j++)
ga->edges[j][i]=ga->edges[i][j];
}
(2)确定顶点是否存在已经顶点是否已经被访问过来确定路径void Create_graph(graph *ga)
{
int i,j,k,w;
牰湩晴尨请输入顶点数和边数:\n);
scanf(%d %d,&(ga->n),&(ga ->e));
牰湩晴尨请输入景点编号,景点名字,景点介绍,建立信息表:\n); for(i=0;i<ga->n;i++)
{
scanf(%d,&(ga->vexs[i].num));
gets(ga->vexs[i].name);
gets(ga->vexs[i].introduce);
}
for(i=0;i<ga->n;i++)
for(j=0;j<=ga->n;j++)
ga->edges[i][j]=1000;
for(k=0;k<ga->e;k++)
{
牰湩晴尨请输入%d条边的景点序号i,j和长度:,k+1);
scanf(%d %d %d,&i,&j,&w);
ga->edges[i][j]=w;
ga->edges[j][i]=w;
}
}
void print(graph ga)
{
int i,j;
for(i=0;i<ga.n;i++)
for(j=0;j<ga.n;j++)
{
printf(%d,ga.edges[i][j]);
if(j+1==ga.n)
printf(\
);
}
}
void visit(graph ga)
{
int a;
牰湩晴尨请输入景点编号:);
scanf(%d,&a);
int i;
for( i=0;i<ga.n;i++)
{
if(a==ga.vexs[i].num)
{
牰湩晴尨景点编号为%d \n,ga.vexs[i].num);
牰湩晴尨景点名称为);
puts(ga.vexs[i].name);
牰湩晴尨景点介绍为);
puts(ga.vexs[i].introduce);
break;
}
}
晩椨?慧渮瀩楲瑮?无此点\n);
}
(3)得出景点间的最短路径
void shortestpath_djst(graph ga){
}
void shortestpath_floyd(graph ga)
{
int i,j,k,v,u,w,d[35][35],p[35][35][35];
for(v=0;v<ga.n;v++)
{
for(w=0;w<ga.n;w++)
{
d[v][w]=ga.edges[v][w];
for(u=0;u<ga.n;u++)
{
p[v][w][u]=0;
}
if(d[v][w]<1000)
{
p[v][w][v]=1;
p[v][w][w]=1;
}
}
}
for(u=0;u<ga.n;u++)
{
for(v=0;v<ga.n;v++)
for(w=0;w<ga.n;w++)
if(d[v][u]+d[u][w]<d[v][w])
{
d[v][w]=d[v][u]+d[u][w];
for(i=0;i<ga.n;i++)
p[v][w][i]=p[v][u][i]||p[u][w][i];
}
}
printf(\
请输入出发点和目的地编号:); scanf(%d %d,&k,&j);
printf(\
\n);
while(k<0||k>ga.n||j<0||j>ga.n)
{
printf(\
输入的编号不存在);
printf(\
请重新输入编号:\n\n);
scanf(%d %d,&k,&j);
printf(\
\n);
}
printf(%s,ga.vexs[k].name);
for(u=0;u<ga.n;u++)
if(p[k][j][u] && k!=u &&j!=u)
牰湩晴尨--->%s,ga.vexs[u].name); 牰湩晴尨--->%s,ga.vexs[j].name);
printf(\
\n\n总长度为%d千米\n\n\n,d[k][j]);
}
(4)得到景点之间的所有路径
void path(graph c,int m,int n,int k) {
int s,x=0;
int t;
t=k+1;
if(d[k]==n && k<8)
{
for(s=0;s<k;s++)
{
printf(%s--->,c.vexs[d[s]].name);
}
printf(%s\n\n,c.vexs[d[s]].name);
}
else
{
s=0;
while(s<c.n)
{
if((c.edges[d[k]][s]<1000)&&(visited[s]==0))
{
visited[s]=1;
d[k+1]=s;
path(c,m,n,t);
visited[s]=0;
}
s++;
}
}
}
void allpath(graph c)
{
int k,i,j,m,n;
printf(\
\n请输入您要查询的两个景点的编号:\n\n);
scanf(%d %d,&i,&j);
printf(\
\n);
m=locatevex(c,i);
n=locatevex(c,j);
d[0]=m;
for(k=0;k<c.n;k++)
visited[k]=0;
visited[m]=1;
path(c,m,n,0);
}
(5)删除边
int delarc(graph &ga) {
int m,n,v0,v1;
if(ga.e<=0)
{
牰湩晴尨图中已经无顶边,无法删除); return 1;
}
printf(\
请输入要删除的边的起点和终点的编号:); scanf(%d %d,&v0,&v1);
m=locatevex(ga,v0);
if(m<0)
{
牰湩晴尨此顶点%d已删除,v0);
return 1;
}
n=locatevex(ga,v1);
if(n<0)
{
牰湩晴尨此顶点%d已删除,v1);
return 1;
}
ga.edges[m][n]=1000;
ga.edges[n][m]=1000;
ga.e--;
return 1;
}
int enarc(graph &ga)
int m,n,distance;
牰湩晴尨请输入边的起点和终点编号,权值:);
scanf(%d %d %d,&m,&n,&distance);
while(m<0||m>ga.n||n<0||n>ga.n)
{
牰湩晴尨输入错误,请重新输入:);
scanf(%d %d,&m,&n);
}
if(locatevex(ga,m)<0)
{
牰湩晴尨此节点%d已经删除,m);
return 1;
}
if(locatevex(ga,n)<0)
{
牰湩晴尨此节点%d已经删除,n);
return 1;
}
ga.edges[m][n]=distance;
ga.edges[n][m]=ga.edges[m][n];
return 1;
}
4.调试分析
内容包括:
.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析; a
)和包括基本操作和其他算法的时间复杂度和空间复杂度的分析b.算法的时空分析( 改进设想;
.经验和体会等。

c
.用户使用说明5
从而选择出你所想要知道的信息,通过主菜单提示,然后通过输入节点来代替景点,得到景点间的所有路径,最短路径等其他信息。

6.测试结果
(1)操作的主界面
)学校景点的介绍(2
(3)学校景点从西门的禾堂餐厅的所有路径所有路径4)学校景点从西门的禾堂餐厅的所有路径最短路径((5)图的更改的界面
)边的删除界面展示(6
.附录7 数据类型的定义//#define MAX 100
#include<string> #include<iostream> using namespace std; int visited[35]; int d[35]; struct views{ int num;
char name[10];
char introduce[100];
}; typedef views datatype; typedef struct { datatype vexs[MAX]; int edges[MAX][MAX]; int n,e; }graph; 主要的操作界面的显示以及无向网操作void initgraph(graph *ga)//
{
int i,j; -ga>n=9;
>e=11;-ga
for( i=0;i<ga->n;i++)
{
ga->vexs[i].num=i;
}
strcpy(ga-瘾硥孳崰渮浡?西门);
strcpy(ga-瘾硥孳崰椮瑮潲畤散尬学校的正大门,设有公交站);
strcpy(ga-瘾硥孳崱渮浡?风雨篮球场);
strcpy(ga->vexs[1].introduce,\);
strcpy(ga-瘾硥孳崲渮浡?田径场);
strcpy(ga-瘾硥孳崲椮瑮潲畤散尬举办运动会,平时体育跑步锻炼等);
strcpy(ga-瘾硥孳崳渮浡?京元食堂);
strcpy(ga-瘾硥孳崳椮瑮潲畤散尬新食堂);
strcpy(ga-瘾硥孳崴渮浡?苍霞湖畔);
strcpy(ga-瘾硥孳崴椮瑮潲畤散尬戏称“分手湖”,景色宜人);
strcpy(ga-瘾硥孳崵渮浡?思源楼);
strcpy(ga-瘾硥孳崵椮瑮潲畤散尬学校王牌土木的教学区);
strcpy(ga-瘾硥孳崶渮浡?图书馆);
strcpy(ga-瘾硥孳崶椮瑮潲畤散尬是大学城最高的标志性建筑);
strcpy(ga-瘾硥孳崷渮浡?北教区);
strcpy(ga-瘾硥孳崷椮瑮潲畤散尬北校区集中的教学楼);
strcpy(ga-瘾硥孳崸渮浡?禾堂餐厅);
strcpy(ga-瘾硥孳崸椮瑮潲畤散尬旧食堂);
for(i=0;i<ga->n;i++)
for(j=0;j<ga->n;j++)
ga->edges[i][j]=1000;
ga->edges[0][1]=1;
ga->edges[1][2]=2;
ga->edges[1][3]=5;
ga->edges[2][4]=4;
ga->edges[3][4]=9;
ga->edges[4][5]=1;
ga->edges[4][8]=1;
ga->edges[5][6]=5;
ga->edges[5][7]=7;
ga->edges[7][8]=1;
ga->edges[6][7]=9;
for(i=0;i<ga->n;i++)
for(j=0;j<ga->n;j++)
ga->edges[j][i]=ga->edges[i][j];
}
int locatevex(graph ga,int v) / /查找景点在图中的序号
{
int i;
for(i=0;i<ga.n;i++)
if(v==ga.vexs[i].num)return i;
return -1;
}
void Create_graph(graph *ga)
{
int i,j,k,w;
牰湩晴尨请输入顶点数和边数:\n);
scanf(%d %d,&(ga->n),&(ga->e));
牰湩晴尨请输入景点编号,景点名字,景点介绍,建立信息表:\n); for(i=0;i<ga->n;i++)
{
scanf(%d,&(ga->vexs[i].num));
gets(ga->vexs[i].name);
gets(ga->vexs[i].introduce);
}
for(i=0;i<ga->n;i++)
for(j=0;j<=ga->n;j++)
ga->edges[i][j]=1000;
for(k=0;k<ga->e;k++)
{
牰湩晴尨请输入%d条边的景点序号i,j和长度:,k+1);
scanf(%d %d %d,&i,&j,&w);
ga->edges[i][j]=w;
ga->edges[j][i]=w;
}
}
void print(graph ga)
{
int i,j;
for(i=0;i<ga.n;i++)
for(j=0;j<ga.n;j++)
{
printf(%d,ga.edges[i][j]);
if(j+1==ga.n)
printf(\
);
}
}
void visit(graph ga)
{
int a;
牰湩晴尨请输入景点编号:);
scanf(%d,&a);
int i;
for( i=0;i<ga.n;i++)
{
if(a==ga.vexs[i].num)
{
牰湩晴尨景点编号为%d \n,ga.vexs[i].num);
牰湩晴尨景点名称为);
puts(ga.vexs[i].name);
牰湩晴尨景点介绍为);
puts(ga.vexs[i].introduce);
break;
}
}
晩椨?慧渮瀩楲瑮?无此点\n);
}
void shortestpath_djst(graph ga)
{
}
void shortestpath_floyd(graph ga)
{
int i,j,k,v,u,w,d[35][35],p[35][35][35];
for(v=0;v<ga.n;v++)
{
for(w=0;w<ga.n;w++)
{
d[v][w]=ga.edges[v][w];
for(u=0;u<ga.n;u++)
{
p[v][w][u]=0;
}
if(d[v][w]<1000)
{
p[v][w][v]=1;
p[v][w][w]=1;
}
}
}
for(u=0;u<ga.n;u++)
{
for(v=0;v<ga.n;v++)
for(w=0;w<ga.n;w++)
if(d[v][u]+d[u][w]<d[v][w])
{
d[v][w]=d[v][u]+d[u][w];
for(i=0;i<ga.n;i++)
p[v][w][i]=p[v][u][i]||p[u][w][i];
} }
printf(\
请输入出发点和目的地编号:); scanf(%d %d,&k,&j);
printf(\
\n);
while(k<0||k>ga.n||j<0||j>ga.n) {
printf(\
输入的编号不存在);
printf(\
请重新输入编号:\n\n);
scanf(%d %d,&k,&j);
printf(\
\n);
}
printf(%s,ga.vexs[k].name);
for(u=0;u<ga.n;u++)
if(p[k][j][u] && k!=u &&j!=u)
牰湩晴尨--->%s,ga.vexs[u].name); 牰湩晴尨--->%s,ga.vexs[j].name); printf(\
\n\n总长度为%d千米\n\n\n,d[k][j]); }
void path(graph c,int m,int n,int k)
{
int s,x=0;
int t;
t=k+1;
if(d[k]==n && k<8)
{
for(s=0;s<k;s++)
{
printf(%s--->,c.vexs[d[s]].name);
}
printf(%s\n\n,c.vexs[d[s]].name);
}
else
{
s=0;
while(s<c.n)
{
if((c.edges[d[k]][s]<1000)&&(visited[s]==0)) {
visited[s]=1;
d[k+1]=s;
path(c,m,n,t);
visited[s]=0;
}
s++;
}
}
}
void allpath(graph c)
{
int k,i,j,m,n;
printf(\
\n请输入您要查询的两个景点的编号:\n\n);
scanf(%d %d,&i,&j);
printf(\
\n);
m=locatevex(c,i);
n=locatevex(c,j);
d[0]=m;
for(k=0;k<c.n;k++)
visited[k]=0;
visited[m]=1;
path(c,m,n,0);
}
void newgraph(graph &ga)
{
int changenum;
int i,m,n,t,distance,v0,v1;
printf(\
请输入要修改景点的个数:\n);
scanf(%d,&changenum);
while(changenum<0||changenum>ga.n) {
printf(\
输入错误!请重新输入);
scanf(%d,&changenum);
}
for(i=0;i<changenum;i++)
{
printf(\
请输入景点的编号:);
scanf(%d,&m);
t=locatevex(ga,m);
printf(\
请输入景点的名称:);
scanf(%s,ga.vexs[t].name);
printf(\
请输入景点简介:);
scanf(%s,ga.vexs[t].introduce);
}
printf(\
请输入您要更新的边数);
scanf(%d,&changenum);
while(changenum<0||changenum>ga.n) {
牰湩晴尨输入错误,请重新输入:); scanf(%d,&changenum);
}
printf(\
请输入更新边的信息:\n);
for(i=1;i<=changenum;i++)
{
printf(\
修改的第%d条边的起点终点长度为:,i);
scanf(%d %d %d,&v0,&v1,&distance);
m=locatevex(ga,v0);
n=locatevex(ga,v1);
if(m>=0&&n>=0)
{
ga.edges[m][n]=distance;
ga.edges[n][m]=ga.edges[m][n];
}
}
}
int delvex(graph &ga) //删除顶点
{
int i=0,j;
int m,v;
if(ga.n<=0)
{
牰湩晴尨图中已经无顶点);
return 1;
}
printf(\
请输入要删除的景点编号:);
scanf(%d,&v);
while(v<0||v>ga.n)
{
printf(\
输入错误,请重新输入);
scanf(%d,&v);
}
m=locatevex(ga,v);
if(m<0)
{
牰湩晴尨此顶点%d已删除,v);
return 1;
}
for(i=m;i<ga.n-1;i++)
{
strcpy(ga.vexs[i].name,ga.vexs[i+1].name); strcpy(ga.vexs[i].introduce,ga.vexs[i+1].introduce); }
for(i=m;i<ga.n-1;i++)
for(j=0;j<ga.n;j++)
ga.edges[i][j]=ga.edges[i+1][j];
for(i=m;i<ga.n-1;i++)
for(j=0;j<ga.n;j++)
ga.edges[j][i]=ga.edges[j][i+1];
ga.n--;
return 1;
}
int delarc(graph &ga) //删除边
{
int m,n,v0,v1;
if(ga.e<=0)
{
牰湩晴尨图中已经无顶边,无法删除);
return 1;
}
printf(\
请输入要删除的边的起点和终点的编号:); scanf(%d %d,&v0,&v1);
m=locatevex(ga,v0);
if(m<0)
{
牰湩晴尨此顶点%d已删除,v0);
return 1;
}
n=locatevex(ga,v1);
if(n<0)
{
牰湩晴尨此顶点%d已删除,v1);
return 1;
}
ga.edges[m][n]=1000;
ga.edges[n][m]=1000;
ga.e--;
return 1;
}
int enarc(graph &ga).
{
int m,n,distance;
牰湩晴尨请输入边的起点和终点编号,权值:); scanf(%d %d %d,&m,&n,&distance);
while(m<0||m>ga.n||n<0||n>ga.n) {
牰湩晴尨输入错误,请重新输入:); scanf(%d %d,&m,&n);
}
if(locatevex(ga,m)<0)
{
牰湩晴尨此节点%d已经删除,m); return 1;
}
if(locatevex(ga,n)<0)
{
牰湩晴尨此节点%d已经删除,n); return 1;
}
ga.edges[m][n]=distance;
ga.edges[n][m]=ga.edges[m][n]; return 1;
}
int envex(graph &ga) //增加节点{
int i;
牰湩晴尨请输入增加节点的信息:); printf(\
编号:);
scanf(%d,&ga.vexs[ga.n].num);
牰湩晴尨名称:);
scanf(%s,ga.vexs[ga.n].name);
牰湩晴尨简介:);
scanf(%s,ga.vexs[ga.n].introduce); ga.n++;
for(i=0;i<ga.n;i++)
{
ga.edges[ga.n-1][i]=1000;
ga.edges[i][ga.n-1]=1000;
}
return 1;
}
int changegraph(graph &ga)
{
int yourchoice;
printf(\
请选择\n\n (1)删除结点(2)删除边\n);
printf(\
(3)增加结点(4)增加边\n);
printf(\
(5)更新信息(6)返回\n\n );
scanf(%d,&yourchoice);
printf(\
\n);
while(!(yourchoice==1||yourchoice==2||yourchoice==3||yourchoice==4||yourchoice==5||yourchoic e==6)
牰湩晴尨请重新输入:);
scanf(%d,&yourchoice);
}
while(1)
{
switch(yourchoice)
{
case 1: delvex(ga); break;
case 2: delarc(ga); break;
case 3: envex(ga); break;
case 4: enarc(ga); break;
case 5: newgraph(ga); break;
case 6: return 1;
}
printf(\
请选择\n\n (1)删除结点(2)删除边\n);
printf(\
(3)增加结点(4)增加边\n);
printf(\
(5)更新信息(6)返回\n\n );
scanf(%d,&yourchoice);printf(\
\n);
while(!(yourchoice==1||yourchoice==2||yourchoice==3||yourchoice==4||yourchoice==5||yourchoic e==6))
{
牰湩晴尨请重新输入:);
scanf(%d,&yourchoice);
}
}
return 1;
}
void mainwork()
{
int yourchoice;
graph ga;
initgraph(&ga);
printf(\
-----------------------欢迎使用校园导游程序--------------------\n);
printf( 欢迎来到福建工程院\n\n);
printf(\
菜单选择\n);
printf( 1.学校景点介绍 2. 查询景点间所有路径\n);
printf( 3.改图 4.查询景点间最短路径\n); printf( 5.退出
\n);
printf(\
---------------------------------------------------------------\n);
牰湩晴尨请输入您的选择:);
scanf(%d,&yourchoice);
while(!(yourchoice==1||yourchoice==2||yourchoice==3||yourchoice==4||yourchoice==5)) {
牰湩晴尨请重新输入:);
scanf(%d,&yourchoice);
}
while(1)
{
switch(yourchoice)
{
case 1: visit(ga); break;
case 2: allpath(ga); break;
case 3: changegraph(ga); break;
case 4: shortestpath_floyd(ga); break;
case 5: exit(0); break;
default: break;
}
printf(\
-----------------------欢迎使用校园导游程序--------------------\n);
printf( 欢迎来到福建工程院\n\n);
printf(\
菜单选择\n);
printf( 1.学校景点介绍 2. 查询景点间所有路径\n);
printf( 3.改图 4.查询景点间最短路径\n);
printf( 5.退出
\n);
printf(\
---------------------------------------------------------------\n);
牰湩晴尨请输入您的选择:);
scanf(%d,&yourchoice);
}
}。

相关文档
最新文档