c ++关于循环,错误输出

c++ about looping , wrong output

刚开始学C++,想问一下为什么我的简单代码输出不对。

我想要的:

user input N -> output = " N number that mod 2 =0 but not mod 3=0"

我得到了什么:

用户输入 N -> 输出 = " mod 2 但不是 mod3=0 的数字,范围直到 n "

这是我的代码:

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

int main()
{
    int i,n;

    std::cout << "input n" << std::endl;
    std::cin >> n;
    std::cout << "N Number that mod2=0 but mod3!=0" << std::endl;

    for ( i = 1; i <= n; ++i )
    {
        if ( i % 2 == 0 && i % 3 != 0 )
        {
            std::cout << i < "   ";
        }
    }

    getch ();
}

如果我对你的理解是正确的,你希望用户输入满足你条件的数字数量。为此你应该有一个计数器:

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

using namespace std;

int main()
{
    int n;

    cout << "input n" << endl;
    cin >> n;
    cout << n << " numbers for that holds that mod2 = 0 but mod3 != 0" << endl;

    int counter = 0; 
    for (int i = 1; counter < n; ++i)
    {
        if (i % 2 == 0 && i % 3 != 0)
        {
            cout << i << "   ";
            ++counter;
        }
    }
    getch ();
}

我还更改了一些其他细节。

需要注意的不同事项:

  • 最好包含来自<iostream> iso <iostream.h>(为什么会添加link)
  • coutcinendlstd 命名空间中,因此请使用正确的命名空间或添加 std::
  • main() 的 return 类型应该是 int。如果没有 return 语句,它将隐式为 0。
    • operator<operator<<有区别

代码:

    #include <iostream>

    int main()
    {
        int i,n;

        std::cout<<"input n"<<std::endl;
        std::cin>>n;
        std::cout<<"N Number that mod2=0 but mod3!=0"<<std::endl;

        for (i=1;i<=n;i++)
            if (i%2==0 && i%3!=0)
                std::cout << i << std::endl;

        return 0;
    }

不确定,我完全理解了问题,但最明显的罪魁祸首是该行中的错字:

cout<<i<"   ";

将“<”替换为流输出操作符,即“<<”。