当前位置 : 主页 > 编程语言 > c++ >

c cin值返回0而不是输入值

来源:互联网 收集:自由互联 发布时间:2021-06-23
嗨,我对c非常新.在我需要添加所有数量的输入的作业上工作,然后用总和显示彼此相邻的数字. 例: 输入:1234,输出:1 2 3 4 10 到目前为止,这是我的代码: #include iostreamusing namespace std;i
嗨,我对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循环是处理负数,但是当我把myNum打印到我输入的值时,它会在总数前面打印0,任何原因值都没有被转移或者我怎么能如何让它继续?

我更新了代码以满足您的原始要求.输入: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;
}
网友评论