国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C語言初階(5)】循環(huán)練習(xí)題

這篇具有很好參考價(jià)值的文章主要介紹了【C語言初階(5)】循環(huán)練習(xí)題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 計(jì)算 n 的階乘

階乘

  • 某個(gè)數(shù)從 1 開始一直乘到這個(gè)數(shù)本身為止;
  • 例如:3 的階乘就是 1 * 2 * 3 = 6;
  • n 的階乘就是 1 * 2 * 3 … * n。

解題思路

  • 如果想要階乘到 n 的話,就要產(chǎn)生 1-n 的數(shù)字,此時(shí)就需要用到循環(huán)。
  • 通過循環(huán)產(chǎn)生 1-n 的數(shù)字,然后把這些數(shù)字累積乘到一個(gè)數(shù)上。

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

#include <stdio.h>
int main()
{
	int n, i;
	int ret = 1;//產(chǎn)生的1-n的數(shù)字要累乘到ret上存起來,所以ret必須初始化為1
	scanf("%d", &n);

	for (i = 1; i <= n; i++)//產(chǎn)生 1-n 的數(shù)字
	{
		ret *= i;//將不斷產(chǎn)生的 1-n 的數(shù)字累乘到 ret 上
	}
	printf("%d\n", ret);
	return 0;
}

c語言,C語言程序設(shè)計(jì)從入門到進(jìn)階,c語言,算法,數(shù)據(jù)結(jié)構(gòu)

2. 計(jì)算 1!+2!+3!+……+10!

解題思路

  • 和上一題一樣分別計(jì)算從 1-10 的每個(gè)數(shù)的階乘,并把這些數(shù)全部累加到一個(gè)變量上去。

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

#include <stdio.h>

int main()
{
	int sum = 0,ret = 1;
	int i, n;
	scanf("%d", &n);

	for (i = 1; i <= n; i++)
	{
		ret  *=  i;//產(chǎn)生從 1-n 的階乘并且存到 ret 中
		sum += ret;//將每次產(chǎn)生的階乘的結(jié)果累加到 sum 中去
	}
	printf("%d\n", sum);

	return 0;
}

c語言,C語言程序設(shè)計(jì)從入門到進(jìn)階,c語言,算法,數(shù)據(jù)結(jié)構(gòu)

3. 使用二分查找法查找某數(shù)

題目?jī)?nèi)容

  • 在一個(gè)有序數(shù)組中查找具體的某個(gè)數(shù)字 n。

二分查找算法介紹

二分查找

  • 每次將待查記錄所在區(qū)間縮小一半;
  • 只對(duì)已經(jīng)排序的數(shù)據(jù)有效。

查找過程

  • 當(dāng)前數(shù)組內(nèi)的數(shù)據(jù)元素是按照升序排序的。

c語言,C語言程序設(shè)計(jì)從入門到進(jìn)階,c語言,算法,數(shù)據(jù)結(jié)構(gòu)

  1. 設(shè)置一個(gè)查找區(qū)間初始值,low 指向第一個(gè)元素,high 指向最后一個(gè)元素。
  2. 當(dāng) low <= high 時(shí),循環(huán)執(zhí)行以下操作:
    • 設(shè)一個(gè) mid 為 low 和 high 的中間值:mid = (low + high) / 2,當(dāng)前這個(gè)數(shù)組的 mid 是下標(biāo) 6 的元素 56。
    • 直接將要找的這個(gè)關(guān)鍵字的值 21 和 和中間位置的這個(gè)值比較一下,發(fā)現(xiàn) 21 < 56,說明要找的值一定在 mid 的左半邊區(qū)域。要將查找范圍更新到 mid 左邊。
    • 則將新的 high 更新為:key < mid 則:high = mid - 1,因?yàn)橹虚g位置56比較過了,不是這家伙。

c語言,C語言程序設(shè)計(jì)從入門到進(jìn)階,c語言,算法,數(shù)據(jù)結(jié)構(gòu)

