C++ 字符串数组和 for 循环没有像我预期的那样工作

标签 c++ arrays for-loop

#include <iostream>
using namespace std;

int main()
{
   char num[10];
   int a;
   cout << "Odd or Even"<< endl;
   for(;;)
   {
      cout << "Enter Number:" ;
      cin >> num;
      cout << endl;
      for(a=9;a>=0;a--)
      {
         if(num[a]!='\0 && num[a]!=' ')
            break;
      }
      if(num[a]==1 || num[a]==3 || num[a]==5 || num[a]==7 || num[a]==9)
         cout << "Odd" << endl;
      else
         cout << "Even" << endl;
   }
}

我是C++菜鸟,写了一个程序来判别一个数是偶数还是奇数, 但无论我输入什么数字,它只输出“偶数”。 所以我添加了这些以找出循环何时中断:

cout << a << endl;
cout << "\"" << num[a] << "\"" << endl;

结果:

Enter Number:11
9
" "
Even

num[9]=' ' 时 for 循环中断?这将导致 else 并始终输出“Even”。

最佳答案

您对字符 '1' 和数字 1 感到困惑。它们是不同的。

代替

  if(num[a]==1 || num[a]==3 || num[a]==5 || num[a]==7 || num[a]==9)

你需要

  if(num[a]=='1' || num[a]=='3' || num[a]=='5' || num[a]=='7' || num[a]=='9')

更新

还有一个问题可能会让您感到困惑。

  1. num 未初始化。零初始化它。请记住 0 与字符 '0' 不同。

    char num[10] = {0};
    
  2. num 的初始化移到 for 循环中。这将消除先前执行循环的数据影响当前循环执行的问题。

这是一个适合我的版本。

#include <iostream>
using namespace std;

int main()
{
   cout << "Odd or Even"<< endl;
   for(;;)
   {
      char num[10] = {0};
      int a;
      cout << "Enter Number:" ;
      cin >> num;
      cout << endl;
      for(a=9;a>=0;a--)
      {
         if(num[a]!='\0' && num[a]!=' ')
            break;
      }
      cout << num[a] << endl;
      if(num[a]=='1' || num[a]=='3' || num[a]=='5' || num[a]=='7' || num[a]=='9')
         cout << "Odd" << endl;
      else
         cout << "Even" << endl;
   }
}

附言

可以换行

         if(num[a]!='\0' && num[a]!=' ')

通过

         if(isdigit(num[a]))

这对我来说更有意义。

关于C++ 字符串数组和 for 循环没有像我预期的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25028630/

相关文章:

c++ socket read()有时在连接到服务器时返回-1

java - 不确定 for 循环迭代?

python - 将两个列表中的单个项目添加到新列表中

javascript - 如何使用 for 循环来控制台记录数组的每个项目?

arrays - 查找按升序排序的矩阵的列索引和行索引

php - 递归地将数组键从 underscore_case 转换为 camelCase

arrays - 如何在 MATLAB 中的 for 循环内创建比率数组?

c++ - 变量的可访问性

c++ - 无法归档所有数据

c++ - 解析网络头时字段的字节顺序