简单—1个字节自然数任意位置 1

/*===============================================================
*   文件名称:1.c
*   创 建 者:李晨旭
*   创建日期:2017年03月30日
*   功   能: 给1个字节任意自然数任意位置 1
*   注   意: 字符数组结束判断: '\n'
================================================================*/
#include <stdio.h>
#define wrong -1
#define uint unsigned int
static int fac=1;
int fac_value(int fac,int mov);
int main(void)
{
    char addr[8],*p;
    int i=0;
    uint num;
    printf("Input num: ");
    scanf("%d%*c",&num);
    printf("Where you want 1: ");
    p=addr;
    for(i = 0;i < 8; i++)
    {
        scanf("%c",p);
        if(addr[i] == '\n')
        {
            i = 7;
        }
        p++;
    }
    *p = '\0';
    p = addr;
    while(*p != '\n')
    {
        switch(*p)
        {
            case '*':fac = 0;break;
            case '0':fac = fac_value(fac,0);break;
            case '1':fac = fac_value(fac,1);break;
            case '2':fac = fac_value(fac,2);break;
            case '3':fac = fac_value(fac,3);break;
            case '4':fac = fac_value(fac,4);break;
            case '5':fac = fac_value(fac,5);break;
            case '6':fac = fac_value(fac,6);break;
            case '7':fac = fac_value(fac,7);break;
            default :{printf("Some bit is wrong!\n");return wrong;}
        }
        p++;
    }
    num |= fac;
    printf("Last num = %d\n",num);
}


int fac_value(int fac,int mov)
{
    static int time = 0;
    if(time == 0)
    {
        fac = 1 << mov;
        time ++;
    }
    else
        fac |= 1 << mov;
    return fac;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值