湘潭湘仁医院:一个c语言程序所遇到的问题?高手帮帮忙

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 20:38:02
题目如下:一辆违反交通规则的大卡车,有3个目击者,第一个看到车牌照前两位是相同的,第二个看到车牌照后两位是相同的,第三个说这4位的牌照数字是一个整数的平方,根据线索找到肇事车?
教材上的程序如下:
#include"math.h"
main()
{inti,j,k,c:
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
if(i!=j){
k=i*1000+i*100+j*10+j;
for(c=31;c*c<k;c++)
if(c*c==k)printf("LOrry-No.is%d.\n",k);
}
}
问题如下:
1:c=31看不懂。
2:可以用sqrt(k)*sqrt(k)==k吗?最好能写一下,谢谢
3:为什么i最初赋值为0而不是1呢?

1 因为31*31=961,32*32=1024才是四位数,所以初始值是4
2 sqrt(k)是一个float,两个float相乘与一个int比较永远不相等
3 i从1开始的啊!j是从0开始。i从1开始保证是4位数。

ps:这个程序写的真差劲。时间复杂度爆高。