您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言抓交通肇事犯问题

时间:12-29来源:作者:点击数:

问题描述

一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。

问题分析

按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的4位整数, 然后判断该整数是否是另一个整数的平方。即求一个四位  满足如下的条件:

算法设计

该题是数值计算问题,求解不定方程。采用穷举循环,首先设计双层循环穷举出所有由前两位数和后两位数组成的4位数车牌,然后在最内层穷举出所有平方后值为4位数并且小于车牌号的数,最后判断该数是否与车牌相等,若相等则打印车牌。

下面是完整的代码:

#include<stdio.h>
int main()
{
    int i, j, k, temp;  /*i代表前两位车牌号数字,j代表后两位车牌号的数字,k代表车牌号*/
    for(i=0; i<=9; i++)
        for(j=0; j<=9; j++)  /*穷举前两位和后两位车牌数字*/
        {
            /*判断前两位数字和后两位数字是否不同*/
            if(i!=j)
            {
                /*组成4位车牌号k*/
                k = 1000*i + 100*i + 10*j + j;
                /*判断k是否是某个数的平方,若是则输出k*/
                for(temp=31; temp<=99; temp++)
                    if(temp*temp == k)
                        printf("车牌号为%d\n", k);
            }
        }
    return 0;
}

运行结果:车牌号为7744

补充说明:判断车牌k是否为某个整数的平方

再次利用循环来实现,循环变量temp求平方和车牌号k比较,如相等则找到车牌号。优化算法,temp的初值应该从31开始,因为小于30的数的平方小于4位数,因此该层循环为最内层循环,对每一个车牌号均做如此操作。

/*判断k是否是某个数的平方,若是则输出k*/
for(temp=31; temp<=99; temp++)
    if(temp*temp==k)
        printf("车牌号为%d\n",k);

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门