C语言中将重复数字拼接为整数并实现求和的问题求助
生成重复数字整数并求和的实现方案
要解决生成i个i形式的整数并累加求和的问题,可在输出表达式的同步逻辑里,用临时变量逐步构建目标整数,再累加到总和中。具体实现逻辑:
- 对每个i(从1到n),初始化临时变量
current_num为0 - 循环i次,每次执行
current_num = current_num * 10 + i——比如i=3时,三次循环后会得到333 - 将构建好的
current_num加到总和sum里
修改后的完整代码:
#include <stdio.h> int main() { printf("Program calculates a sum.\nAutor: Jakub Drozd\n"); int n; long long sum = 0; // 用long long避免溢出,n=9时总和为123456790,int虽足够但long long更稳妥 printf("Enter the length of the sum (no more than 9): "); while (scanf_s("%d", &n)!=1 || n < 1 || n >9 || getchar()!='\n') { printf("Wrong input, enter the length of the sum: "); int c; while ((c = getchar()) != '\n' && c != EOF) ; } for (int i = 1; i <= n; i++) { if (i != 1) { printf(" + "); } long long current_num = 0; for (int j = 1; j <= i; j++) { current_num = current_num * 10 + i; printf("%d", i); } sum += current_num; } printf(" = %lld\n", sum); printf("End of the program\n"); return 0; }
关键修改点说明:
- 类型优化:把
sum和current_num改为long long,虽然n≤9时总和在int范围内,但用64位整数能避免潜在溢出风险,是更严谨的写法。 - 输入校验完善:在循环条件里加入
n>9的判断,确保输入严格符合1-9的要求。 - 求和逻辑嵌入:在输出重复数字的循环中同步构建目标整数,直接累加到总和,无需额外处理字符串转整数的步骤。
- 结果输出:在表达式末尾追加结果输出,完成题目要求的“输出求和表达式及其结果”的需求。
内容的提问来源于stack exchange,提问作者Veanty
相关产品推荐
相关产品推荐

