C++程序 打印数组中的偶数

C++程序 打印数组中的偶数

给定一个数字数组,任务是打印数组中的所有偶数元素。以下是一些示例,让我们来了解一下。

例子:

输入: num1 = [2,7,6,5,4]
输出: 2, 6, 4

输入: num2 = [1,4,7,8,3]
输出: 4, 8

1. 使用 for 循环

算法: 使用 for 循环迭代给定的数组中的每个元素,检查是否 num % 2 == 0,这意味着如果被 2 整除的余数为 0,则为偶数,否则为奇数。如果满足条件,则打印数字。

以下是上述方法的实现:

// C++ program to print even numbers in an array
// using for loop
#include <iostream>
using namespace std;
 
int main()
{
    // array of numbers
    int num1[] = { 2, 7, 6, 5, 4 };
    // size of an array
    int n = 5;
    for (int i = 0; i < n; i++) {
        // to check the number is even or not
        if (num1[i] % 2 == 0) {
            cout << num1[i] << " ";
        }
    }
 
    return 0;
}  

输出

2 6 4 

时间复杂度: O(N)

辅助空间 : O(1),使用恒定的额外空间

2. 使用 while 循环

算法: 使用 while 循环迭代给定的数组中的每个元素,检查是否 num % 2 == 0,这意味着如果被 2 整除的余数为 0,则为偶数,否则为奇数。如果满足条件,则打印数字。

以下是上述方法的实现:

// C++ program to print even numbers in an array
// using while loop
#include <iostream>
using namespace std;
 
int main()
{
    // array of numbers
    int num1[] = { 7, 5, 9, 6, 2, 3, 4 };
 
    // size of an array
    int n = 7;
    int i = 0;
    while (i < n) {
        // to check the number even or not
        if (num1[i] % 2 == 0) {
            cout << num1[i] << " ";
        }
        i++;
    }
 
    return 0;
}  

输出

6 2 4 

时间复杂度: O(N)

辅助空间: O(1),使用恒定的额外空间

3. 使用位运算符&

算法: 使用 for 循环迭代给定的数组中的每个元素,检查是否 num & 1 == 0,因为我们知道 1 和 num 的 AND 运算将给出 0,如果 num 最右侧的位未设置,并且在偶数中最右侧的位未设置。如果满足条件,则打印数字。

以下是上述方法的实现:

// C++ program to print all even numbers in the array
 
#include <iostream>
using namespace std;
 
int main() {
      
    // array of numbers
    int num1[] = { 2, 7, 6, 5, 4 };
    // size of an array
    int n = 5;
    
    for (int i = 0; i < n; i++) {
      
        int x=num1[i]&1; // x will store Bitwise AND of number and 1
         
        // as we know , bitwise AND of even number and 1 is 0
        // check if it is 0 , then print number
        if (x==0) {
            cout << num1[i] << " ";
        }
    }
    return 0;
}
 
// This code is contributed by nikhilsainiofficial546```  

输出

2 6 4 

时间复杂度 : O(N),因为我们正在迭代整个数组

辅助空间 : O(1),因为只使用了恒定的额外空间

4.使用 位运算符 |

思路 :使用 for 循环迭代给定数组中的每个元素,并检查是否 num | 1 == num+1,如果满足条件,则是偶数,因为我们知道 1 和 num 的 OR 运算将在偶数情况下给出 num+1,然后只打印相应的数字。

以下是上述方法的实现:

// C++ program to print all even numbers in the array
 
#include <iostream>
using namespace std;
 
int main() {
      
    // array of numbers
    int num1[] = { 2, 7, 6, 5, 4 };
    // size of an array
    int n = 5;
    
    for (int i = 0; i < n; i++) {
      
         
        // as we know , bitwise OR of even number and 1 is even number+1
        // check if it is even , then print number
        if ((num1[i] | 1)==num1[i]+1) {
            cout << num1[i] << " ";
        }
    }
    return 0;
}
 
// This code is contributed by tvsk```  

输出

2 6 4 

时间复杂度: O(N),因为我们正在迭代整个数组

辅助空间: O(1),因为只使用了恒定的额外空间

5.使用递归

思路 :将数组传递给递归函数,该函数将遍历到最后一个元素并在其为偶数时打印该元素。

以下是上述方法的实现:

// C++ program to print all even numbers in the array
#include <iostream>
using namespace std;
 
// 递归函数 'printEven',它接受:
// 整数数组 'arr'
// 数组大小 'n'
// 当前索引
void printEven(int* arr, int n, int index) {
    // 当索引超过数组大小时停止递归
    if(index >= n) return;
     
    // 如果当前元素和1的AND运算结果为0,
    // 并且!(0)为1
    // 因此,每个偶数元素都将被打印
    if(!(arr[index] & 1)) cout << arr[index] << " ";
     
    // 递归到下一个索引
    printEven(arr, n, ++index);
}
 
int main() {
    // array of numbers
    int arr[] = { 2, 7, 6, 5, 4 };
    // size of an array
    int n = 5;
    printEven(arr, n, 0);
    return 0;
}
 
// This code is contributed by Om Mishra (om_mishra)```  

输出

2 6 4 

时间复杂度 :O(N),因为我们正在遍历整个数组

辅助空间 :O(1),因为只使用了恒定的额外空间

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例