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。