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

编写乐透程序遇comparison between pointer and integer错误求助

解决乐透程序中的"comparison between pointer and integer"错误

你的代码出现的错误都是C语言字符串和基础类型操作的典型新手问题,下面逐个分析并给出修正方案:

核心错误原因

  • 指针与整数直接比较:a和b是字符数组,数组名本质是指向数组首地址的指针,a >= 0是把内存地址和整数0做比较,完全不是你要判断输入是否为0-36数字的逻辑。
  • 字符串比较用==:C语言中==比较的是字符串的内存地址,不是内容。判断字符串相等必须用strcmp()函数(返回0表示相等)。
  • 字符串用单引号包裹:'Red'是非法写法,单引号只能用于单个字符,字符串必须用双引号,比如"Red"。
  • 逻辑判断优先级混乱:原代码中||和&&的优先级没处理好,导致颜色判断的逻辑不符合预期,需要用括号明确分组。

修正后的完整代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h> // 用于atoi字符串转整数函数

int main()
{
    char input_a[10];
    char input_b[10];
    
    scanf("%s %s", input_a, input_b);

    // 将输入字符串转成整数,同时验证是否为有效0-36数字
    int num_a = atoi(input_a);
    int num_b = atoi(input_b);
    // 额外判断:避免非数字字符串(如"abc")转成0后被误判为有效数字
    int is_a_valid_num = (num_a >= 0 && num_a <= 36) && (strcmp(input_a, "0") == 0 || num_a != 0);
    int is_b_valid_num = (num_b >= 0 && num_b <= 36) && (strcmp(input_b, "0") == 0 || num_b != 0);

    // 情况1:两个都是有效数字且相等
    if (is_a_valid_num && is_b_valid_num)
    {
        if (num_a == num_b)
        {
            printf("36ggr");
        }
        else
        {
            printf("Inget vinst");
        }
    }
    // 情况2:两个都是指定颜色且相等
    else if ( (strcmp(input_a, "Red") == 0 || strcmp(input_a, "green") == 0 || strcmp(input_a, "black") == 0) 
           && (strcmp(input_b, "Red") == 0 || strcmp(input_b, "green") == 0 || strcmp(input_b, "black") == 0) )
    {
        if (strcmp(input_a, input_b) == 0)
        {
            printf("2ggr");
        }
        else
        {
            printf("Inget vinst");
        }
    }
    // 无效输入或不匹配的情况
    else
    {
        printf("Inget vinst");
    }
    
    return 0;
}

关键改动说明

  1. 数字有效性判断:用atoi()把字符串转成整数后,额外检查原字符串是否为"0"(避免非数字转成0的误判),确保输入确实是0-36的有效数字。
  2. 字符串比较:全部用strcmp()替代==,正确判断字符串内容是否相等。
  3. 逻辑分组:给颜色判断的条件加上括号,确保逻辑是“a是指定颜色且b是指定颜色”,避免优先级导致的逻辑错误。
  4. 分支拆分:把数字和颜色的判断分成独立分支,代码逻辑更清晰,也避免了原代码中分支嵌套混乱的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:10:30