如何在C语言中计算形如"10+5+6+31+3+45"字符串的完整数字和?
计算字符串中完整数字和的C语言实现
原代码仅逐个累加单个数字字符,无法识别连续数字组成的完整整数(比如将31拆为3+1),以下是修正后的实现,可正确识别并累加所有完整数字:
#include<stdio.h> int main() { char str[100] = "10+5+6+31+3+45"; int i, sum = 0, current_num = 0; for (i = 0; str[i] != '\0'; i++) { if (str[i] >= '0' && str[i] <= '9') { // 拼接连续数字,构建完整整数 current_num = current_num * 10 + (str[i] - '0'); } else if (str[i] == '+') { // 遇到分隔符,将当前数字加入总和并重置临时变量 sum += current_num; current_num = 0; } } // 处理最后一个数字(字符串末尾无分隔符) sum += current_num; printf("Sum of all complete numbers:\n%d", sum); return 0; }
核心逻辑说明
current_num变量:临时存储正在拼接的完整数字,初始化为0- 数字拼接:每遇到数字字符,将临时值乘以10(实现数位左移),再加上当前数字的数值,完成多位数构建
- 分隔符处理:遇到
+时,说明当前完整数字已拼接完成,将其加入总和并重置临时变量 - 末尾数字处理:循环结束后,最后一个完整数字尚未加入总和,需单独累加
内容的提问来源于stack exchange,提问作者Kazi Rayhan Reza Tirtho
相关产品推荐
相关产品推荐

