输入正整数或负整数列表,以使用开关函数 c++ 确定数字是偶数还是奇数
To input a list of positive or negative integers to find out if a number is even or odd using switch function c++
#include <iostream>
using namespace std;
限制是输入 10 个数字
const int LIMIT = 10;
int main ()
{
这只是声明变量
float counter ;
int number ;
int zeros;
int odds;
int evens;
cout << "Please enter " << LIMIT << "integers, "
<< "positive, negative, or zeros." << endl;
cout << "The numbers you entered are:" << endl;
从这里我尝试打印出用户输入的所有数字,并检查它是奇数还是偶数
for (counter = 1; counter <= LIMIT; counter++)
{
cin >> number;
switch(number % 2)
{
case 0:
所以在这里我试图将零算作偶数,所以如果列表为零,最后偶数的输出将包括零
if (number == 0 ){
zeros++;
evens++;
}
case 1:
case -1:
odds++;
}
}
cout << endl;
cout << "There are " << evens << " evens,"
<<"which includes " << zeros << " zeros."
<<endl;
cout << "The number of odd numbers is: " << odds
<< endl;
}
应初始化这些值:
int zeros = 0;
int odds = 0;
int evens = 0;
此外,对于偶数,evens
的值必须递增。在您的代码中,它仅在number == 0
的情况下递增。
switch(number % 2)
{
case 0:
if (number == 0 ) { zeros++; }
evens++;
break;
case 1:
case -1:
odds++;
}
您还需要在case 0
之后插入break
。
我相信你的主要问题之一是你没有打破你的开关大小写标签。例如:
int a = 7;
switch(a)
{
case 7: cout << "case 7n";
case 1: // This will execute if case 7 doesn't have a break statement.
}
在您的情况下:
for (counter = 1; counter <= LIMIT; counter++)
{
cin >> number;
switch(number % 2)
{
case 0: if (number == 0 )
{
zeros++;
evens++;
} // Falls straight through to the next cases. Counting evens as odds
case 1:
case -1: odds++;
}
}
并且您仅在数字 == 0 时检测偶数,如果数模 2 等于 0,则不检测偶数。
这是一个重写的版本:
#include <iostream>
using namespace std;
const int LIMIT = 10;
int counter; // This is better as an int instead of a float
int number; // Also none of these variables need to be initialised
// As they are guaranteed to be zero-initialised as global static variables
int zeros;
int odds;
int evens;
int main ()
{
cout << "Please enter " << LIMIT << "integers, "
<< "positive, negative, or zeros." << endl;
for (counter = 1; counter <= LIMIT; counter++)
{
cout << "Enter number " << counter << " : ";
cin >> number;
switch (number % 2)
{
case 0:
if (number == 0) zeros++; // If input equals 0, increment zero counter
evens++; // Increment evens if in this case label
break; // Break, don't want to increment odds
default: odds++; // Default case, if not 0, must be odd.
}
}
cout << endl;
cout << "There are " << evens << " evens,"
<< "which includes " << zeros << " zeros." << endl;
cout << "The number of odd numbers is: " << odds << endl;
cin.ignore(); // This just discards the final 'n' newline character
cin.ignore(); // This blocks the program so the console doesn't close immediately
return 0;
}
相关文章:
- 如何反转整数参数包
- enum是C++中的宏变量还是整数变量
- 努力将整数转换为链表。不知道我在这里做错了什么
- 整数不会重复超过随机数
- 在C++中手动调整数组大小
- 检查输入是否不是整数或数字
- C++使用整数的压缩数组初始化对象
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 如何只允许用户输入正整数
- 如何在c++中从文本文件中逐行读取整数
- C++:如何循环通过向量中的整数元素
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 序列化,没有库的整数,得到奇怪的结果
- 在一定长度后从数组中打印时缺少整数
- std::当在256字节边界上写入整数时,流的奇怪行为
- 内联程序集printf将整数解释为地址
- 是否基于数组B整数打印数组A中的整数
- 如何在C++中将整数转换为其数字数组