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

C语言已声明的creditcardno提示未声明标识符错误如何解决?

错误原因
  • 变量作用域不匹配:C语言中函数内部定义的变量为局部变量,仅在所属函数的{}范围内生效。你声明的creditcardno是main函数内的局部变量,超出main函数的闭合大括号后就会被系统回收,后续代码访问时自然会被识别为未声明的标识符。
  • 代码结构不符合C语言规范:统计卡号位数的可执行代码直接写在了main函数之外,C语言要求所有可执行语句必须放在函数内部,不能直接写在全局作用域。
  • 额外的语法&逻辑错误:
    1. while (cc>0);末尾多了分号,会导致循环体为空,后续大括号内的代码不会被循环执行,触发死循环
    2. 循环体内赋值逻辑错误,cc = creditcardno/10;每次都用原始卡号计算,无法逐步缩短卡号,同样会触发死循环
修复方案

将统计卡号位数的代码全部移到main函数内部,修正循环语法和逻辑即可,完整修复代码如下:

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

int main(void)
{
    long creditcardno;
    do
    {
        creditcardno = get_long("enter");
    }
    while (creditcardno<1000000000000 || 
           creditcardno > 9999999999999999);

    int i = 0;
    long cc = creditcardno;
    while (cc>0)
    {
        cc = cc/10;
        i++;
    }
    // 后续可继续使用i(卡号位数)完成其他逻辑
    return 0;
}

内容的提问来源于stack exchange,提问作者Splendid Digital Solutions

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:27:06