1、第6讲:运算符和表达式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 12. 阅读程序,写出运行结果: #include 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
2、| a), y | b & y | a);printf(%dn,!a | a b); 1,1 1,1 13. 有以下程序int main()int a=1,b=2,m=0,n=0,k;k = (n = b a) | (m = a b);printf(%d, %dn, k, m);程序运行后的输出结果是?1,0(短路)4. 以下程序的输出结果是?int main()int a=4,b=5,c=0,d;d=!a & !b | !c;printf(%dn, d);15. 以下程序的输出结果是?#include int main()int a ,b,d=241; a=d/100%9; b=(-1) &
3、 (-1); printf(%d,%dn, a, b);2,16. 为表示关系 xyz,应使用 C 语言表达式是?(x=y&y=z)7. 已知:char c; int a, b, d; c=w; a=1; b=2; d=-5; 求下列表达式的值: 。(1) x+1 = d + 1 1(4) 3 d -1 0(5) d != b + 2 = 4 08. 有以下程序,阅读后写出程序的运行结果。 int main()0int m=3, n=4,x; x=-m+;x=x + 8 / +n;printf(%dn, x);9. 有以下程序,阅读后写出程序的运行结果。#include int main()i
4、nt a=2,b=3,c=4;printf(%dn, 1 / 3.0 * 3.0 = 1.0); 1printf(%dn, a + b 3 * c); 0printf(%dn, (a c); 0printf(%dn, A != a); 110. 用条件表达式描述 (1) 取三个数 a、b、c 中的最大者 ac?(ab?a:b):(cb?c:b)(2) 取三个数 a、b、c 中的最小者 ac?(ab?a:b):(cb?c:b)11. 思考题 (1)“=”和“= =”有什么区别? (2)“&”和“&”、“|”和“|”有什么区别?第6.6讲:位运算的应用1假设unsigned short mode
5、= 0777;unsigned short umask = 022;写位运算表达式:根据umask的设置对mode的特定位清零,具体为,如果umask的某一位标志为1,则mode的相应位清为0,其他位保持不变。umask&mode (k4)&mode 2已知一个unsigned long的数可以看成是由两个unsigned short组成,分别为高16位和低16位,通过写写位运算表达式分别将这两个unsigned short数取出保存到两个unsigned short的变量中。3. 已知对一个unsigned int oflag,第一位(以1序)代表控制文件的读开关,第二位代表控制文件的写开关
6、,1代表开关为ON状态,0为OFF状态,除此之外的其他位不处理,默认一直都是OFF。假设初始情况读开关和写开关都是OFF状态。写位运算表达式:第一步:仅打开读开关第二步:仅打开写开关第三步:测试读开关和写开关的状态第四步:仅关闭读开关第五步:仅关闭写开关第六步:同时打开读写开关第七步:同时关闭读写开关4. 我国邮政编码的一二位代表省份或直辖市。第三四位代表地、市、州。第五六位代表一个县.一个镇或者一个居住的小区。例如:邮政编码“130021”“13”代表吉林省,“00”代表省会长春,“21”代表所在投递区。假设用一个unsigned long来表示邮政编码,则”130021”可以表示为0x00130021,试写位运算表达式,已知一个邮政编码,快速提取其省份,地市和投递区这三个域。5. 交换两个unsigned long类型的值,不用中间临时变量。(提示,使用异或,异或有两个特性:一个数异或本身恒等于0;一个数异或0恒等于本身。)6. 整数求负,设 int x=7,利用位运算表达式求-7。7. 有两个整形变量a和b,只用位运算,不用if、switch等条件判断语句,找出较大的那个变量。8. 判断正整数num是奇数还是偶数9. 取整型变量num的第k位(二进制表示中);10. 将整型变量num的第k位(二进制表示中)清零;