每个城市信息由城市名(字符串)和位置坐标组成(x,y)。设计实现一程序,完成如下功能:
(1)从键盘或文件输入各城市信息
(2)按城市名字非递减排序后输出
(3)输入某个位置信息,查询该位置的城市名称,要求能多次查询。
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
typedef char ElemType;
struct info
{
ElemType name[MAXSIZE];
int x;
int y;
};
int main()
{
struct info city[MAXSIZE];
//从键盘输入信息
int i=0,count=0;
printf("请输入城市名和位置坐标x,y,以空格键隔开(输入“q 0 0”以结束):");
while((scanf("%s %d %d",city[i].name,&city[i].x),&city[i].y)!=0)
{
if(i>=MAXSIZE)
{
printf("超出最大输入个数!");
break;
}
if(strcmp(city[i].name,"q")==0)
break;
i++;
count++;
printf("请输入城市名和位置坐标x,y,以空格键隔开:");
}
//排序
int m,n;
struct info temp;
for(m=0;m<count-1;m++)
{
for(n=0;n<count-m-1;n++)
{
if(strcmp(city[n].name,city[n+1])>0)
{
temp=city[n];
city[n]=city[n+1];
city[n+1]=temp;
}
}
}
//按非递减顺序输出
for(i=0;i<count;i++)
{
printf("%s %d %d \n",city[i].name,city[i].x,city[i].y);
}
//查询
int x,y;
printf("请输入您要查找的位置坐标x,y,之间以空格隔开,以“q q”结束操作:");
while(scanf("%d %d",&x,&y)!=0)
{
for(i=0;i<count;i++)
{
if(x==city[i].x&&y==city[i].y)
{
printf("\n您要查找的城市为 %s ",city[i].name);
break;
}
else if(i==count-1)
{
printf("\n未找到匹配的城市!");
}
}
}
printf("\n感谢您的使用,再见!");
return 0;
}
代码运行正常,排序、查找功能都正常,但输入数据后,输出(打印在屏幕上)的数据坐标y全部变为0,请问这是怎么回事,看了很久没有看出来