You need to enable JavaScript to run this app. C语言调试:数字与字符串转换及信用卡验证作业问题
优惠活动
大模型
产品
解决方案
定价
更多

C语言调试:数字与字符串转换及信用卡验证作业问题

代码错误汇总与修正方案

1. 核心类型转换逻辑问题

  • 单个数字字符转整数无需用atoi,atoi要求入参是合法的以\0结尾的字符串,直接对单个字符做字符 - '0'运算即可得到对应整数值,例如'5' - '0' = 5。
  • 长整型long转字符串时,sprintf的格式化符要用%ld而非%d,%d仅适配int类型,长卡号会被截断导致错误。
  • 字符串转长整型可直接用atol函数,入参为完整的数字字符串即可。

2. 代码中具体语法&逻辑错误

2.1 Company_Check函数错误

  • 声明了字符数组num但未将传入的long number转储到数组中,直接读取num[0]/num[1]读取的是未初始化的垃圾值,需先加sprintf(num, "%ld", number);完成转换。
  • 语法错误:atoi([num[1])多写了左方括号,应改为num[1] - '0'。
  • 拼写错误:fist_one应为first_one。
  • 函数声明返回string类型,但全程无返回值,反而直接调用printf,会和main函数中的打印逻辑冲突导致重复输出,可将函数返回值改为void,或者直接返回对应卡组织字符串常量。

2.2 Luhn函数错误

  • 格式化符不匹配:sprintf(num, "%d", number);改为sprintf(num, "%ld", number);
  • 位数统计错误:当前循环逻辑会少算一位,正确的位数统计可直接用strlen(num)获取,无需自己写循环。
  • Luhn算法核心逻辑完全错误:没有实现「从右数偶数位每一位乘2,乘积大于9则拆分个位十位相加」的步骤,仅做了普通的各位累加。
  • 累加运算符错误:sum1 =+ atoi(fot[i]);应为sum1 += 对应数字值,=+是赋值为正数,不会做累加操作。
  • 入参类型错误:给atoi传单个字符fot[i]属于非法调用,会触发内存访问错误,直接用fot[i] - '0'取数值即可。

3. 关键逻辑修正示例

3.1 Luhn算法正确实现片段

bool Luhn(long number) {
    char num[30];
    sprintf(num, "%ld", number);
    int len = strlen(num);
    int sum = 0;
    // 从右往左遍历每一位
    for (int i = len - 1, count = 1; i >= 0; i--, count++) {
        int digit = num[i] - '0';
        // 偶数位(从右数第二位开始)乘2
        if (count % 2 == 0) {
            digit *= 2;
            // 大于9则拆分相加,等价于digit-9
            if (digit > 9) digit -= 9;
        }
        sum += digit;
    }
    // 总和模10为0则合法
    return sum % 10 == 0;
}

3.2 Company_Check函数修正片段

void Company_Check(long number) {
    char num[30];
    sprintf(num, "%ld", number);
    int len = strlen(num);
    int first_two = (num[0] - '0') * 10 + (num[1] - '0');
    int first_one = num[0] - '0';
    
    if (len == 15 && (first_two == 34 || first_two == 37)) {
        printf("American Express\n");
    } else if (len == 16 && (first_two >=51 && first_two <=55)) {
        printf("Mastercard\n");
    } else if ((len ==13 || len ==16) && first_one ==4) {
        printf("Visa\n");
    } else {
        printf("INVALID\n");
    }
}

内容的提问来源于stack exchange,提问作者Ignacio Balasch Sola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 09:36:03