2016 11/12 片【C语言】学习笔记-函数

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;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值