2201_75843485 2024-02-27 18:25 采纳率: 50%
浏览 5

C语言 结构体题目 基础题

题目:输入两个学生的学号,姓名,成绩输出成绩较高的学生的学号姓名成绩
这是原题代码

img


我的代码:

//结构体
#include<stdio.h>
int main()
{
    struct student
    {
        int num;
        char name[20];
        int grade;
    }student1, student2;
    
    scanf_s("%d %s %d", &student1.num, student1.name, &student1.grade);
    
    scanf_s("%d %s %d", &student2.num, student2.name, &student2.grade);
    if (student1.grade >= student2.grade)
    {
        if (student1.grade = student2.grade)
        {
            printf("they are the same grade:%d", student1.grade);
        }
        else {
            printf("student1 :num:%d,name:%s,grade:%d\n", student1.num, student1.name, student1.grade);

        }
    }
    else {
        printf("student2 :num:%d,name:%s,grade:%d\n", student2.num, student2.name, student2.grade);
    }
    return 0;
}


但是窗口显示是这样

img


没有输入student2的内容程序就结束了,而且也没有输出
这是什么问题
另外定义结构体的时候,我能不能把char name[20];改为char name;两者有什么区别,会有什么影响;

  • 写回答

5条回答 默认 最新

  • GISer Liu 2024-02-27 18:26
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    问题分析:

    1. 输入两个学生的信息时,程序未等待第二个学生的输入就结束了,导致只有一个学生的信息被输入。
    2. 在比较两个学生的成绩时,存在逻辑错误,导致无法正确输出较高成绩的学生信息。
    3. 关于结构体成员char name[20]char name的区别以及影响。
      解决方案:
    4. 输入两个学生的信息时,需要保证程序等待并正确获取两个学生的信息。
    5. 修正比较成绩的逻辑错误,并确保正确输出成绩较高的学生信息。
    6. 解释char name[20]char name的区别以及影响。
      代码修改:
      cCopy code
      #include<stdio.h>
      int main() {
      struct student {
      int num;
      char name[20]; // 使用数组存储姓名
      int grade;
      } student1, student2;
      // 输入第一个学生的信息
      printf("请输入第一个学生的学号、姓名、成绩(用空格分隔):\n");
      scanf("%d %s %d", &student1.num, student1.name, &student1.grade);
      // 输入第二个学生的信息
      printf("请输入第二个学生的学号、姓名、成绩(用空格分隔):\n");
      scanf("%d %s %d", &student2.num, student2.name, &student2.grade);
      // 比较两个学生的成绩并输出成绩较高者的信息
      if (student1.grade > student2.grade) {
      printf("学号:%d, 姓名:%s, 成绩:%d\n", student1.num, student1.name, student1.grade);
      } else if (student1.grade < student2.grade) {
      printf("学号:%d, 姓名:%s, 成绩:%d\n", student2.num, student2.name, student2.grade);
      } else {
      printf("两位学生的成绩相同:%d\n", student1.grade);
      }
      return 0;
      }
      
      关于char name[20]char name的区别以及影响:
    • char name[20]表示name是一个包含20个字符的数组,用于存储字符串。这样的定义可以存储较长的姓名,但是需要预先分配一定大小的内存空间。
    • char name表示name是一个字符变量,只能存储一个字符。这样的定义无法存储完整的姓名,只能存储单个字符。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    评论

报告相同问题?

问题事件

  • 创建了问题 2月27日

悬赏问题

  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥20 spring boot集成mqtt的使用问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错