本示例展示了如何在C语言中处理用户输入的字符串,特别是当输入包含两个由加号分隔的数字时,如何提取这些数字并计算它们的和。
首先,需要包含必要的头文件以确保程序能够正确编译和运行:
#define _CRT_SECURE_NO_WARNINGS
#include
#include
int main() {
char input[40] = { 0 };
char num1[20] = { 0 };
char num2[20] = { 0 };
char result[20] = { 0 };
printf("请输入两个以加号分隔的数字:");
gets_s(input, 40);
int length = strlen(input);
int index = 0, num1Index = 0, num2Index = 0;
int flag = 1;
while (index if (input[index] == '+') {
flag = 2;
index++;
}
if (flag == 1 && input[index] != ' ') {
num1[num1Index++] = input[index];
}
if (flag == 2 && input[index] != ' ') {
num2[num2Index++] = input[index];
}
index++;
}
// 调试输出
// printf("%s\n", num1);
// printf("%s\n", num2);
int len1 = strlen(num1) - 1;
int len2 = strlen(num2) - 1;
int tempSum = 0;
int carry = 0;
index = 18;
while (index >= 0) {
tempSum = 0;
if (len1 >= 0) {
tempSum += num1[len1] - '0';
len1--;
}
if (len2 >= 0) {
tempSum += num2[len2] - '0';
len2--;
}
if (len1 != -1 || len2 != -1 || carry || tempSum) {
result[index] += carry + tempSum % 10 + '0';
carry = tempSum / 10;
index--;
} else {
break;
}
}
printf("计算结果为:%s", result + index + 1);
}
上述代码首先定义了几个字符数组用于存储用户输入的原始字符串、两个数字字符串以及最终的结果字符串。通过循环遍历输入字符串,根据加号的位置将字符串分割成两部分,分别存储到两个不同的数组中。然后,通过从后向前逐位相加的方式计算这两个数字的和,并将结果存储在结果数组中。最后,输出计算得到的结果。