Lab03-数据类型、关系运算符、逻辑运算符(2019.09.30)

Lab03-数据类型、关系运算符、逻辑运算符

1. 输入格式【简单】

编写程序读取两组输入数据:
第一组值为:2 3 4回车
第二组值为:2,3,4回车

输出从键盘读入到的信息。

【输入】
2 3 4
7, 8, 9
【输出】
2 3 4
7 8 9

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
        printf("%d %d %d\n",a,b,c);
    scanf("%d,%d,%d",&a,&b,&c);
        printf("%d %d %d\n",a,b,c);
    return 0;
}
2. 较大的数【简单】

在一行中输入用一个空格分隔的两个整数,输出两个整数中的较大的那个数。

【input】两个整数
【output】两个整数较大的数

【input】 2 3
【output】3

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    if(a>b)
        printf("%d",a);
    else
        printf("%d",b);
    return 0;
}
3. 返回x中第p位开始的n位数【中等】

用户输入无符号整数x, p, n的值,请实现返回x中从右边数第p位至第p-n+1位(二进制位)的值。(假设:最右边的二进制位第0位)
【输入】x p n (p的取值在0-31之间)(1<=n<=p+1)
【输出】x中第p位开始的n位数

【输入】 5 1 2(截取5的从第1位开始到第0位的所有信息)
【输出】1

说明:5存储的信息为:0000 0000 0000 0000 0000 0000 0000 0101
返回从右边数的第1位到第0位之间的值:
结果为:
0000 0000 0000 0000 0000 0000 0000 0001

【输入】 106 7 4(截取5的从第7位开始到第4位的所有信息)
【输出】6
说明106的存储信息为:0000 0000 0000 0000 0000 0000 01101010
返回从右边数的第7位到第4位之间的值:
0000 0000 0000 0000 0000 0000 0000 0110

#include <stdio.h>
#include <stdlib.h>

int main(){
    unsigned int x,p,n,i,o=0;
    scanf("%u %u %u",&x,&p,&n);
    for (i=p;i+n-1>=p;i--){
        o<<=1;
        o+=(x>>i)&1;
    }
    printf("%u\n",o);
}
4. x中的第p位开始的n个bit求反【中等】

(选做)用户输入无符号整数x, p, n的值,请实现:将x中的右边数第p位至第p-n+1位的值求反,x的其余各位保持不变。

【输入】x p n
【输出】x中第p位开始的n位数求反,其余不变

【输入】 5 1 2(5的从第1位开始到第0位的所有信息求反)
【输出】6

说明:5存储的信息为:0000 0000 0000 0000 0000 0000 0000 0101
从右边数的第1位到第0位之间的值求反:
结果为:
0000 0000 0000 0000 0000 0000 0000 0110

【输入】 106 7 4(106的从第7位开始到第4位的所有信息取反)
【输出】154
说明106的存储信息为:0000 0000 0000 0000 0000 0000 01101010
从右边数的第7位到第4位之间的值求反:
0000 0000 0000 0000 0000 0000 10011010

#include <stdio.h>
#include <stdlib.h>

int main(){
    unsigned int x,p,n;
    scanf("%u %u %u",&x,&p,&n);
    printf("%u",x^(~(~0<<n)<<(p-n+1)));
    return 0;
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值