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

C/C++用户输入统计问题修复:编程语言偏好计数始终为0

修复编程语言偏好计数程序的统计问题

问题根源

  • 整数与字符常量比较错误:变量lang是int类型,你输入的是整数1-4,但判断条件里用了lang == '1'这类字符常量。字符'1'的ASCII值是49,和整数1完全不相等,导致所有计数分支都不会执行,最终输出全为0。
  • 首次输入未被统计:程序开头第一次获取的lang值没有经过计数处理就直接进入循环判断,这部分用户选择的数据被遗漏了。
  • 计数变量类型冗余:用float存储整数计数没必要,改用int类型更合理高效。

修复后的代码

#include <stdio.h>

int main() {
    char ye;
    int lang;
    int clan = 0, java = 0, pyth = 0, mat = 0;

    // 处理首次输入并计数
    printf("Favorite programming language C(1), Java(2), Python(3), Matlab(4): ");
    scanf("%d", &lang);
    if (lang == 1) {
        clan++;
    } else if (lang == 2) {
        java++;
    } else if (lang == 3) {
        pyth++;
    } else if (lang == 4) {
        mat++;
    }

    printf("Continue (y/n): ");
    scanf(" %c", &ye);

    while (ye == 'y') {
        printf("Favorite programming language C(1), Java(2), Python(3), Matlab(4): ");
        scanf("%d", &lang);

        // 修正为整数常量比较
        if (lang == 1) {
            clan++;
        } else if (lang == 2) {
            java++;
        } else if (lang == 3) {
            pyth++;
        } else if (lang == 4) {
            mat++;
        }

        printf("Continue (y/n): ");
        scanf(" %c", &ye);
    }

    // 用%d输出整数计数更准确
    printf("C: %d\n", clan);
    printf("Java: %d\n", java);
    printf("Python: %d\n", pyth);
    printf("Matlab: %d\n", mat);

    return 0;
}

关键修改说明

  1. 将所有lang == '1'这类判断改为lang == 1,匹配int类型变量的比较逻辑。
  2. 给首次输入的lang添加计数逻辑,避免用户第一次选择的数据丢失。
  3. 把计数变量从float改为int,输出时用%d格式符,符合计数的整数属性。
  4. 用clan++替代clan=clan+1,写法更简洁规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:20:35