C语言之操作符的使用必备练习题
【摘要】 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)