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

C语言累加循环实现问题:求和至≥21时退出循环

解决整数累加直到总和≥21的C语言实现问题

嘿,我明白你想实现的功能:从初始值开始,不断让用户输入整数累加,直到总和达到21或更大就退出。你的核心思路(累加)是对的,但原来的for循环逻辑跑偏了——咱们来一步步修正它。

先说说你原来代码的问题

你写的这个for循环:

for(j=0; j+tot<22; j=j+tot)

逻辑完全不对:

  • 循环变量j在这里根本没用到用户输入的数值,反而在不断累加初始的tot值,这和你要的“用户输入数累加”完全不沾边
  • 循环条件j+tot<22也错了,我们需要判断的是**当前总和tot**是否小于21,而不是j加tot

正确的实现思路

用while循环更适合这种“不确定循环次数,满足条件就退出”的场景,步骤如下:

  1. 初始化总和tot为你的初始值(比如你简化的5)
  2. 当tot < 21时,进入循环:
    • 提示用户输入整数
    • 读取用户输入的数值,加到tot上
    • 可以输出当前总和,让用户清楚进度
  3. 当总和≥21时,退出循环,提示结束

完整代码示例

#include <stdio.h>

void additionFunction() {
    int tot = 5; // 初始值,实际可以替换成cat.firstCard+cat.secondCard
    int userInput;

    printf("当前总和:%d\n", tot);
    // 当总和小于21时,继续循环
    while (tot < 21) {
        printf("请输入一个整数进行累加:");
        // 读取用户输入(这里简单处理,实际可以加输入有效性判断)
        scanf("%d", &userInput);
        
        tot += userInput; // 等价于 tot = tot + userInput
        printf("累加后总和:%d\n", tot);
    }

    printf("总和已达到或超过21,程序退出。最终总和:%d\n", tot);
}

int main() {
    additionFunction();
    return 0;
}

关键细节解释

  • while(tot < 21):直接判断当前总和是否还没到21,完全贴合我们的退出条件
  • tot += userInput:这就是你想要的“把用户输入的数累加到总和上”的简洁写法,和tot = tot + userInput功能完全一致
  • 可选优化:可以加上输入验证,防止用户输入非整数导致程序出错,比如:
    if (scanf("%d", &userInput) != 1) {
        printf("请输入有效的整数!\n");
        // 清空输入缓冲区,避免死循环
        while (getchar() != '\n');
        continue;
    }
    

这样修改后,代码就能完美实现你想要的功能啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:03:22