C语言求助啊!下面的代码谁能帮我看看?谢谢啊
答案:1 信息版本:手机版
解决时间 2021-05-15 01:34
已解决
2021-05-14 07:39
#include
#include
#include
#include
#include
char city[20];
typedef struct q
{ char a[20];
int x;
int y;
struct q *prior;
struct q *next;
}NODE,*list;
list create();
void find(list);
void pos(list);
void add(list);
void dele(list);
void show(list);
void print();
void main()
{ list L;
int t;
char c='y';
while(c=='y'||c=='Y')
{system("cls");
print();
printf("请输入:");
scanf("%d",&t);
switch(t)
{ case 1: L=create(); break;
case 2: find(L); break;
case 3: add(L); break;
case 4: dele(L); break;
case 5: pos(L); break;
case 6: show(L);break;
}
printf("输入Y则继续操作,输入其他则结束!\n");
c=getch();
}
}
void print()
{
printf("*******************************************************************************\n");
printf("**********************<>*********************************************\n");
printf("*******************************************************************************\n");
printf("*********按1:输入城市信息 按2:查找城市信息************\n");
printf("*******************************************************************************\n");
printf("*********按3:增加一个城市信息 按4:删除一个城市信息********\n");
printf("*******************************************************************************\n");
printf("*********按5:查找小于等于某距离的所有城市信息 按6:显示所有城市信息********\n");
printf("*******************************************************************************\n");
printf("*******************************************************************************\n");
printf("*******************************************************************************\n");
}
list create()
{ NODE *p1,*p2;
list L;
int t1,t2;
p2=(NODE *)malloc(sizeof(NODE));
L=p2;
printf("请输入城市的横坐标x与纵坐标y(若x或y输入为负数则表示结束输入)\n");
printf("请输入X坐标:x=");
scanf("%d",&t1);
printf("请输入Y坐标:y=");
scanf("%d",&t2);
while(t1>=0&&t2>=0)
{ p1=(NODE *)malloc(sizeof(NODE));
p1->x=t1;
p1->y=t2;
printf("\n请输入城市的名字:");
scanf("%s",p1->a);
p2->next=p1;
p1->prior=p2;
p2=p1;
p2->next=NULL;
system("cls");
printf("请输入城市的横坐标x与纵坐标y(若x或y输入为负数则表示结束输入)\n");
printf("请输入X坐标:x=");
scanf("%d",&t1);
printf("请输入Y坐标:y=");
scanf("%d",&t2);
}
p1=L->next;
while(p1!=NULL)
{ printf("城市:%s ",p1->a);
printf("坐标:(%d,%d)\n",p1->x,p1->y);
p1=p1->next;
}
return L;
}
void find(list L)
{ NODE *p;
int leap=0;
p=(NODE *)malloc(sizeof(NODE));
printf("请输入所要查找的城市的名字");
scanf("%s",city);
p=L->next;
while(p!=NULL)
{
if(strcmp(p->a,city)==0)
{
printf("城市:%s ",p->a);
printf("坐标为:(%d,%d)\n",p->x,p->y);
leap=1;
}
p=p->next;
}
if(leap==0)
printf("未找到");
}
void pos(list L)
{ int d,t1,t2,leap=0;
long double h;
NODE *t;
t=(NODE *)malloc(sizeof(NODE));
t=L->next;
printf("请输入城市的坐标\n");
printf("\n请输入x坐标:");
scanf("%d",&t1);
printf("\n请输入y坐标:");
scanf("%d",&t2);
printf("\n请输入距离d=");
scanf("%d",&d);
printf("距离小于d的城市有\n");
while(t!=NULL)
{ h=sqrt(pow(fabs(t->x-t1),2)+pow(fabs(t->y-t2),2));
if(h>=0&&h<=d)
{printf("城市:%s",t->a);
printf("坐标:(%d,%d)\n",t->x,t->y);
leap=1;}
t=t->next;
}
if(leap==0)
printf("未找到小于该距离的城市!");
}
void add(list L)
{ NODE *p,*p1;
int leap=0;
p=p1=(NODE *)malloc(sizeof(NODE));
//char city[20];
printf("你想在那个城市名后增加:");
scanf("%s",city);
p=L->next;
while(p!=NULL)
{
if(strcmp(p->a,city)==0)
{
printf("请输入要插入城市的名字city=");
scanf("%s",p1->a);
printf("\n请输入要插入城市的X坐标x=");
scanf("%d",&p1->x);
printf("\n请输入要插入城市的Y坐标y=");
scanf("%d",&p1->y);
p1->next=p->next;
p1->prior=p->next->prior;
p->next->prior=p1;
p->next=p1;
leap=1;
}
p=p->next;
}
p1=L->next;
while(p1!=NULL)
{ printf("城市:%s ",p1->a);
printf("坐标:(%d,%d)\n",p1->x,p1->y);
p1=p1->next;
}
if(leap==0)
printf("\n\n未找到该城市的名字!\n");
}
void dele(list L)
{ NODE *p,*p1;
int leap=0;
p=p1=(NODE *)malloc(sizeof(NODE));
//char city[20];
printf("你想删除那个城市的名字:");
scanf("%s",city);
p=L->next;
while(p!=NULL)
{
if(strcmp(p->a,city)==0)
{p->prior->next=p->next;
p->next->prior=p->prior;
printf("删除成功!\n");
p1=L->next;
while(p1!=NULL)
{
printf("城市:%s ",p1->a);
printf("坐标:(%d,%d)\n",p1->x,p1->y);
p1=p1->next;
}
leap=1;
}
if(leap==1) break;
p=p->next;
}
if(leap==0)
printf("未找到删除对象,删除失败!");
}
void show(list L)
{NODE *p;
p=(NODE *)malloc(sizeof(NODE));
p=L->next;
while(p!=NULL)
{
printf("城市:%s ",p->a);
printf("坐标:(%d,%d)\n",p->x,p->y);
p=p->next;
}
}
就是这个代码。可以运行的可以。但是菜单所显示的功能是不能实现的。求助啊 谢谢
最佳答案
2021-05-14 09:05
代码呢?
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