溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

C語(yǔ)言怎么解決抓交通肇事犯問(wèn)題

發(fā)布時(shí)間:2022-03-24 09:20:22 來(lái)源:億速云 閱讀:187 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“C語(yǔ)言怎么解決抓交通肇事犯問(wèn)題”,在日常操作中,相信很多人在C語(yǔ)言怎么解決抓交通肇事犯問(wèn)題問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C語(yǔ)言怎么解決抓交通肇事犯問(wèn)題”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

1. 問(wèn)題描述

一輛卡車(chē)違反交通規(guī)則,撞人后逃跑?,F(xiàn)場(chǎng)有三人目擊該事件,但都沒(méi)有記住車(chē)號(hào),只記下車(chē)號(hào)的一些特征。

甲說(shuō):牌照的前兩位數(shù)字是相同的;

乙說(shuō):牌照的后兩位數(shù)字是相同的,但與前兩位不同;

丙是數(shù)學(xué)家,他說(shuō):四位的車(chē)號(hào)剛好是一個(gè)整數(shù)的平方。

請(qǐng)根據(jù)以上線(xiàn)索求出車(chē)號(hào)。

2. 題目分析

按照題目的要求造出一個(gè)前兩位數(shù)相同、后兩位數(shù)相同且相互間又不同的 4 位整數(shù),然后判斷該整數(shù)是否是另一個(gè)整數(shù)的平方。

即求一個(gè)四位數(shù)                                                    a                               1、a                               2 、a                               3、                                                a                               4,滿(mǎn)足如下的條件:

C語(yǔ)言怎么解決抓交通肇事犯問(wèn)題

3. 算法設(shè)計(jì)

該題目是數(shù)值計(jì)算問(wèn)題,求解不定方程。

對(duì)于這種求解不定方程組的問(wèn)題,一般采用窮舉循環(huán)。

首先設(shè)計(jì)雙層循環(huán)窮舉出所有由前兩位數(shù)和后兩位數(shù)組成的 4 位數(shù)車(chē)牌;

然后在最內(nèi)層窮舉出所有平方后值為 4 位數(shù)并且小于車(chē)牌號(hào)的數(shù);

最后判斷該數(shù)是否與車(chē)牌相等,若相等則打印車(chē)牌。

4. 流程框架

程序流程圖如下所示

C語(yǔ)言怎么解決抓交通肇事犯問(wèn)題

C語(yǔ)言怎么解決抓交通肇事犯問(wèn)題

判斷車(chē)牌 k 是否為某個(gè)整數(shù)的平方

再次利用循環(huán)來(lái)實(shí)現(xiàn),循環(huán)變量 temp 求平方與車(chē)牌號(hào) k 比較,如相等則找到車(chē)牌號(hào)。

優(yōu)化算法,temp 的初值應(yīng)該從 31 開(kāi)始,因?yàn)樾∮?0的數(shù)的平方小于 4 位數(shù),因此該層循環(huán)為最內(nèi)層循環(huán),對(duì)每一個(gè)車(chē)牌號(hào)均做如此操作。

C語(yǔ)言怎么解決抓交通肇事犯問(wèn)題

5. 代碼實(shí)現(xiàn)

完整代碼????

int main()
{
	int i = 0;//i代表前兩位車(chē)牌號(hào)數(shù)字

	int j = 0;//j代表后兩位車(chē)牌號(hào)數(shù)字

	int k = 0;//k代表車(chē)牌號(hào)

	int temp = 0;

	for (i = 0; i <= 9; i++)
	{
		for (j = 0; j <= 9; j++)
		{
			//判斷前兩位數(shù)和后兩位數(shù)字是否不同
			if (i != j)
			{
				//組成4位車(chē)牌號(hào)
				k = 1000 * i + 100 * i + 10 * j + j;

				//判斷k是否是某個(gè)數(shù)的平方,若是則輸出k
				for (temp = 31; temp <= 99; temp++)
				{
					if (temp * temp == k)
					{
						printf("車(chē)牌號(hào)為:%d\n", k);
					}
				}
			}
		}
	}
	return 0;
}

運(yùn)行結(jié)果????

C語(yǔ)言怎么解決抓交通肇事犯問(wèn)題

6. 算法升級(jí)

針對(duì)上述程序如果已經(jīng)找到相應(yīng)的車(chē)牌號(hào),請(qǐng)思考循環(huán)是否還需要繼續(xù)呢?  答案是肯定的,因?yàn)樗惴ㄔ谠O(shè)計(jì)窮舉循環(huán)的時(shí)候,并沒(méi)有在找到車(chē)牌的時(shí)候就退出循環(huán),而是繼續(xù)窮舉其他 i、j 的情況。  我們可以改進(jìn)算法,設(shè)置一個(gè) 標(biāo)識(shí)變量,該變量初值為 0,一旦找到車(chē)牌號(hào),則改變?cè)摌?biāo)識(shí)變量的值為 1,每次循環(huán)判斷一下標(biāo)識(shí)變量的值,如果值為 1 則退出所有循環(huán),這樣能有效地減少循環(huán)次數(shù)。

改進(jìn)程序如下????

int main()
{
	int i = 0;//i代表前兩位車(chē)牌號(hào)數(shù)字

	int j = 0;//j代表后兩位車(chē)牌號(hào)數(shù)字

	int k = 0;//k代表車(chē)牌號(hào)

	int temp = 0;

	int flag = 0;//標(biāo)識(shí)符置為0

	for (i = 0; i <= 9; i++)
	{
		//判斷標(biāo)識(shí)變量
		if (flag) 
			break;

		for (j = 0; j <= 9; j++)
		{
			//判斷標(biāo)識(shí)變量
			if (flag)
				break;

			//判斷前兩位數(shù)和后兩位數(shù)字是否不同
			if (i != j)
			{
				//組成4位車(chē)牌號(hào)
				k = 1000 * i + 100 * i + 10 * j + j;

				//判斷k是否是某個(gè)數(shù)的平方,若是則輸出k
				for (temp = 31; temp <= 99; temp++)
				{
					if (temp * temp == k)
					{
						printf("車(chē)牌號(hào)為:%d\n", k);
						flag = 1; //找到車(chē)牌后,標(biāo)識(shí)變量置為1
						break; //強(qiáng)制退出到最內(nèi)層循環(huán)
					}
				}
			}
		}
	}
	return 0;
}

到此,關(guān)于“C語(yǔ)言怎么解決抓交通肇事犯問(wèn)題”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI