C++ 关于SIGTSTP错误和无终止输入

C++ 关于SIGTSTP错误和无终止输入,c++,c++11,stl,c++14,c++17,C++,C++11,Stl,C++14,C++17,下面的代码给出了SIGTSTP,但我无法找到故障。原始问题链接是:。请帮忙 #include<bits/stdc++.h> using namespace std; int main() { int x,sum=0,count=0; string s; cin>>s; while(s.length()>1){ for(int i=0;i<s.length();i++){ x=s[i]-'0

下面的代码给出了SIGTSTP,但我无法找到故障。原始问题链接是:。请帮忙

 #include<bits/stdc++.h>
 using namespace std;

  int main()
  {
    int x,sum=0,count=0;
    string s; cin>>s;


    while(s.length()>1){

      for(int i=0;i<s.length();i++){
        x=s[i]-'0';
        sum+=x;
      }
      s=std::to_string(sum);
      count++;
    }


    cout<<count;      
    return 0;
  }
#包括
使用名称空间std;
int main()
{
整数x,和=0,计数=0;
字符串s;cin>>s;
而(s.长度()>1){

对于(inti=0;i,假设输入为
19

外循环的第一次迭代将使
sum
等于
10
,并将
s
设置为
“10”

外循环的第二次迭代(当
s
“10”
时)将
1
(和
0
)添加到
和中,使其等于
11
,因此当内循环结束时,
s
将变成
“11”

外循环的第三次迭代将
2
1
1
)添加到
sum
,因此
sum
变为
13
s
变为
“13”

永远如此

s
的长度永远不会等于(或小于)
1
,这会导致无限循环。这可能会由于超时而被在线系统停止

我还没有阅读问题描述(将来请将其包含在问题中,以使您的问题独立),但您的算法是错误的,您需要重新思考您的解决方案。很可能您应该在内部循环之前重置
sum
(即
sum=0;
),或者最好在内部循环中定义它:

int x,count=0;
string s; cin>>s;

while(s.length()>1){
  int sum = 0;

  for(int i=0;i<s.length();i++){
    x=s[i]-'0';
    sum+=x;
  }
  s=std::to_string(sum);
  count++;
}
intx,计数=0;
字符串s;cin>>s;
而(s.长度()>1){
整数和=0;

对于(int i=0;i)与您的问题无关,但请阅读,对于您的问题,我建议您学习如何使用调试器在监视变量及其值时逐条检查代码语句。感谢您的建议,但我应用了大量的打印语句,但没有一个有帮助:(
#包括使用命名空间std;
-不。只是不。永远不要这样做。