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

C语言统计数值出现次数的函数每次返回相同值问题求助

问题根因

你的update_level函数中所有if条件语句的末尾都多写了多余的分号;,这是导致逻辑异常的核心原因。
C语言中if的语法规则是:if(条件) 执行语句,如果条件后紧跟分号,代表这个if对应的执行语句是空语句,条件判断结果仅决定是否执行这个无意义的空语句,和后续大括号包裹的代码块没有任何关联。大括号内的代码会不受判断条件限制,按代码顺序无条件执行。
当你把pointsAmount >=50的判断放在最上层时,大括号里的return 5会第一个被无条件执行,自然不管输入什么值,函数都会直接返回5。

修复方案

删除所有if条件末尾的多余分号即可,修正后的update_level函数代码如下:

int update_level(int pointsAmount)
{
    int update_level = 0;

    if (pointsAmount >= 0&&pointsAmount <= 9)
        {
            update_level=0;
            return update_level;
        }
    if (pointsAmount >= 10&&pointsAmount <= 19)        
        {
            update_level=1;
            return update_level;
        }
    if (pointsAmount >= 20&&pointsAmount <=29)
        {
            update_level=2;
            return update_level;
        }
    if (pointsAmount >= 30&&pointsAmount <=39)
        {
            update_level=3;
            return update_level;
        }
    if (pointsAmount >= 40&&pointsAmount <=49)
        {
            update_level=4;
            return update_level;
        }
    if (pointsAmount >=50)
        {
            update_level=5;
            return update_level;
        }
    // 兼容输入为负数的边界情况,可根据业务需求调整返回值
    return -1;
}
可选优化

你的区间规则是每10个数值对应一个索引,50及以上统一返回5,可以直接用整数除法简化代码,不需要写多个if判断:

int update_level(int pointsAmount)
{
    if (pointsAmount < 0) return -1; // 负数输入处理,按需调整
    return pointsAmount >=50 ? 5 : pointsAmount / 10;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:45:00