1.在⼀个数组中查找⼀个指定的整数,找到了之后就返回这个值所在的地址,没找到返回NULL
2.对值进⾏偶校验,求⼀个数的⼆进制中1的个数是奇数还是偶数。
三种统计方法:(1)value&=(value-1) (2)value&0x1 (3)模2 余2
3.将⼀个数组的所有元素都设置成0
//在⼀个数组中查找⼀个指定的整数,找到了之后就返回这个值所在的地址,没找到返回NULL
#include<stdio.h>
#include<windows.h>
int* find_int(int array[], int len, int key);
int main()
{
int arr[] = { 1, 2, 3, 5, 5, 6, 7, 8, 9 };
int len = sizeof(arr) / sizeof(arr[0]);
int key = 9;
printf("the location of %d is %p\n", key, find_int(arr, len, key));
system("pause");
return 0;
}
int *find_int(int array[], int len, int key)
{
int i = 0;
for (i = 0; i < len; i++)
{
if (array[i] == key)
{
return &array[i];
}
}
return NULL;
}
2.对值进⾏偶校验,求⼀个数的⼆进制中1的个数是奇数还是偶数。
(1)value&=(value-1)
/*
**对值进⾏偶校验,求⼀个数的⼆进制中1的个数是奇数还是偶数。
*/
#include<stdio.h>
#include<windows.h>
int even_parity(int value, int n_bits);
int main()
{
int value = 0;
printf("please Enter:");
scanf_s("%d", &value);
int flag = even_parity(value, 32);
if (flag)
{
printf("二进制中1的个数为奇数\n");
}
else
{
printf("二进制中1的个数为偶数\n");
}
system("pause");
return 0;
}
int even_parity(int value, int n_bits)
{
int count = 0;
while (value)
{
value &= (value - 1);
count++;
}
if (count % 2)
{
return 1;
}
else
{
return 0;
}
}
(2)value&0x1
int even_parity(int value, int n_bits)
{
int count = 0;
while (n_bits)
{
count += value & 1;
value >>= 1;
n_bits-=1;
}
if (count % 2)
{
return 1;
}
else
{
return 0;
}
}
(3)模2 余2
int even_parity(int value)
{
int count = 0;
while (value)
{
count += (value % 2);
value /= 2;
}
if (count % 2)
{
return 1;
}
else
{
return 0;
}
}
提示:上面的函数会破坏两个参数的值。但是这个并不影响,因为参数是通过值传递调⽤的,函数使⽤的值是实际参数的⼀份拷贝。破坏这份拷贝并不会影响原先的值。
3.将⼀个数组的所有元素都设置成0
**数组在调用的时候要传进来数组长度
//将⼀个数组的所有元素都设置成0
void clear_arrary(int array[], int n_elements)
{
while (n_elements)
{
array[--n_elements] = 0;
}
}