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

CS50作业:如何在C语言中实现重复输入验证逻辑?

实现CS50卡号输入的重复验证逻辑

你需要用do-while循环包裹输入和位数检查的逻辑,就能在输入无效时自动回到步骤1重新输入。以下是修改后的完整代码:

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

int main(void)
{
    long n;
    int digit_count;
    
    do
    {
        digit_count = 0;
        n = get_long("Number: ");
        
        // 统计输入数字的位数
        long temp = n;
        while (temp > 0)
        {
            temp /= 10;
            digit_count++;
        }
        
        // 位数不符合要求时输出INVALID
        if (digit_count != 13 && digit_count != 15 && digit_count != 16)
        {
            printf("INVALID\n");
        }
    } while (digit_count != 13 && digit_count != 15 && digit_count != 16);
    
    // 后续可添加Luhn算法验证等逻辑
    return 0;
}

关键改动说明:

  • do-while循环的使用:这种循环会先执行一次循环体代码(输入数字、统计位数、判断有效性),再根据条件决定是否重复,完美匹配你"无效则重新开始"的需求。
  • 重置位数计数器:每次循环开始时把digit_count设为0,确保每次统计的都是当前输入数字的位数,不会被上一次的结果干扰。
  • 循环终止条件:当输入数字的位数是13、15或16时,退出循环,程序可继续执行后续验证逻辑(比如CS50课程中的Luhn算法)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:48:11