问题:寻找一个整形数组中,有多少对整形满足:
异或之后为奇数
分析: 1.对于异或的理解
2.判断奇偶数的方法
x & 1 == 0 ----> 偶数
x & 1 != 0 ----> 奇数
<span style="font-size:14px;">/*********************************************
寻找一个整形数组中有多少对整形满足:
异或之后为奇数
(异或:相同为0,不同为1)
*********************************************/
#include <iostream>
void scanfOrginalData(int array[],int len,int arraryForOdd[],int arrayForEven[],int &lenForOdd,int &lenForEven);
int main(int argc, const char * argv[])
{
int len;
int lenForOdd;
int lenForEven;
printf("Please enter the len of the array:\n");
scanf("%d",&len);
printf("Please enter each number of array:\n");
int arraryForNumber[len];
for (int i=0; i<len; i++) {
scanf("%d",&arraryForNumber[i]);
}
int arrayForOdd[] = {0};
int arrayForEven[] = {0};
scanfOrginalData(arraryForNumber, len, arrayForOdd, arrayForEven,lenForOdd,lenForEven);
printf("There are %d * %d = %d couple of odd numbers in the array.\n",lenForEven,lenForOdd,lenForEven*lenForOdd);
return 0;
}
void scanfOrginalData(int array[],int len,int arraryForOdd[],int arrayForEven[],int &lenForOdd,int &lenForEven){
int i=0,j=0,k=0;
while (k < len) {
/***
偶数
***/
if ((array[k] & 1)== 0) {
arrayForEven[i] = array[k];
i++;
k++;
}else{
/***
奇数
***/
arraryForOdd[j] = array[k];
j++;
k++;
}
}
lenForEven = i;
lenForOdd = j;
}</span>