gpt4 book ai didi

c - 字符串计算

转载 作者:行者123 更新时间:2023-11-30 20:26:47 25 4
gpt4 key购买 nike

我得到了一个练习,制作一个只有添加功能的字符串计算器。当数字不分开时,这些数字组成一个整数。当输入为 11 时,程序可能不会执行 1 + 1,但必须使其变为 11。

当我执行以下程序时,它在屏幕上打印“Sum = 111”,有谁知道为什么它不打印 11 并且可能有解决方案?

int main(void)
{
int sum = Add("11");

if(sum == -1)
{
printf("Can not return a sum");
}
else
{
printf("Sum = %d\n", sum);
}
}

extern int Add(char* numbers)
{
size_t string_length = strlen(numbers);
int Sum = 0;
int index = 0;
char number_string[255];
int number = 0;

if(string_length == 0)
{
Sum = 0;
return Sum;
}
else if(string_length == 1)
{
if(isdigit(numbers[0]))
{
Sum = numbers[0] - '0';
}
else
{
return -1;
}
return Sum;
}
else if(string_length >= 2)
{
for(index; index <= string_length; index++)
{
if(isdigit(numbers[index]))
{
strcat(number_string, &numbers[index]);
}
else if(!isdigit(numbers[index]))
{
Sum += atoi(number_string);
memset(number_string, 0, 255);
}
else
{
return -1;
}
}
return Sum;
}
else
{
return -1;
}
}

最佳答案

你的函数使用了strcat,你可以调试并看看它是如何工作的:

  1. 第一次迭代 - 将字符串“11”(&numbers[0] 指向字符串的开头)附加到 number_string
  2. 第二次迭代 - 将字符串“1”(&numbers[1] 指向第二个符号)附加到 number_string

这就是获得“111”的方式

您需要做的是将字符串转换为数字而不连接,如下所示:

int Add(char* numbers) {
int n = 0;
for (; *numbers; numbers++)
if (isdigit(*numbers))
n = n*10 + (*numbers - '0');
return n;
}

关于c - 字符串计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24092365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com