12.如果a为int类型的变量,下列哪个表达式可以正确求出满足“大于等于a且是4的倍数”的整数中最小的?
【考纲知识点】基本运算(一级)
【解析】本题考察C++基本运算中的算术运算;
选项A,假设a为3,a*4即为3*4=12,12虽然满足大于等于a且是4的倍数,但不是满足条件的整数中最小的,排除A;
选项B,假设a为3,a/4结果为0,因为a为int类型,int类型进行计算,结果还是int,会把小数部分舍去,故a/3*4结果为0,不满足条件,排除B;
选项C,假设令a=4k+t为3,k是一个整数,0<=t<=3,则(a+3)/4=(4k+t+3)/4=k+(t+3)/46。如果a是4的倍数,则t=0, 6/4=1,1*4=4, (a+3)/4*4=k*4=a,等于a且是4的倍数;否则t>=1,(4k+4)/4*4 <= (a+3) /4*4 <= (4k+6)/4*4,即(4k+4) <= (a+3) /4*4 <= (4k+4),结果为4k+4,大于等于a且是4的倍数的整数中最小的,满足题意;
选项D,假设a为4,4%4=0,a-a%4+4=8,8虽然满足大于等于a且是4的倍数,但不是满足条件的整数中最小的,排除D;
所以本题正确答案为C。