C語(yǔ)言for語(yǔ)句用法詳解
首先,這里所提到的類C語(yǔ)言指的是如C、C++、C#和Java等語(yǔ)法和C語(yǔ)言一樣或類似的程序設(shè)計(jì)語(yǔ)言。這些語(yǔ)言中,for語(yǔ)句的語(yǔ)法和執(zhí)行流程都是一樣的。本文將就這一語(yǔ)句的用法進(jìn)行一個(gè)較為深入的討論。
for語(yǔ)句:
{
循環(huán)語(yǔ)句
}
表達(dá)式1 給循環(huán)變量賦初值
表達(dá)式2 為循環(huán)條件
表達(dá)式3 用來(lái)修改循環(huán)變量的值,稱為循環(huán)步長(zhǎng)。
for語(yǔ)句的執(zhí)行流程:
例:編程計(jì)算:1+2+3+...+99+100的結(jié)果。
這是累加問題,累加問題的通用表達(dá)式為:S = S + T;
其中,S是一個(gè)變量,用來(lái)存儲(chǔ)累加最后的結(jié)果,稱之為累加器;T是一個(gè)表達(dá)式,代表每次需要加入累加器的中的值。
累加一般是通過(guò)循環(huán)結(jié)構(gòu)實(shí)現(xiàn)的。循環(huán)之前要設(shè)置累加器S的初始值為0。
累加項(xiàng)T可以是很簡(jiǎn)單的表達(dá)式,也有可能是一個(gè)通過(guò)分析得到的較復(fù)雜的表達(dá)式。
int S = 0; for (int i = 1; i <= 100; i++) { S = S + i; } printf("%d\n",S);
注意:
1)對(duì)于已經(jīng)確定是累加算法的題目,首先確定累加項(xiàng)與循環(huán)變量的關(guān)系;
2)然后,考慮第一個(gè)累加項(xiàng)的值是多少,以確定循環(huán)變量的初值;
3)其次,確定最后一個(gè)累加項(xiàng)的值,確定循環(huán)條件;
4)最后,考慮每個(gè)累加項(xiàng)之間的關(guān)系,以確定循環(huán)變量的變化(步長(zhǎng)值)。
例:編程計(jì)算S = a + aa + aaa + aaaa + ... 的前n項(xiàng)之和。
例如:如果a = 3,n = 5,則表達(dá)式為:S = 3 + 33 + 333 + 3333 + 33333。
int S = 0; int t = 0; for (int i = 0;i < 5;i++ ) { t = t * 10 + 3; S = S + t; } printf("%d\n",S);
累加算法也可以演化為連乘的形式:S = 1 * 2 * 3 * ... * n。
連乘的算法和累加算法相似,循環(huán)體實(shí)現(xiàn)的是S = S * T的形式。需要注意的S的初值不是0,而是要設(shè)為1。
在求連乘時(shí),由于每乘一次結(jié)果增長(zhǎng)都非??欤詰?yīng)該注意是否會(huì)出現(xiàn)溢出的問題。
循環(huán)程序設(shè)計(jì)思路:
(1)輸入是什么?用來(lái)確定原始值。
(2)輸出是什么?確定應(yīng)該輸出的結(jié)果。
(3)從輸入轉(zhuǎn)換為輸出需要怎樣的步驟,是否需要重復(fù)(確定是否需要使用循環(huán)語(yǔ)句以及循環(huán)語(yǔ)句的內(nèi)容)。
(4)如果需要重復(fù),能否提前預(yù)知重復(fù)的次數(shù)?用來(lái)確定使用while、do while、for中的哪種循環(huán)語(yǔ)句。
(5)何時(shí)不再需要重復(fù)?用來(lái)確定循環(huán)條件以及循環(huán)體中使循環(huán)條件趨近于0的語(yǔ)句。
例:水仙花數(shù)、四葉玫瑰數(shù)、五角星數(shù)、六位數(shù)的問題。
水仙花數(shù):每位數(shù)字的3次冪之和等于它本身。例:1^3 + 5^3 + 3^3 = 153。
四葉玫瑰數(shù):每位數(shù)字的4次冪之和等于它本身。
五角星數(shù):每位數(shù)字的5次冪之和等于它本身。
六位數(shù):每位數(shù)字的6次冪之和等于它本身。
// 打印出所有的水仙花數(shù) int i,j,k,n,s; for(i = 1;i <= 9;i++) for(j = 0;j <= 9;j++) for(k = 0;k <= 9;k++) { n = k * k * k + j * j * j + i * i * i; s = i * 100 + j * 10 + k; if (n == s) { printf("%d\n",n); } } 或: // 打印出所有水仙花數(shù) int i,j,k,n,s; printf("水仙花數(shù)有:\n"); for(n = 100;n < 1000;n++) { i = n / 100; /*分解出百位*/ j = n / 10 % 10; /*分解出十位*/ k = n % 10; /*分解出個(gè)位*/ s = i * i * i + j * j * j + k * k * k; if(s == n) { printf("%d\n",n); } }
最后我用例子來(lái)總結(jié)一下吧! 下面的例子是一個(gè)對(duì)1-10這10個(gè)數(shù)求和的例子。
int i, sum = 0, num = 10; // 聲明幾個(gè)變量:i 計(jì)數(shù), sum 存儲(chǔ)最后的總和, num 表示多少個(gè)數(shù),用來(lái)控制邊界。
for(i = 1; i <= num; i++) // for語(yǔ)句包含三個(gè)語(yǔ)句,用;隔開。
{ //1設(shè)置初始值,2邊界控制,3通常用來(lái)調(diào)整計(jì)數(shù)值。
sum += i; // 相當(dāng)于 sum = sum + i; 表示不斷地加i。 {}內(nèi)的語(yǔ)句均為循環(huán)體,用4表示。
} // for循環(huán)的執(zhí)行順序?yàn)?1-2-4-3-2-4-3-2-4-3-2................直到i > num.這時(shí),將退出循環(huán)。
printf("The sum from 1 to 10 is ", sum); // 打印輸出sum值。
相關(guān)文章
C程序?qū)崿F(xiàn)整數(shù)的素?cái)?shù)和分解問題
這篇文章主要介紹了C程序?qū)崿F(xiàn)整數(shù)的素?cái)?shù)和分解問題,對(duì)于算法的學(xué)習(xí)有不錯(cuò)的借鑒價(jià)值,需要的朋友可以參考下2014-09-09簡(jiǎn)單談?wù)勱P(guān)于C++中大隨機(jī)數(shù)的問題
這篇文章主要介紹了關(guān)于C++中大隨機(jī)數(shù)的問題,文中給出了詳細(xì)的示例代碼,相信對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,有需要的朋友可以一起來(lái)學(xué)習(xí)學(xué)習(xí)。2017-01-01QT開發(fā)應(yīng)用程序的歡迎界面實(shí)例
下面小編就為大家?guī)?lái)一篇QT開發(fā)應(yīng)用程序的歡迎界面實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08C語(yǔ)言數(shù)組元素循環(huán)右移問題及解決方法
這篇文章主要介紹了C語(yǔ)言數(shù)組元素循環(huán)右移問題,本文通過(guò)多種方法給大家分享解決方案,通過(guò)實(shí)例代碼講解,對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03C語(yǔ)言實(shí)現(xiàn)火車票管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)火車票管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03QT使用canon sdk拍照并保存到本機(jī)的方法示例
這篇文章主要介紹了QT使用canon sdk拍照并保存到本機(jī)的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10C++實(shí)現(xiàn)LeetCode(83.移除有序鏈表中的重復(fù)項(xiàng))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(83.移除有序鏈表中的重復(fù)項(xiàng)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++控制權(quán)限關(guān)鍵字protected
這篇文章主要介紹了C++控制權(quán)限關(guān)鍵字protected,protected和private類似,而對(duì)于派生類來(lái)說(shuō),protected與public類似,下面來(lái)一起倆姐更多詳細(xì)內(nèi)容吧,需要的小伙伴可以參考一下2022-01-01C++實(shí)現(xiàn)快速排序(Quicksort)算法
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)快速排序(Quicksort)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04