c经典100题交通肇事问题

来源:百度知道 编辑:UC知道 时间:2024/09/20 21:28:52
一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。

#include<iostream>
#include<math.h>
using namespace std;
int find()
{
int x=0,final=0;
do
{
x++;
final+=x;
}while(!(final/1000==final/100%10)&&(final%10==final/10%10)&&(final==pow(x,2)&&final>1000));

return final;
}

int main()
{
int n=0;
n=find();
cout<<"肇事车牌号为:"<<n;
return 0;
}
可是为什么输出老是是1啊
其实大于1000是因为答案一直是1,而且第一位为0的话 就说明只有两位数了,不存在的.我要的只是修改不好意思

楼上的说法未必对啊,车号也未必大于一千,有可能前面有零的。
我自己写了一个,因为我不知道pow(x,2)函数是干什么的,嘿嘿,才学不久。
/*一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,
但都没有记住车号,只记下车号的一些特征。
甲说:牌照的前两位数字是相同的;
乙说:牌照的后两位数字是相同的,但与前两位不同;
丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。
*/
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a,b;//a是头二位,b是后二位
float x;
int n;//车号
for(a=0;a<10;a++)
{
for(b=0;b<10;b++)
{
if(a!=b)
{
n=a*1000+a*100+b*10+b*1;
if((int)sqrt(n)*(int)sqrt(n)==n)
cout<<"车号:"<<n<<endl;
}
}
}
return 0;

}
*****************************************************************************************但是,车牌有可能是00xx这样的啊,那就把车号输出这块改一下,你的这块也改一下比较好,像我这样,把千位和百位,设成一个变量,十位和个位设成一个变量,这样的话,输出就可以用
cout<<"车号"<<a<<a<<b<<b<<endl;
用这样的话,即使头两位是0也可以输出四位数的了。就和正常情况相当了