C语言之操作符的使用必备练习题

举报
念君思宁 发表于 2023/02/14 21:37:52 2023/02/14
【摘要】 C语言之操作符的使用必备练习题

对于操纵符,笔者之前系统的写过一篇博客!有意者请点击链接进行欣赏!:浅识C语言中那些操作符(保证足够详细)_念君思宁的博客-CSDN博客  该博客凝聚力笔者精华!下面笔者将要进行的内容是对应的练习题!!请各位老铁多多欣赏!

1.

作业标题

求两个数二进制中不同位的个数

链接:两个整数二进制位不同个数__牛客网
来源:牛客网

[编程题]两个整数二进制位不同个数

输入两个整数,求两个整数二进制格式有多少个位不同

输入描述:

两个整数

输出描述:

二进制不同位的个数

示例1

输入

22 33

输出

5

参考代码为:

#include <stdio.h>
int main()
{
	int m, n, num = 0;
	printf("请输入两个整数:\n");
	scanf_s("%d %d", &m, &n);
	//位异或操作,仅有对应位相异才为1,其他全为0
	//只要判断出来操作之后的数
	//其二进制数中有几个1即可
	num = m ^ n;
	int count = 0;
	for (int i = 0; i < 33; i++)
	{
		if (num & 1 == 1)
		{
			count++;
		}
		num = num >> 1;
	}
	printf("%d", count);
	return 0;
}

代码的运行结果为:

 2.

作业标题(701)

下面哪个是位操作符:( )

作业内容

A.&

B.&&

C.||

D.!

答案解析:

A. & 是按位与操作符,正确

B. && 是逻辑与,不是按位与,错误

C. || 是逻辑或,错误

D. ! 是逻辑反操作符,错误

3.

下面代码的结果是:( )

#include <stdio.h>
int main()
{
	int a, b, c;
	a = 5;
	c = ++a;
	b = ++c, c++, ++a, a++;
	b += a++ + c;
	printf("a = %d b = %d c = %d\n:", a, b, c);
	return 0;
}

业内容

A.a = 8 b = 23 c = 8

B.a = 9 b= 23 c = 8

C.a = 9 b = 25 c = 8

D.a = 9 b = 24 c = 8

答案解析:

++运算符:分为前置++和后置++,

前置++:先加1,后使用,即先使用变量中内容,然后给结果加1

后置++:先使用变量中内容,整个表达式结束时,给变量加1

逗号表达式,取最后一个表达式的值。

#include <stdio.h>
int main()
{
	int a, b, c;
	a = 5;
	c = ++a;// ++a:加给a+1,结果为6,用加完之后的结果给c赋值,因此:a = 6  c = 6
	b = ++c, c++, ++a, a++;
   // 逗号表达式的优先级,最低,这里先算b=++c, b得到的是++c后的结果,b是7
   // b=++c 和后边的构成逗号表达式,依次从左向右计算的。
   // 表达式结束时,c++和,++a,a++会给a+2,给c加1,此时c:8,a:8,b:7
	b += a++ + c; // a先和c加,结果为16,在加上b的值7,比的结果为23,最后给a加1,a的值为9
	printf("a = %d b = %d c = %d\n:", a, b, c); // a:9, b:23, c:8
	return 0;
}

 4.

作业标题(704)

交换两个变量(不创建临时变量)

作业内容

不允许创建临时变量,交换两个整数的内容

参考代码为:

#include<stdio.h>
 
int main()
{
	int a = 2;
	int b = 3;
	printf("交换前:a=%d b=%d\n", a, b);
	b = a ^ b;
	a = a ^ b;//这里等于a=a^a^b=b,
		  //       a^a=0,b^0=b
	b = a ^ b;//同理展开b=b^a^b=a
	printf("交换后:a=%d b=%d\n", a, b);
 
	return 0;
 
}

代码的运行结果为:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。