c語言,C語言程序設(shè)計(jì)從入門到進(jìn)階,c語言,算法,數(shù)據(jù)結(jié)構(gòu)

  1. 繼續(xù)拿 mid 的值和 21 比較,發(fā)現(xiàn) 19 < 21,說明待查找的值在 mid 的右邊,將 low 更新,key > mid 則: low = mid +1。
  2. 然后再取找中間位置,low是 4 high 是 5,mid 的值就是4。

c語言,C語言程序設(shè)計(jì)從入門到進(jìn)階,c語言,算法,數(shù)據(jù)結(jié)構(gòu)

  1. 拿 key 的值 21 和 mid 的值比較,發(fā)現(xiàn) mid == key 則:return mid。

如果要找的值不在數(shù)組中

c語言,C語言程序設(shè)計(jì)從入門到進(jìn)階,c語言,算法,數(shù)據(jù)結(jié)構(gòu)
c語言,C語言程序設(shè)計(jì)從入門到進(jìn)階,c語言,算法,數(shù)據(jù)結(jié)構(gòu)

  • 查找到最后 low 會(huì)大于 high 上下限交換了,此時(shí)說明數(shù)組中沒有俺們要找的數(shù)。
  • 折半查找結(jié)束條件:high < low
    • 因?yàn)檫@樣就說明 high 和 low 之間已經(jīng)沒有元素可以被查找了。

二分查找特點(diǎn)

  • 在數(shù)據(jù)越多的時(shí)候效率越高,假設(shè)要 40 億的數(shù)據(jù)中查找,第一次就能去掉20億的數(shù)據(jù)。
  • 待查找的數(shù)據(jù)必須是有序的。

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

#include <stdio.h>
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);//計(jì)算數(shù)組中有多少個(gè)元素
	int low = 0,high = sz - 1;//high指向的是最后一個(gè)元素的下標(biāo),所以要 sz -1
	int n;

	printf("請(qǐng)輸入要查找的數(shù):");
	scanf("%d", &n);
	while (low <= high)//這個(gè)循環(huán)條件說明兩者之間還有元素未被查找
	{
		int mid = (low + high) / 2;//這一步必須要寫進(jìn)循環(huán)里,不然 mid 無法更新
		if (arr[mid] > n)//如果中間值大于要查找的值,則去 mid 的左半?yún)^(qū)域去找
		{
			high = mid-1;
		}
		else if (arr[mid] < n)//如果中間值小于要查找的值,則去 mid 的右半?yún)^(qū)域?qū)ふ?/span>
		{
			low = mid + 1;
		}
		else
		{
			printf("找到了,下標(biāo)是%d\n", mid);
			break;//已經(jīng)找到了,再繼續(xù)找就沒意義了
		}
	}
	if (low > high)//中間已經(jīng)沒有元素可以被查找了
	{
		printf("找不到了\n");
	}
	return 0;
}

c語言,C語言程序設(shè)計(jì)從入門到進(jìn)階,c語言,算法,數(shù)據(jù)結(jié)構(gòu)

4. 演示字符移動(dòng)

題目?jī)?nèi)容

  • 編寫代碼,演示多個(gè)字符從兩端移動(dòng),向中間匯聚。

題目分析

  • 假設(shè)最終要打印出 hello word!,要演示出的效果就是下面這樣;
***********
h*********!
he*******d!
hel*****rd!
hell***ord!
hello*word!
hello word!

解題思路

  1. 創(chuàng)建兩個(gè)數(shù)組,arr1 用來存 hello word!,arr2 用來存放 ***********。
  2. 找出兩個(gè)字符串?dāng)?shù)組最右端及最左端字符的數(shù)組下標(biāo)。
  3. 控制左右兩端的下標(biāo),將 arr1 左右兩端的字符從外向里,依次賦值到 arr2 對(duì)應(yīng)的位置上去。

c語言,C語言程序設(shè)計(jì)從入門到進(jìn)階,c語言,算法,數(shù)據(jù)結(jié)構(gòu)

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

#include <stdio.h>
#include <string.h>

