0) { 数字=输入%10; 总和=总和+位数; 输入=输入/10; } 如果(总和>最大值) 最大=总和; }while(输入); 库特,c++,C++" /> 0) { 数字=输入%10; 总和=总和+位数; 输入=输入/10; } 如果(总和>最大值) 最大=总和; }while(输入); 库特,c++,C++" />

拆分一个整数并找到最大和C++; 我开始自己学习C++,我对我正在完成的一个作业感到困惑。用户应该输入自然数,直到输入0为止。在那之后,我的程序应该找到输入的最大数字和并打印出来。它还应该打印出一个数字,从中得出总数。 以下是我试图做的: #include <iostream> #include <string> using namespace std; int main() { int input = 0; int digit; int sum = 0; int largest = 0; do { cout << "enter a natural number (0 if done): " << flush; cin >> input; while (input > 0) { digit = input % 10; sum = sum + digit; input = input / 10; } if (sum > largest) largest = sum; } while (input); cout << "Max sum of digits was " << largest << "for" << endl; } #包括 #包括 使用名称空间std; int main() { int输入=0; 整数位数; 整数和=0; int最大=0; 做 { 不能输入; while(输入>0) { 数字=输入%10; 总和=总和+位数; 输入=输入/10; } 如果(总和>最大值) 最大=总和; }while(输入); 库特

拆分一个整数并找到最大和C++; 我开始自己学习C++,我对我正在完成的一个作业感到困惑。用户应该输入自然数,直到输入0为止。在那之后,我的程序应该找到输入的最大数字和并打印出来。它还应该打印出一个数字,从中得出总数。 以下是我试图做的: #include <iostream> #include <string> using namespace std; int main() { int input = 0; int digit; int sum = 0; int largest = 0; do { cout << "enter a natural number (0 if done): " << flush; cin >> input; while (input > 0) { digit = input % 10; sum = sum + digit; input = input / 10; } if (sum > largest) largest = sum; } while (input); cout << "Max sum of digits was " << largest << "for" << endl; } #包括 #包括 使用名称空间std; int main() { int输入=0; 整数位数; 整数和=0; int最大=0; 做 { 不能输入; while(输入>0) { 数字=输入%10; 总和=总和+位数; 输入=输入/10; } 如果(总和>最大值) 最大=总和; }while(输入); 库特,c++,C++,更改输入 用类似的东西替换它 int input2 = input; while (input2 > 0) { digit = input2 % 10; sum = sum + digit; input2 = input2 / 10; } 试试看 如果我们不将sum值归零,它将累加所有输入数字的和,并且和总是大于maximum值,因为它存储当前值数字的maximum+sum。因此,如果我们将sum值归零,它只包含当前输入的数字和,与以前的相比可以简单一些其中最大的

更改
输入

用类似的东西替换它

int input2 = input;
while (input2 > 0) {
    digit = input2 % 10;
    sum = sum + digit;
    input2 = input2 / 10;
}
试试看

如果我们不将
sum
值归零,它将累加所有输入数字的和,并且和总是大于
maximum
值,因为它存储当前值数字的
maximum+sum
。因此,如果我们将
sum
值归零,它只包含当前输入的数字和,与以前的相比可以简单一些其中最大的一个是

#include <iostream>
#include <conio.h>

using namespace std;



int main() {

    int input = 0;
    int digit;
    int sum = 0;
    int largest = 0;

    do
    {
        while (input > 0) {
            digit = input % 10;
            sum = sum + digit;
            input = input / 10;
            }
                if (sum > largest)
                    largest = sum;

        sum = 0; // set to 0 current sum

        cout << "enter a natural number (0 if done): " << flush;
        cin >> input;

    } while (input);

   cout << "Max sum of digits was " << largest << " for" << endl;

   _getch();

   return 0;
}
#包括
#包括
使用名称空间std;
int main(){
int输入=0;
整数位数;
整数和=0;
int最大=0;
做
{
while(输入>0){
数字=输入%10;
总和=总和+位数;
输入=输入/10;
}
如果(总和>最大值)
最大=总和;
sum=0;//设置为0当前sum
不能输入;
}while(输入);
在这一部分中:

while (input > 0) {
  digit = input % 10;
  sum = sum + digit;
  input = input / 10;
}
当输入不为零时,它将重复,因此当退出循环时,输入的值为0。使用辅助变量或将此代码括在函数中:

 int getDigitsSum(int input) {
      while (input > 0) {
        digit = input % 10;
        sum = sum + digit;
        input = input / 10;
      }
      return sum;
 }

您在这里似乎有三个问题:

1-您试图使用一个在while循环中基本设置为零的变量

2-你似乎在寻找最大和的输入

3-您没有为每个输入重置sum变量

第一个问题的解决方案是在修改输入并将该变量用于while循环之前,将其“备份”到另一个变量中

这也允许您获取输入的最大数字并将其存储

int input = 0;
int inputBackup = 0;
int digit;
int sum = 0;
int largest = 0;
int largestInput = 0;
要添加
inputBackup
变量,请将其置于
cin
之后

然后在
sum>maximust
if语句中设置
largestInput
,以设置
largestInput
是否最大

cout << "enter a natural number (0 if done): " << flush;
cin >> input;

inputBackup = input;// This line
sum = 0;            // and this line

while (input > 0)
{
    digit = input % 10;
    sum = sum + digit;
    input = input / 10;
}
if (sum > largest)
{
    largest = sum;
    largestInput = inputBackup;// Store largest input
}
你的代码应该是固定的


快乐编码!

什么是“摘要和”?当你退出
while(input>0)
循环时,
input==0
(因为上一次迭代的
input=input/10;
将返回0)。因此,当你点击
}while(input);
时,条件是
false
,并且你从外部
do{..}而
从第一次迭代开始循环。这就是为什么你只得到了
1
迭代。你可以简单地将输入代码替换到循环的末尾,它将正常工作,因为你用0初始化输入变量,因此你的内部循环将被忽略。它工作得更好,但不是我需要的方式。现在它计算s嗯,所有输入的数字,但我需要每个数字的数字之和。然后,程序应该选择最大的数字之和。也许你可以推荐怎么做?Yeees!!很有效。非常感谢!!你能用几句话解释为什么sum=0;改变一切吗?它计算所有数字的和,但我仍然需要每个数字的和r我输入:(你忘了这太好了!非常感谢)没问题!我只是看到你的问题中似乎有比你最初说的问题更多的问题
int input = 0;
int inputBackup = 0;
int digit;
int sum = 0;
int largest = 0;
int largestInput = 0;
cout << "enter a natural number (0 if done): " << flush;
cin >> input;

inputBackup = input;// This line
sum = 0;            // and this line

while (input > 0)
{
    digit = input % 10;
    sum = sum + digit;
    input = input / 10;
}
if (sum > largest)
{
    largest = sum;
    largestInput = inputBackup;// Store largest input
}
cout << "Max sum of digits was " << largest << " for " << largestInput << endl;