御笔剑客 发表于 2018-2-1 20:51:02

这段程序哪里出了问题呢?

/*
计算仅含有加法计算的表达式的值。该表达式长度不超过250,中间没有空格与括号,并且计算结果在整数范围内。
*/

#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
    int i=0,sum=0;
    string str;
    cin>>str;
    while(str!='\0')
    {
      int temp=0;
      while(isdigit(str))
      {
            temp+=temp*10 + str-'0';
            i++;
      }

      sum+=temp;
      i++;
    }
    cout<<sum<<endl;

    return 0;
}
运算结果不对,这段代码哪里有问题呢?

人造人 发表于 2018-2-1 21:03:30

要学会调试呀


御笔剑客 发表于 2018-2-2 00:03:09

人造人 发表于 2018-2-1 21:03
要学会调试呀

我就是不知道为什么会出现这种问题,按正常来说应该是12才对{:10_266:}

人造人 发表于 2018-2-2 00:12:13

temp += temp * 10 + str - '0';

temp = temp * 10 + str - '0';
有什么区别?

御笔剑客 发表于 2018-2-2 00:16:15

人造人 发表于 2018-2-2 00:12
temp += temp * 10 + str - '0';

temp = temp * 10 + str - '0';


哎呀,制杖了,谢谢了{:10_266:},

人造人 发表于 2018-2-2 00:19:01

御笔剑客 发表于 2018-2-2 00:16
哎呀,制杖了,谢谢了,

你的程序还有问题




i 等于 8
str 等于什么?


str 等于这个

御笔剑客 发表于 2018-2-2 00:33:40

人造人 发表于 2018-2-2 00:19
你的程序还有问题

对,这里确实要把第二个i++改一下
页: [1]
查看完整版本: 这段程序哪里出了问题呢?