我刚开始学习C++,我想问为什么我的简单代码输出不正确。
我想要什么:
用户输入N->输出="N个mod 2=0但不是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>
(将添加原因链接) cout
、cin
和endl
位于std
命名空间中,因此使用正确的命名空间或添加std::
- main()的返回类型应该是int。如果没有返回语句,它将隐式为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<" ";
将"<"替换为流输出运算符,即"<<