C++ 检查数字中的奇数

C++ 检查数字中的奇数,c++,C++,我试图制作一个程序来检查一个数字中的所有数字是否都是奇数,但是如果这个数字是由奇数数字组成的,那么只有当输入的数字是1位数长时才会显示出来。 代码如下: int main() { int n, c; cin >> n; while (n != 0) { c = n % 10; if (c % 2 == 1) { n = n / 10; if (n == 0) {

我试图制作一个程序来检查一个数字中的所有数字是否都是奇数,但是如果这个数字是由奇数数字组成的,那么只有当输入的数字是1位数长时才会显示出来。 代码如下:

int main()
{
    int n, c;
    cin >> n;
    while (n != 0) {
        c = n % 10;
        if (c % 2 == 1) {
            n = n / 10;
            if (n == 0) {
                cout << " Number has only odd digits";
            }
        }
        else
            cout << " Number doesn't have only odd digits";
        return 0;
    }
}
intmain()
{
int n,c;
cin>>n;
而(n!=0){
c=n%10;
如果(c%2==1){
n=n/10;
如果(n==0){

cout我建议将数字保留为字符串,然后在字符串中搜索奇数:

static const char odd_digits[] = "13579";
std::string number_as_text;
std::cin >> number_as_text;
std::string::size_type  position;
position = number_as_text.find_first_of(odd_digits);
if (position != std::string::npos)
{
  std::cout << "Number has at least one odd digit.\n";
}
static const char奇数位[]=“13579”;
std::字符串编号作为文本;
标准::cin>>数字作为文本;
std::string::size\u类型位置;
位置=作为文本的数字。查找(奇数)的第一个数字;
if(位置!=std::string::npos)
{

std::cout我建议将数字保留为字符串,然后在字符串中搜索奇数:

static const char odd_digits[] = "13579";
std::string number_as_text;
std::cin >> number_as_text;
std::string::size_type  position;
position = number_as_text.find_first_of(odd_digits);
if (position != std::string::npos)
{
  std::cout << "Number has at least one odd digit.\n";
}
static const char奇数位[]=“13579”;
std::字符串编号作为文本;
标准::cin>>数字作为文本;
std::string::size\u类型位置;
位置=作为文本的数字。查找(奇数)的第一个数字;
if(位置!=std::string::npos)
{

std::cout我做了最小的更改以保留您原始的思维流程。
n=n/10
需要在
其他
情况下执行。添加了对
输入为0的情况的处理。
在检测到偶数数字时添加了一个
返回(0)
语句(没有继续的意义,因此从那里返回)

int main(){
int n,c;
cin>>n;
如果(n==0){

cout我做了最小的更改以保留您原来的思维流程。
n=n/10
需要在
else
情况下执行。添加了对
输入为0的情况的处理。在检测到偶数数字时添加了
返回(0)
语句(没有继续的必要,因此从那里返回)

int main(){
int n,c;
cin>>n;
如果(n==0){

cout您的问题在于以下几行:

else
    cout << " Number doesn't have only odd digits";
    return 0;

这类错误就是为什么大多数样式指南要求您在
if
else
之后始终使用大括号,即使只有一行。

您的问题在于这些行:

else
    cout << " Number doesn't have only odd digits";
    return 0;

这类错误就是为什么大多数样式指南要求您始终在
if
else
之后使用大括号,即使只有一行。

请整理缩进使用调试器并逐行检查代码,问题应该变得非常明显。多么混乱……问题很明显,正如建议使用调试器一样r并逐行调试程序。应在循环外部决定数字是否只有奇数。相应地修改算法。请使用调试器整理缩进,并逐行逐行检查代码,问题应该变得非常明显。真是一团糟……问题很明显,建议使用debugger并逐步调试程序。应在循环外部决定数字是否只有奇数。相应地修复算法。也称为错误。也称为错误。
else {
    cout << " Number doesn't have only odd digits";
    return 0;
}