为什么Cout在这里如此重要?

时间:2018-12-25 20:49:57

标签: c++

给出一个十进制整数N,在相应的二进制数中找到数字1。 我试图从一个整数中找出一个二进制数中有多少个1。 但是无论有无,我都坚持在这里。

所以我想知道角色是什么'cout <<“ Reminder =” <<提醒<

#include <iostream>
using namespace std;

int main(int argc, const char * argv[])
{
    int n = 0;
    int num[n];



    cout << "Enter a set of integers: "<< endl;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> num[i];
    }
    cout << "num of arrays: "<< endl;
    for (int i = 0; i < n; i++)
    {
        cout << num[i] << " ";
    }
    cout << endl;

    for(int i = 0; i < n; i++)
    {
         int reminder = 0;
         int numOfOnes = 0;
        if(num[i] <= 0)
        {
            numOfOnes = 0;
        }
        else
        {
            while (num[i] > 0)
            {
                reminder = num[i] % 2;
                num[i] = num[i] / 2;
                cout <<" Reminder = "<< reminder<<endl;

                if( reminder == 1)
                {
                    numOfOnes++;
                }
            }
        }
        cout <<"Number of ones= "<< numOfOnes << endl;
    }


}

打印:

num of arrays: 
2 100 1000 66 0 
 Reminder = 0
 Reminder = 1
Number of ones= 1
 Reminder = 0
 Reminder = 0
 Reminder = 1
 Reminder = 0
 Reminder = 0
 Reminder = 1
 Reminder = 1
Number of ones= 3
 Reminder = 0
 Reminder = 0
 Reminder = 0
 Reminder = 1
 Reminder = 0
 Reminder = 1
 Reminder = 1
 Reminder = 1
 Reminder = 1
 Reminder = 1
Number of ones= 6
 Reminder = 0
 Reminder = 1
 Reminder = 0
 Reminder = 0
 Reminder = 0
 Reminder = 0
 Reminder = 1
Number of ones= 2
Number of ones= 0

但是,如果我没有'cout <<“ Reminder =” <<提醒<

Number of ones= 1
Number of ones= 3
Number of ones= 0
Number of ones= 15
Number of ones= 0

2 个答案:

答案 0 :(得分:0)

问题是:int n = 0;整数num [n] 使用向量解决了问题。

#include <iostream>
#include <vector>
using namespace std;

int main(int argc, const char * argv[])
{
    int n = 0;
    //int num[n];
    vector<int> v;



    cout << "Enter a set of integers: "<< endl;
    cin >> n;
    int num;
    for (int i = 0; i < n; i++)
    {
        cin >> num;
        v.push_back(num);
    }
    cout << "num of arrays: "<< endl;
    for (int i = 0; i < n; i++)
    {
        cout << v[i] << " ";
    }
    cout << endl;



    for(int i = 0; i < n; i++)
    {
        int numOfOnes = 0;
        int reminder = 0;

        if(v[i] <= 0)
        {
            numOfOnes = 0;
        }

            while (v[i] > 0)
            {
                reminder = v[i] % 2;
                v[i] = v[i] / 2;
                //cout <<" Reminder = "<< reminder<<endl;

                if( reminder == 1)
                {
                    numOfOnes++;
                }
            }
        cout <<"Number of ones= "<< numOfOnes << endl;
    }

答案 1 :(得分:0)

方法2: 只需更改以下位置:int num [n];

#include     使用命名空间std;

int main(int argc, const char * argv[])
{

    // method 1:

    int n;
    cout << "Enter a set of integers: "<< endl;
    cin >> n;
    int num[n];
    for (int i = 0; i < n; i++)
    {
        cin >> num[i];
    }
    cout << "num of arrays: "<< endl;
    for (int i = 0; i < n; i++)
    {
        cout << num[i] << " ";
    }
    cout << endl;

    for(int i = 0; i < n; i++)
    {
        int reminder = 0;
        int numOfOnes = 0;
        if(num[i] <= 0)
        {
            numOfOnes = 0;
        }
        else
        {
            while (num[i] > 0)
            {
                reminder = num[i] % 2;
                num[i] = num[i] / 2;
                //cout <<" Reminder = "<< reminder<<endl;

                if( reminder == 1)
                {
                    numOfOnes++;
                }
            }
        }
        cout <<"Number of ones= "<< numOfOnes << endl;
    }
}