如何在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
相关产品推荐
相关产品推荐

