弥生橘 2020-04-24 23:37 采纳率: 66.7%
浏览 497
已采纳

用c/c++来编写一个程序,需要用到结构体变量,一次循环

城市信息的输入与输出(结构体)

【问题描述】编写程序,能够输入和显示若干个城市的数据记录,每个记录包括城市编号、城市名、经度、维度。建议选择自己所在地的城市、熟悉或者喜欢的城市。只用结构体变量而不用结构体数组完成,只用一个循环完成。

#include<stdio.h>
struct information
{
    char cityname;//城市名字
    int number;       //城市编号
    int longitude;    //经度
    int longitude;    //纬度
}information1;
struct information i;//结构体information的名字也为i
int main()
{

}

不知道怎么用一个循环来遍历这个结构体。

  • 写回答

1条回答 默认 最新

  • 梧桐树✯ 2020-04-25 10:35
    关注

    写一个函数直接访问结构体的成员变量就好了的!

    还有就是,你的经度纬度两个成员变量的名字一样了。
    城市名那个成员,建议用数组,因为城市名一般不会是只有一个字符,而是多个字符。

    struct information
    {
    //char cityname;//城市名字
    char cityname[10];
    int number; //城市编号
    int longitude; //经度
    int latitude; //纬度
    }information1;
    struct information i;//结构体information的名字也为i

    void test7()
    {
    //printf("城市名称:%c\n",i.cityname);
    printf("城市名称:%s\n", i.cityname);
    printf("城市编号:%d\n", i.number);
    printf("城市经度:%d\n", i.longitude);
    printf("城市纬度:%d\n", i.latitude);
    }

    //测试代码

    #include <stdio.h> 
    #include <string.h> 
    typedef struct __CITYDATA { 
        char cityname[10];//城市名字
        int number; //城市编号
        int longitude; //经度
        int latitude; //纬度 
    }CITYDATA;
    
    CITYDATA cityData[5];//定义结构体变量 
    void print(CITYDATA p[5],int num)
    {
        int i = 0;//定义数组a的下标
        printf("\n\n城市名称\t\t城市编号\t\t城市经度\t\t城市纬度\n");
        for(i = 0;i < num;i++)
        {   
            printf("%s\t\t\t%d\t\t\t%d\t\t\t%d",p[i].cityname,p[i].number,p[i].longitude,p[i].latitude); 
            printf("\n");
        }
    }
    int main() 
    { 
        int n = 0;//定义城市数量 
        int i = 0;//cityname数组的下标
        printf("输入城市数量:"); 
        scanf_s("%d",&n);
        if (n > 5)
            n = 5;
        for(i = 0;i < n;++i) 
        {
            printf("\n输入第%d个城市名称:", i + 1);
            scanf("%s",cityData[i].cityname);
            printf("\n输入第%d个城市编号:", i + 1);
            scanf_s("%d", &cityData[i].number);
            printf("\n输入第%d个城市经度:", i + 1);
            scanf_s("%d", &cityData[i].longitude);
            printf("\n输入第%d个城市纬度:", i + 1);
            scanf_s("%d", &cityData[i].latitude);
        } 
        print(cityData,n);
        return 0; 
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境