⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abc.c

📁 数据结构课程设计_校园导游咨询 1.需求分析 设计一个校园导游程序
💻 C
字号:
        /*********************一下是q.c文件***********************/
#include  "stdio.h"
#define   null    0                                            /*宏替换*/
#define   num     20
#define   maxdist 10000
typedef   struct                                              /*定义结构体存景点代码、名称、简介*/
{
     int  code;
     char   name[num];
     char   pr[num];
}graph;
void save( int c[num][num],int n,int i,int d[num],int p[num])            /*最短路径的C语言函数*/
{
     int s[num];
     int mindist,dist;
     int j,k,u,w;
     for(j=0;j<n;j++)
     {
 d[j]=c[i][j];
 s[j]=0;
 if((d[j]<maxdist)&&(d[j]!=0))
     p[j]=i;
 else
     p[j]=-1;
     }
     s[i]=1;
     for(j=0;j<n-1;j++)
     {
 mindist=maxdist;
 u=i;
 for(k=0;k<n;k++)
    if((s[k]==0)&&(d[k]<mindist))
    {
       u=k;
       mindist=d[k];
    }
 s[u]=1;
 for(k=0;k<n;k++)
    if(s[k]==0)
    {
       dist=d[u]+c[u][k];
       if(dist<d[k])
       {
    d[k]=dist;
    p[k]=u;
       }
    }
      }
}
void input(int v,int n,int d[],int p[])                     /*输出最短路径和最短距离函数*/     
{
      int i,j,k,pre;
      for(i=0;i<n;i++)
      if(i!=v)
      {
  printf("\n%d",i);
  pre=p[i];
  while(pre!=-1)
  {
     printf("<--%d",pre);                             /*输出最短路径所经过的景点*/
     pre=p[pre];
  }
  if(d[i]==maxdist)
     printf("<--%d",v);
  printf("\tshortestway:%d",d[i]);                   /*输出最短距离*/
      }
}
main()                                                      /*程序主函数*/
{
     graph   pl[10]={{0,"classroom","go to class"},         /*景点名称和简介*/ 
{1,"forest","tree and grass"},
      {2,"restaurant","eat food"},
      {3,"building","teaching room"},
      {4,"expriment","action myself"},
      {5,"gate","shool gate"},
      {6,"playground","playing ball"},
      {7,"life-center","service center"},
      {8,"super market","buy evergthing"},
      {9,"camera room","see movie"}};
     int i,j,k,n=10;
     int d[num],p[num],sd[num][num],sp[num][num],a[num][num];
     clrscr();
     for(i=0;i<n;i++)                                        /*给景点之间的路径赋最大值*/
     {
        for(j=0;j<n;j++)
            a[i][j]=maxdist;
     }
     a[0][2]=30;                                               /*景点之间的路径长度*/
     a[0][5]=40;
     a[0][1]=20;
     a[1][5]=60;
     a[1][4]=40;
     a[1][6]=30;
     a[2][3]=35;
     a[2][7]=40;
     a[3][10]=20;
     a[3][8]=15;
     a[4][9]=30;
     a[4][8]=35;
     a[4][10]=10;
     a[5][10]=10;
     a[5][8]=45;
     a[5][2]=20;
     a[6][0]=70;
     a[7][0]=50;
     a[8][9]=20;
     a[9][1]=55;
     clrscr();
     printf("\t       --欢迎使用校园导游系统--\n");           /*程序良好界面的设置和操作说明*/
     printf("\t*****************************************\n");
     printf("\t*                                       *\n");
     printf("\t*\t信息-i\t访问-v\t\t*\n\t*\t 关于-a\t退出-q\t\t*\n");
     printf("\t*\t\t\t\t\t*\n\t*\t\t\t\t\t*\n\t*\t\t\t\t\t*\n\t*\t\t\t\t\t*\n\t*\t\t\t\t\t*\n");
     printf("\t*****************************************\n");
     printf("\t*请输入:i v  q              \t*\n");
     printf("\t*清理屏幕:c \t\t\t*\n");
     printf("\t*****************************************\n");
     do                                                          /*循环输入字符进行操作*/
     {                                                               
  switch(getchar())                                       /*switch语句判断要进行的操作*/
  {                                                   
      case'a':{                                           /*程序知识产权声明*/
   printf("This is a guide program\n");
   printf("designer:hua  time:2007.12.1\n");
       }break;
      case'i':{                                             /*输入景点代码查景点名称和简介*/
      while(1)
      {
    printf("input number 0->9: (!=0->9    q)\n");
    scanf("%d",&i);
    if(i<0||i>9)                        /*输入非0->9退出*/ 
break;
    printf("%s,%s\n",pl[i].name,pl[i].pr);
      }
       }break;
     case'c': clrscr();break;                                 /*界面清屏*/
     case'v': {                                               /*输入景点代码查到其它景点的最短距离*/   
   do
   {
        printf("\ninput  the number:(0-9):   (!=0->9   q)\n");
        scanf("%d",&i);
        if(i<0||i>9)                           /*输入非0->9退出*/
                                  break;
        save(a,n,i,d,p);
        printf("\n\nThe shortroad is:\n");
        input(i,n,d,p);
   }
   while(1);
       }break;
    default: exit(1);                                       /*非正常字符退出*/
       }
   }
   while(getchar());
      getchar();
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -