C语言程序中的布尔数组难题?
在这里,我们将看到一个布尔数组难题。一个数组具有两个元素0和1。我们必须将所有元素都设为0。我们应该考虑一些规范-
在数组中,一个元素为0,这是固定的,但我们不知道该元素的位置是什么
另一个元素可以是0或1
此处仅允许补码运算,不能执行其他运算
我们不能使用分支和循环语句
我们不能将0直接分配给数组元素
我们可以用不同的方式解决这个问题。其中有三个-
方法1-
示例
#include <iostream> using namespace std; void makeZero(int arr[2]) { arr[ arr[1] ] = arr[ !arr[1] ]; } int main() { int arr[] = {1, 0}; makeZero(arr); cout<<"arr[0] = "<<arr[0]<<endl; cout<<"arr[1] = "<<arr[1]; }
输出结果
arr[0] = 0 arr[1] = 0
方法2-
示例
#include <iostream> using namespace std; void makeZero(int arr[2]) { arr[ arr[1] ] = arr[ arr[0] ]; } int main() { int arr[] = {1, 0}; makeZero(arr); cout<<"arr[0] = "<<arr[0]<<endl; cout<<"arr[1] = "<<arr[1]; }
输出结果
arr[0] = 0 arr[1] = 0
方法3-
示例
#include <iostream> using namespace std; void makeZero(int arr[2]) { arr[0] = arr[arr[0]]; arr[1] = arr[0]; } int main() { int arr[] = {1, 0}; makeZero(arr); cout<<"arr[0] = "<<arr[0]<<endl; cout<<"arr[1] = "<<arr[1]; }
输出结果
arr[0] = 0 arr[1] = 0