int main()
{
	char arr1[] = "hello word!";
	char arr2[] = "***********";
	int left = 0;
	int right = strlen(arr1) - 1;//要拿到的是字符串?dāng)?shù)組的最后一個(gè)元素的下標(biāo)

	printf("%s\n", arr2);
	
	while(left<=right)//讓 arr1 數(shù)組中的左右兩端的元素向中間移動(dòng),然后依次賦給arr2
	{	
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		left++; right--;
		printf("%s\n", arr2);	
	}
	return 0;
}

5. 模擬用戶登錄場(chǎng)景

題目?jī)?nèi)容

  • 編寫代碼實(shí)現(xiàn),模擬用戶登錄情景,并且只能登錄三次。(只允許輸入三次密碼,如果密碼正確則
    提示登錄成功,如果三次均輸入錯(cuò)誤,則退出程序。

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

#include <stdio.h>
#include <string.h>
int main()
{
	int i;
	char arr1[] = "5201314";
	char password[20];

	for (i = 0; i < 3; i++)
	{
		printf("請(qǐng)輸入密碼:");
		scanf("%s", password);//數(shù)組名已經(jīng)是地址了,此處不需要 &password 了

		//使用 strcmp 來比較兩個(gè)字符串是否相等,引用頭文件 string.h
		//如果兩個(gè)字符串相等,則 strcmp 的返回值為 0(假)
	
		if (!strcmp(password, arr1))//如果相等則返回的是 0 (假),用 ! 把假變成真
		{
			printf("登錄成功\n");
			break;
		}
		else
		{
			printf("密碼錯(cuò)誤,請(qǐng)重試\n");
		}
	}
	if (3 == i)
	{
		printf("你已輸錯(cuò)3次,已退出程序!\n");
	}
	return 0;
}

c語言,C語言程序設(shè)計(jì)從入門到進(jìn)階,c語言,算法,數(shù)據(jù)結(jié)構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-515846.html

到了這里,關(guān)于【C語言初階(5)】循環(huán)練習(xí)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C++ 程序設(shè)計(jì)】實(shí)戰(zhàn):C++ 實(shí)踐練習(xí)題(1~10)

    【C++ 程序設(shè)計(jì)】實(shí)戰(zhàn):C++ 實(shí)踐練習(xí)題(1~10)

    目錄 01. 二維數(shù)組反對(duì)角線之和 02. 奇偶性? 03. 指針與變量 04. 員工薪資? 05. 整型值(%4d?進(jìn)行格式化) 06. 求三個(gè)數(shù)中的最大值和最小值 07. 同一字母次數(shù)統(tǒng)計(jì) 08. 字符串回文判斷 09. 閏年判斷 10.?交換兩個(gè)雙精度數(shù) 【代碼詳解】 以上代碼 計(jì)算的是 反對(duì)角線(從右上角到左下

    2024年02月14日
    瀏覽(31)
  • C語言循環(huán)結(jié)構(gòu)一些重要的練習(xí)題(較為基礎(chǔ)的)

    C語言循環(huán)結(jié)構(gòu)一些重要的練習(xí)題(較為基礎(chǔ)的)

    循環(huán)結(jié)構(gòu) 1.求累加和問題 2.輸出字母A-Z 3.輸入正整數(shù)n,計(jì)算并輸出n! 4.將一個(gè)正整數(shù)倒序輸出 5.打印九九乘法表 6.輸出三角形、菱形 7.continue語句和break語句 8.輸出100-200之間不能被3整除的數(shù) 9.求Pi的值,根據(jù) 10.求斐波那契數(shù)列前k項(xiàng)的值 11.判斷一個(gè)數(shù)是否為素?cái)?shù) 12.輸出特定

    2023年04月08日
    瀏覽(20)
  • 《Lua程序設(shè)計(jì)第四版》 第一部分自做練習(xí)題答案

    Lua程序設(shè)計(jì)第四版第一部分語言基礎(chǔ)自做練習(xí)題答案,帶?為重點(diǎn)。 運(yùn)行階乘的示例并觀察,如果輸入負(fù)數(shù),程序會(huì)出現(xiàn)什么問題?試著修改代碼來解決問題 輸入負(fù)數(shù),程序會(huì)死循環(huán),修改如下 分別使用-l參數(shù)和dofile運(yùn)行twice示例,并感受你喜歡哪種方式 載入庫,在 lua解釋

    2024年02月13日
    瀏覽(96)
  • 《Lua程序設(shè)計(jì)第四版》 第二部分14~17章自做練習(xí)題答案

    Lua程序設(shè)計(jì)第四版第二部分編程實(shí)操自做練習(xí)題答案,帶?為重點(diǎn)。 該函數(shù)用于兩個(gè)稀疏矩陣相加 改寫隊(duì)列的實(shí)現(xiàn),使得當(dāng)隊(duì)列為空時(shí)兩個(gè)索引都返回0 修改圖所用的數(shù)據(jù)結(jié)構(gòu),使得圖可以保存每條邊的標(biāo)簽。該數(shù)據(jù)結(jié)構(gòu)應(yīng)該使用包括兩個(gè)字段的對(duì)象來表示每一條邊,即邊的

    2024年02月13日
    瀏覽(93)
  • 《Lua程序設(shè)計(jì)第四版》 第二部分9~13章自做練習(xí)題答案

    Lua程序設(shè)計(jì)第四版第二部分編程實(shí)操自做練習(xí)題答案,帶?為重點(diǎn)。 請(qǐng)編寫一個(gè)函數(shù)integral,該函數(shù)以一個(gè)函數(shù)f為參數(shù)并返回其積分的近似值 使用右矩陣法近似積分值 如下代碼段將輸出什么結(jié)果 編寫練習(xí)5.4的柯里化版本 柯里化(Currying)是把接受 多個(gè)參數(shù) 的函數(shù)變換成

    2024年02月13日
    瀏覽(53)
  • 《Lua程序設(shè)計(jì)第四版》 第一部分前8章自做練習(xí)題答案

    Lua程序設(shè)計(jì)第四版第一部分語言基礎(chǔ)自做練習(xí)題答案,帶?為重點(diǎn)。 運(yùn)行階乘的示例并觀察,如果輸入負(fù)數(shù),程序會(huì)出現(xiàn)什么問題?試著修改代碼來解決問題 輸入負(fù)數(shù),程序會(huì)死循環(huán),修改如下 分別使用-l參數(shù)和dofile運(yùn)行twice示例,并感受你喜歡哪種方式 載入庫,在 lua解釋

    2024年02月13日
    瀏覽(155)
  • 循環(huán)結(jié)構(gòu)(含練習(xí)題)

    循環(huán)結(jié)構(gòu)(含練習(xí)題)

    當(dāng)循環(huán)次數(shù)或范圍確定時(shí),多用for循環(huán),反之多用while循環(huán) 循環(huán)結(jié)構(gòu)一般由四部分組成: 初始化語句,在循環(huán)開始最初執(zhí)行,并且只執(zhí)行一次 條件判斷、步進(jìn)語句、循環(huán)體 for循環(huán),循環(huán)體可以執(zhí)行零次或多次 每執(zhí)行一次循環(huán)體,就會(huì)執(zhí)行一次步進(jìn)語句 foreach循環(huán),JDK 5 新特

    2024年02月19日
    瀏覽(21)
  • 譚浩強(qiáng)C語言程序設(shè)計(jì)習(xí)題-循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
  • C語言之練習(xí)題

    C語言之練習(xí)題

    歡迎來到我的: 世界 希望作者的文章對(duì)你有所幫助,有不足的地方還請(qǐng)指正,大家一起學(xué)習(xí)交流 ! 這期文章由:兩題問答題+四道編程題;小孩在文章中寫有詳細(xì)解題思路,感謝大家支持支持。 思路: 首先我們要知道 x=x(x-1) 的含義; 假設(shè)x=3;也就是 011 ; 而x-1=2;是 010 ;

    2024年02月10日
    瀏覽(40)
  • C 語言練習(xí)題更新

    目錄(先不要看答案,首先自己做才能更好的領(lǐng)悟,做不來沒關(guān)系) 題目一:有 1、2、3、4 四個(gè)數(shù)字,能組成多少個(gè)互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少? 程序分析:可填在百位、十位、個(gè)位的數(shù)字都是 1、2、3、4,組成所有的排列后再去掉不滿足條件的排列。 題目

    2024年02月14日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包