星痕࿐ 2024-06-25 18:21 采纳率: 46.2%
浏览 1

问大家一个C语言指针问题,判断学生是否在一个班级中。


#include <stdio.h>
#include <string.h>

int main(void) {
    int i, flag = 0;
    char *names[4] = {"Jack", "Joe", "Mike", "Junn"};
    char your_name[20];
    printf("Enter your name:");
    gets(your_name);
    for (i = 0; i < 4; i++) {
        if (strcmp(names[i], your_name) == 0)
            flag = 1;
    }
    if (flag)
        printf("in\n");
    else
        printf("not\n");
    return 0;
}这样为什么就对?指针在里面起到什么作用?


```c
#include <stdio.h>
#include <string.h>

int main(void) {
    int i, flag = 0;
    char names[4] = {"Jack", "Joe", "Mike", "Junn"};
    char your_name[20];
    printf("Enter your name:");
    gets(your_name);
    for (i = 0; i < 4; i++) {
        if (strcmp(names[i], your_name) == 0)
            flag = 1;
    }
    if (flag)
        printf("in\n");
    else
        printf("not\n");
    return 0;
}
这样为什么就不对?

```

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-25 18:21
    关注

    引自免费微信小程序:皆我百晓生

    这个问题是关于如何在C语言中判断一个学生的姓名是否存在于班级中的。我们可以通过比较学生的姓名与班级成员的名字(在这个例子中是字符串数组)来进行这个判断。

    首先,我们需要定义一个字符串数组 names 来存储班级成员的名字。然后,在主函数中,用户输入他们的名字并将其存储在变量 your_name 中。接下来,我们遍历 names 数组,并通过 strcmp() 函数检查当前元素是否等于用户的姓名。如果是,则将标志位设置为 true 并返回到上一层循环继续遍历其他元素。

    以下是正确实现的例子:

    #include <stdio.h>
    #include <string.h>
    
    int main(void) {
        int i, flag = 0;
        char names[4] = {"Jack", "Joe", "Mike", "Junn"};
        char your_name[20];
    
        // 用户输入他们的名字并将其存储在变量 your_name 中
        printf("Enter your name:");
        fgets(your_name, sizeof(your_name), stdin);
    
        // 使用 strcpy() 将输入的名字复制到 names 数组的第一个位置
        strcpy(names[0], your_name);
    
        for (i = 1; i < 4; i++) { // 遍历 names 数组
            if (strcmp(names[i], your_name) == 0) {
                flag = 1;
                break; // 在找到匹配项后跳出循环
            }
        }
    
        if (flag) {
            printf("in\n"); // 如果找到了匹配项,输出 'in'
        } else {
            printf("not\n"); // 否则输出 'not'
        }
    
        return 0;
    }
    

    这段代码会提示用户输入他们的名字,并在名字存在时输出 "in",否则输出 "not"。这里的关键在于使用 fgets() 来读取用户输入,以及使用 strcpy() 将输入的名字复制到 names 数组的第一个位置。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月25日

悬赏问题

  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求