嗨,我是c ++的新手。在一项作业中,我需要将所有输入数字加起来,然后将数字与总和显示在彼此旁边。
示例:
输入:1234,输出:1 2 3 4 10
到目前为止,这是我的代码:
#include <iostream>
using namespace std;
int main()
{
int myNum;
int total = 0;
int digit;
cout << "Enter a number" << endl;
cin >> myNum;
while(myNum >0)
{
digit =myNum %10;
myNum/=10;
total += digit;
}
while(myNum <0) {
digit =myNum %10;
myNum /=10;
total +=digit;
}
cout << "The sum of digit is:" << myNum << total << endl;
return 0;
}
第二个while循环是处理负数,但是当我放cout
打印我输入的值时,就降到了myNum
上,它只在总数的前面打印0
,是因为没有保留值的任何原因,还是我该如何继续保留这些值?
答案 0 :(得分:5)
我更新了代码以满足您的原始要求。输入:1234输出1 2 3 4 10
重复使用/ =运算符后,原始代码打印了myNum
变量。结果将始终为零。
要求指定必须打印输入的每个数字以及总数。为了保存中间结果,引入了向量。产生每个数字时,将其推入向量。
一旦输入用尽,就可以打印出各个数字和总数。反向遍历矢量,以从左到右的顺序打印数字。
using namespace std;
int main(int arg, char*argv[])
{
int myNum;
vector<int> digits;
int total = 0;
int digit;
cout << "Enter a number" << endl;
cin >> myNum;
while(myNum >0)
{
digit =myNum %10;
myNum/=10;
total += digit;
digits.push_back(digit);
}
while(myNum <0){
digit =myNum %10;
myNum /=10;
total +=digit;
digits.push_back(digit);
}
for (auto it = digits.rbegin(); it != digits.rend(); ++it)
cout << *it << " ";
cout << total << endl;
return 0;
}
答案 1 :(得分:1)
如果严格不要求按相同顺序排列数字序列,则无需使用容器。
您可以随便打印它们...
#include <iostream>
using namespace std;
int main()
{
int myNum;
int total = 0;
int digit;
cout << "Enter a number" << endl;
cin >> myNum;
cout << "The sum of digits : ";
while(myNum > 0)
{
digit =myNum %10;
myNum/=10;
total += digit;
cout << digit << " ";
}
while(myNum < 0) {
digit =myNum %10;
myNum /=10;
total +=digit;
cout << digit << " ";
}
cout << "is : " << total << endl;
return 0;
}