You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何将字符串与项目列表比对?求新手友好的实现方法

问题解答

你编写的这段代码无法正常运行,存在以下几处核心错误:

  • 依赖缺失:strcmp函数定义在<string.h>头文件中,你没有引入该头文件,编译会直接报错。
  • 逻辑用法错误:C语言的strcmp函数仅支持单次比对两个字符串,不能将多个字符串用||(逻辑或)拼接后直接作为参数传入strcmp,||只能用来连接两个返回布尔值的判断语句。
  • 语法位置错误:strcmp的相等判断条件==0位置写错,正确写法为strcmp(字符串1, 字符串2) == 0,你将==0写到了第二个参数的内部,完全不符合语法规则。
  • 冗余符号错误:if和else if的判断语句末尾多写了分号;,分号会直接结束判断逻辑,后续大括号内的代码会不受判断条件约束直接执行,打乱程序流程。
  • 拼写错误:存在多处笔误,比如变量名user_imput应为user_input,输出内容的Fuit应为Fruit、Vegtable应为Vegetable,蔬菜列表里的tomatoe正确拼写为tomato。

新手友好的简单实现方案

以下是逻辑清晰、不需要额外掌握复杂知识点的修正代码,完全满足你的需求:

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

int main(void)
{
    string user_input = get_string("Fruit or Vegetable?, ");

    if (strcmp(user_input, "apple") == 0 || strcmp(user_input, "blueberries") == 0 || 
        strcmp(user_input, "cherries") == 0 || strcmp(user_input, "bananas") == 0 ||
        strcmp(user_input, "grapes") == 0 || strcmp(user_input, "oranges") == 0 ||
        strcmp(user_input, "watermelon") == 0 || strcmp(user_input, "lemons") == 0)
    {
        printf("Fruit!, %s\n", user_input);
    }
    else if (strcmp(user_input, "potatoes") == 0 || strcmp(user_input, "tomato") == 0 ||  
             strcmp(user_input, "onions") == 0 ||  strcmp(user_input, "carrot") == 0 || 
             strcmp(user_input, "bellpepper") == 0 || strcmp(user_input, "lettuce") == 0 || 
             strcmp(user_input, "cucumbers") == 0 || strcmp(user_input, "broccoli") == 0)
    {
        printf("Vegetable! %s\n", user_input);
    }
    else
    {
        printf("NA");
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者Joeyxfp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 20:36:03