拆分一个整数并找到最大和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;