C语言刷题(1)

简介: C语言刷题(1)

      学习了很多C语言的知识,今天主要的是一些有意思的题目,接下来就让我们感受一下其中的乐趣吧。

1.选择

1.假设编译器规定 int 和 short 类型长度分别为32位和16位,若有下列C语言语句,则 y 的机器数为( )

unsigned short x = 65530;

unsigned int y = x;

A: 0000 7FFA B: 0000 FFFA C: FFFF 7FFA D: FFFF FFFA

        我们先看选项都是16进制数据,所以我们需要对unsigned short x=65530进行转化,它是10进制类型,我们先转化为二进制类型,由于short占用16位为故得到它的二进制序列为1111111111111010,我们再转化为16进制,我们知道二进制转化为16进制是4位一转化1111对应F,1010对应A.故我们得到它的十六进制序列为FFFA,我们看unsigned int y = x,是将无符号短整型转化为无符号整形,故需要进行整型提升,整型提升可以看https://blog.csdn.net/Infernal_Puppet/article/details/132466544,因为是无符号短整型,整型提升为无符号整形补0,故为0000FFFA,故选择B。

2. 如果 x=2014,下面函数的返回值是 ( )

int fun(unsigned int x)
{
  int n = 0;
  while (x + 1)
  {
    n++;
    x = x | (x + 1);
  }
  return n;
}

       我们看到题干中主要有|符号,这是按位或主要作用是对二进制进行操作,将两个数的二进制序列有1为1,否则为0,详细可以点击 ,我们先进行二进制转化,2014的二进制序列为00000000000000000000011111011110,先进行第一步2014|2015,2015的二进制序列为00000000000000000000011111011111,得到x=2015,二进制序列为00000000000000000000011111011111,再次进入循环,2015|2016,2016的二进制序列为00000000000000000000011111100000,得到x的二进制序列为00000000000000000000011111111111,x为2047,这样不断进行循环得到n为23.

2.编程

2.1题干

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。详细题干可以点击不用加减乘除做加法_牛客题霸_牛客网 (nowcoder.com)  ,

2.2分析题干

       我们不能使用+-*/这几个操作符,但是需要得到两个整数的和,我们想其他的操作符,我们知道整数的加减是使用二进制进行操作的,我们就可以想到& | ^ >>  <<这五个操作符也是对二进制进行操作的,本题是使用& ^  <<这三个操作符进行的,想要了解这三个操作符可以点击C语言操作符详解_steventom的博客-CSDN博客 进行学习。

2.3代码(接口函数)

int Add(int num1, int num2 ) {
    // write code here
    int temp;
    while(num2!=0)
    {
        temp=num1^num2;
        num2=(num1&num2)<<1;
        num1=temp;
    }
        return num1;
}

2.4分析代码

       在这里我们知道^是相同为0,不同为1,也就是找到不需要进位的序列;&是都为1才为1,否则为0,也就是找到需要进位的序列,再进行左移,然后num1=temp,num是不需要进位的,num2是需要进位的序列进位后的结果,再次进行循环,知道没有需要进位的也就是num2为0,此时、循环结束,num1也就是结果,完成了不用+-*/得到两数相加。

2.5运行

我们看到结果为30.

       最后希望大家可以学到很多东西,坚持刷题,才能有所成长,点我主页一起学习更多知识,加油,还有不要忘了关注,点赞,评论,收藏呦,

目录
相关文章
|
18天前
|
算法 C语言
C语言——oj刷题——回文字符串
C语言——oj刷题——回文字符串
11 2
|
18天前
|
算法 C语言
C语言——oj刷题——字符串左旋和轮转数组
C语言——oj刷题——字符串左旋和轮转数组
11 1
|
18天前
|
C语言
C语言——oj刷题——调整数组使奇数全部都位于偶数前面
C语言——oj刷题——调整数组使奇数全部都位于偶数前面
12 1
|
1月前
|
C语言 C++
【C语言/C++】牛客网刷题训练-12
【C语言/C++】牛客网刷题训练-12
|
1月前
|
算法 C语言 Swift
【C语言】牛客网刷题训练-11
【C语言】牛客网刷题训练-11
|
1月前
|
C语言
【C语言】牛客网刷题训练-10
【C语言】牛客网刷题训练-10
|
1月前
|
存储 C语言 数据安全/隐私保护
【C语言】牛客网刷题训练-9
【C语言】牛客网刷题训练-9
|
1月前
|
C语言
【C语言】牛客网刷题训练-8
【C语言】牛客网刷题训练-8
|
1月前
|
C语言
【C语言】牛客网刷题训练-7
【C语言】牛客网刷题训练-7
|
1月前
|
C语言
【C语言】牛客网刷题训练-6
【C语言】牛客网刷题训练-6