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

如何在C语言for循环中为变量赋值而非仅打印(用于计算)

解决思路与代码修改

在C语言里没法自动生成a、b、c这类动态命名的变量,所以你需要用数组来存储信用卡号的每一位数字——既能保留每一位的值用于后续计算,也能按你想要的格式输出。

下面是修改后的代码,实现了存储每一位、按字母标识输出,以及求和计算:

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

int main(void)
{
    long credit = get_long("What's your Credit Number?(No Hyphens) ");
    long temp = credit; // 用临时变量处理,避免修改原输入值
    int digits[16]; // 信用卡号最多16位,数组长度足够覆盖
    int count = 0;

    // 提取每一位数字存入数组
    while (temp != 0)
    {
        digits[count] = temp % 10;
        temp = temp / 10;
        count++;
    }

    // 按要求格式输出字母和对应数字
    for (int i = 0; i < count; i++)
    {
        printf("%c = %i\n", 'a' + i, digits[i]);
    }

    // 输出求和表达式并计算总和
    printf("=");
    for (int i = 0; i < count; i++)
    {
        if (i > 0) printf("+");
        printf("%c", 'a' + i);
    }
    printf("\n=");
    int sum = 0;
    for (int i = 0; i < count; i++)
    {
        if (i > 0) printf("+");
        printf("%i", digits[i]);
        sum += digits[i];
    }
    printf("\n=%i\n", sum);

    return 0;
}

关键部分说明:

  • 用temp临时变量处理卡号,避免修改原始输入值(后续若需用到原号码时更灵活)
  • digits数组存储每一位数字,count记录卡号的总位数
  • 第一个while循环从右到左提取每一位数字存入数组
  • 第一个for循环通过'a' + i自动生成从a开始的字母标识,对应输出每一位数字
  • 后续循环分别输出变量相加表达式、数字相加表达式,同时计算总和sum

测试输入1400214时,输出会和你期望的完全一致:

What's your Credit Number?(No Hyphens) 1400214
a = 4
b = 1
c = 2
d = 0
e = 0
f = 4
g = 1
=a+b+c+d+e+f+g
=4+1+2+0+0+4+1
=12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:57:21