一辆卡车违反交通规则,撞人后逃跑.现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征.甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方.请根据以上线索求出车号.
代码:
#include <stdio.h>
int main()
{
int i,j,k,temp; //i,j为车牌号的前两位和后两位,k为车牌号
int flag = 0;//flag为标识变量
for(i = 0;i <= 9;i++)
{ if(flag)
break;
for(j = 0;j <= 9;j++)
{ if(flag)
break;
if( i != j )
{
k = 1000 * i + 100 * i + 10 * j + j;
for(temp = 31;temp <= 99;temp++)
{
if(temp * temp == k)
{
printf(“车牌号是%d”,k);
flag = 1;
break;
}
}
}
}
return 0;
}
对第三层循环嵌套的改进,每次还要进行(99-31=68)次判断,占用内存运行时间,改进后只需要一次判断即可.
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,flag = 0; //i,j为车牌号的前两位和后两位,flag为标识变量
float k; //k为车牌号
for(i = 0;i <= 9;i++)
{
if(flag)
break;
for(j = 0;j <= 9;j++)
{
if(flag)
break;
if( i != j )
{
k = sqrt(1000 * i + 100 * i + 10 * j + j);
if(k == (int)k)
{
printf(“车牌号是%d”,k);
flag = 1;
break;
}
}
}
return 0;
}