运算符和表达式练习题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3) –a – 5 * b >= d + 11
(4) 3 > d < -10
(5) d != b + 2 == 40
8.有以下程序,阅读后写出程序的运行结果。
int main()
{0
int m=3, n=4,x;
x=-m++;
x=x + 8 / ++n;
printf("%d\n", x);
}
9.有以下程序,阅读后写出程序的运行结果。
第
1.写出下列各逻辑表达式的值。设,a=3,b=4,c=5。
(1) a+b>c&&b==c 0
(2) a||b+c&&b-c 1
(3) !(a>b)&&!c||1 1
(4) !(x=a)&&(y=b)&&0 0
(5) !(a+b)+c–1&&b+c/2 1
2.阅读程序,写出运行结果:
#include <stdio.h>
printf("%d\n",!a || a > b);
}
1,1
1,1
1
3.有以下程序
int main()
{
int a=1,b=2,m=0,n=0,k;
k = (n = b > a) || (m = a < b);
printf("%d, %d\n", k, m);
}
程序运行后的输出结果是?1,0(短路)
4.以下程序的输出结Biblioteka Baidu是?
int main()
{
int a=4,b=5,c=0,d;
d=!a && !b || !c;
printf("%d\n", d);
}1
5.以下程序的输出结果是?
#include <stdio.h>
int main()
{
int a ,b,d=241; a=d/100%9;
b=(-1) && (-1);
printf("%d\n", 'A' != 'a');1
}
10.用条件表达式描述
(1)取三个数a、b、c中的最大者a>c?(a>b?a:b):(c>b?c:b)
(2)取三个数a、b、c中的最小者a<c?(a<b?a:b):(c<b?c:b)
11.思考题
(1)“=”和“==”有什么区别?
(2)“&”和“&&”、“|”和“||”有什么区别?
第一步:仅打开读开关
第二步:仅打开写开关
第三步:测试读开关和写开关的状态
第四步:仅关闭读开关
第五步:仅关闭写开关
第六步:同时打开读写开关
第七步:同时关闭读写开关
4.我国邮政编码的一二位代表省份或直辖市。第三四位代表地、市、州。第五六位代表一个县.一个镇或者一个居住的小区。例如:邮政编码“130021”“13”代表吉林省,“00”代表省会长春,“21”代表所在投递区。假设用一个unsigned long来表示邮政编码,则”130021”可以表示为0x00130021,试写位运算表达式,已知一个邮政编码,快速提取其省份,地市和投递区这三个域。
8.判断正整数num是奇数还是偶数
9.取整型变量num的第k位(二进制表示中);
10.将整型变量num的第k位(二进制表示中)清零;
5.交换两个unsigned long类型的值,不用中间临时变量。(提示,使用异或,异或有两个特性:一个数异或本身恒等于0;一个数异或0恒等于本身。)
6.整数求负,设int x=7,利用位运算表达式求-7。
7.有两个整形变量a和b,只用位运算,不用if、switch等条件判断语句,找出较大的那个变量。
第
1.假设
unsigned short mode = 0777;
unsigned short umask = 022;
写位运算表达式:根据umask的设置对mode的特定位清零,具体为,如果umask的某一位标志为1,则mode的相应位清为0,其他位保持不变。~umask&mode
~(k<<(umask>>4))&mode
int main()
{
int a=3,b=1, x=2, y=0;
printf("%d, %d \n", (a > b) && (x > y) , a > b && x > y);
printf("%d, %d \n", (y || b) && (y || a), y || b && y || a);
printf("%d,%d\n", a, b);
}2,1
6.为表示关系x≥y≥z,应使用C语言表达式是?(x>=y&&y>=z)
7.已知:char c; int a, b, d; c=’w’; a=1; b=2; d=-5;求下列表达式的值:。
(1) 'x'+1 < c0
(2) 'Y' != c - 51
2.已知一个unsigned long的数可以看成是由两个unsigned short组成,分别为高16位和低16位,通过写写位运算表达式分别将这两个unsigned short数取出保存到两个unsigned short的变量中。
3.已知对一个unsigned int oflag,第一位(以1序)代表控制文件的读开关,第二位代表控制文件的写开关,1代表开关为ON状态,0为OFF状态,除此之外的其他位不处理,默认一直都是OFF。假设初始情况读开关和写开关都是OFF状态。写位运算表达式:
#include <stdio.h>
int main()
{
int a=2,b=3,c=4;
printf("%d\n", 1 / 3.0 * 3.0 == 1.0);1
printf("%d\n", a + b > 3 * c);0
printf("%d\n", (a <= b) == (b > c));0
(4) 3 > d < -10
(5) d != b + 2 == 40
8.有以下程序,阅读后写出程序的运行结果。
int main()
{0
int m=3, n=4,x;
x=-m++;
x=x + 8 / ++n;
printf("%d\n", x);
}
9.有以下程序,阅读后写出程序的运行结果。
第
1.写出下列各逻辑表达式的值。设,a=3,b=4,c=5。
(1) a+b>c&&b==c 0
(2) a||b+c&&b-c 1
(3) !(a>b)&&!c||1 1
(4) !(x=a)&&(y=b)&&0 0
(5) !(a+b)+c–1&&b+c/2 1
2.阅读程序,写出运行结果:
#include <stdio.h>
printf("%d\n",!a || a > b);
}
1,1
1,1
1
3.有以下程序
int main()
{
int a=1,b=2,m=0,n=0,k;
k = (n = b > a) || (m = a < b);
printf("%d, %d\n", k, m);
}
程序运行后的输出结果是?1,0(短路)
4.以下程序的输出结Biblioteka Baidu是?
int main()
{
int a=4,b=5,c=0,d;
d=!a && !b || !c;
printf("%d\n", d);
}1
5.以下程序的输出结果是?
#include <stdio.h>
int main()
{
int a ,b,d=241; a=d/100%9;
b=(-1) && (-1);
printf("%d\n", 'A' != 'a');1
}
10.用条件表达式描述
(1)取三个数a、b、c中的最大者a>c?(a>b?a:b):(c>b?c:b)
(2)取三个数a、b、c中的最小者a<c?(a<b?a:b):(c<b?c:b)
11.思考题
(1)“=”和“==”有什么区别?
(2)“&”和“&&”、“|”和“||”有什么区别?
第一步:仅打开读开关
第二步:仅打开写开关
第三步:测试读开关和写开关的状态
第四步:仅关闭读开关
第五步:仅关闭写开关
第六步:同时打开读写开关
第七步:同时关闭读写开关
4.我国邮政编码的一二位代表省份或直辖市。第三四位代表地、市、州。第五六位代表一个县.一个镇或者一个居住的小区。例如:邮政编码“130021”“13”代表吉林省,“00”代表省会长春,“21”代表所在投递区。假设用一个unsigned long来表示邮政编码,则”130021”可以表示为0x00130021,试写位运算表达式,已知一个邮政编码,快速提取其省份,地市和投递区这三个域。
8.判断正整数num是奇数还是偶数
9.取整型变量num的第k位(二进制表示中);
10.将整型变量num的第k位(二进制表示中)清零;
5.交换两个unsigned long类型的值,不用中间临时变量。(提示,使用异或,异或有两个特性:一个数异或本身恒等于0;一个数异或0恒等于本身。)
6.整数求负,设int x=7,利用位运算表达式求-7。
7.有两个整形变量a和b,只用位运算,不用if、switch等条件判断语句,找出较大的那个变量。
第
1.假设
unsigned short mode = 0777;
unsigned short umask = 022;
写位运算表达式:根据umask的设置对mode的特定位清零,具体为,如果umask的某一位标志为1,则mode的相应位清为0,其他位保持不变。~umask&mode
~(k<<(umask>>4))&mode
int main()
{
int a=3,b=1, x=2, y=0;
printf("%d, %d \n", (a > b) && (x > y) , a > b && x > y);
printf("%d, %d \n", (y || b) && (y || a), y || b && y || a);
printf("%d,%d\n", a, b);
}2,1
6.为表示关系x≥y≥z,应使用C语言表达式是?(x>=y&&y>=z)
7.已知:char c; int a, b, d; c=’w’; a=1; b=2; d=-5;求下列表达式的值:。
(1) 'x'+1 < c0
(2) 'Y' != c - 51
2.已知一个unsigned long的数可以看成是由两个unsigned short组成,分别为高16位和低16位,通过写写位运算表达式分别将这两个unsigned short数取出保存到两个unsigned short的变量中。
3.已知对一个unsigned int oflag,第一位(以1序)代表控制文件的读开关,第二位代表控制文件的写开关,1代表开关为ON状态,0为OFF状态,除此之外的其他位不处理,默认一直都是OFF。假设初始情况读开关和写开关都是OFF状态。写位运算表达式:
#include <stdio.h>
int main()
{
int a=2,b=3,c=4;
printf("%d\n", 1 / 3.0 * 3.0 == 1.0);1
printf("%d\n", a + b > 3 * c);0
printf("%d\n", (a <= b) == (b > c));0