穷举,抓交通肇事犯。一辆卡车违犯交通规则,撞人后逃跑。现场有三人目击事件,但都没记住车号,只记下车号的一些特征。 该车牌号是一个四位数; 甲说:牌照的前两位数字是相同的; 乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是位数学家,他说:四位的车号刚好是一个整数的平方。 请根据以上线索求出车号。
法一:该方法逻辑比较顺,但循环次数较多,效率低
#include<stdio.h>
int main()
{
int i,j,m;
int car_number;
int flag=1;//标志变量:当flag=0时跳脱出循环(也可以用goto跳出三重循环)
for (i = 0; i <= 9 && flag; i++)
{
for (j = 0; j <= 9 && flag; j++)
{
car_number = i * 1000 + i * 100 + j * 10 + j;//将车牌号变成aabb形式
for (m = 31; m < 100 && flag; m++)
{
if (m * m == car_number)//此条件满足车牌号是一个数的平方
flag = 0;//跳出三层循环
}
}
}
printf("四位数车牌号是%d", car_number);
return 0;
}
法二:该方法循环次数少,效率快
#include<stdio.h>
int main()
{
int i;
int car_No;
int b1,b2,b3,b4;
for (i = 3; i <= 9; i++)
{
car_No = (i * 11) * (i * 11);
b1 = car_No/1000;
b2 = car_No/100%10;
b3 = car_No/10%10;
b4 = car_No%10;
if (b1 == b2 && b3 == b4)
printf("车牌号为%d", car_No);
}
return 0;
}