Zijeak 2018-11-25 03:14 采纳率: 33.3%
浏览 544
已采纳

【C语言】结构体数据处理异常问题

每个城市信息由城市名(字符串)和位置坐标组成(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,请问这是怎么回事,看了很久没有看出来

  • 写回答

1条回答 默认 最新

  • qq_38615562 2018-11-25 06:19
    关注

    while((scanf("%s %d %d",city[i].name,&city[i].x),&city[i].y)!=0) 这句的city[i].x后面怎么有个括号

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题