一、数值处理题型
1、素数(质数)处理问题
a.判断一个数n是否为素数
算法思想:用2~sqrt(n)之间的数依次除去n,只要有一个数能将n整除,n就不是素数。
1.已知char a=3,b=6,c;c=a^b<<2;则c的二进制值是多少?
首先b=6化为二进制为110,<<优先级较高像左移2位为11000,再与a做异或,a=11,所以c=11011
2.若x、i、j 和k 都是int 型变量,则计算表达式x=(i=4,j=16,k=32)后,x 的值是?
不看里面的赋值操作
就是x=(4,16,32) 4,16,32是一个逗号表达式,逗号表达式返回最后一个逗号后的值作为整个表达式的值,所以x=32
3.对于代数式3ae/bc,不能正确描述该式的C 语言表达式是(C)。
A.a/b/ce3 B.3ae/b/c C.3ae/bc D.ae/c/b*3
乘除同级,从左向右结合。
5、表达式!x||ab 等效于(D)。
A.!((x||a)b) B.!(x||ab) C.!(x||(ab)) D.(!x)||(a==b)
优先级:! = = ||
6、设整型变量m,n,a,b,c,d均为1,执行(m=a>b)&&(n=c>d)后,m,n的值是多少?
首先执行:(m=a>b)
因为:a=b=1,所以a>b为false,
那么,m被重新赋值为m=0
对于表达式:0&&X,无论后面的X为真还是假,结果都为假
在c语言中,此时规定不再求解后面表达式X的结果
也就是(n=c>d)并不计算
那么n保持原来的值:n=1
综上,最后结果为:m=0;n=1
7.设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d 的结果为1
“?:" 这是一个三目运算符,以 “c>d?a:d”这个代码为例,程序会首先判断“c>d”是否为真,若为真则执行冒号前的语句,即其结果为”a“的值;若为假,则执行冒号后的语句,即其值为"d"的值。
一般遇到这样的题要拆分着做,首先判断最左边的“a>b”,这个结果为假,根据条件判断运算符的性质,所以接下来执行第一个冒号后的语句“c>d?a:d”,接着判断“c>d”,结果为假,所以最终取值为第二个冒号后的值,即为d的值,也就是4。