【C語言】-循環(huán)結(jié)構(gòu)-for語句

for語句:

for (表達式1;表達式2;表達式3)
{
  循環(huán)語句
}
  • 表達式1 給循環(huán)變量賦初值
  • 表達式2 為循環(huán)條件
  • 表達式3 用來修改循環(huán)變量的值,稱為循環(huán)步長。

for語句的執(zhí)行流程:

for語句的執(zhí)行流程.png

例:編程計算:1+2+3+...+99+100的結(jié)果。

這是累加問題,累加問題的通用表達式為:S = S + T;
其中,S是一個變量,用來存儲累加最后的結(jié)果,稱之為累加器;T是一個表達式,代表每次需要加入累加器的中的值。
累加一般是通過循環(huán)結(jié)構(gòu)實現(xiàn)的。循環(huán)之前要設(shè)置累加器S的初始值為0。
累加項T可以是很簡單的表達式,也有可能是一個通過分析得到的較復雜的表達式。

int S = 0;
for (int i = 1; i <= 100; i++)
{
   S = S + i;
}
printf("%d\n",S);

注意:

1)對于已經(jīng)確定是累加算法的題目,首先確定累加項與循環(huán)變量的關(guān)系;
2)然后,考慮第一個累加項的值是多少,以確定循環(huán)變量的初值;
3)其次,確定最后一個累加項的值,確定循環(huán)條件;
4)最后,考慮每個累加項之間的關(guān)系,以確定循環(huán)變量的變化(步長值)。

例:編程計算S = a + aa + aaa + aaaa + ... 的前n項之和。

例如:如果a = 3,n = 5,則表達式為: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)體實現(xiàn)的是S = S * T的形式。需要注意的S的初值不是0,而是要設(shè)為1。
在求連乘時,由于每乘一次結(jié)果增長都非常快,所以應該注意是否會出現(xiàn)溢出的問題。

循環(huán)程序設(shè)計思路:

(1)輸入是什么?用來確定原始值。

(2)輸出是什么?確定應該輸出的結(jié)果。

(3)從輸入轉(zhuǎn)換為輸出需要怎樣的步驟,是否需要重復(確定是否需要使用循環(huán)語句以及循環(huán)語句的內(nèi)容)。

(4)如果需要重復,能否提前預知重復的次數(shù)?用來確定使用while、do while、for中的哪種循環(huán)語句。

(5)何時不再需要重復?用來確定循環(huán)條件以及循環(huán)體中使循環(huán)條件趨近于0的語句。

例:水仙花數(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;          /*分解出個位*/
            s = i * i * i + j * j * j + k * k * k;
            if(s == n)
            {
                printf("%-5d\n",n);
            }
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 《裕語言》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 28,703評論 5 20
  • 數(shù)組在程序設(shè)計中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數(shù)據(jù)元素的集合稱...
    朱森閱讀 4,264評論 2 13
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運用指針編程是C語言最主要的風格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,606評論 3 44
  • Sunny飛鏡閱讀 147評論 0 0
  • 我們生活在相互比較的感覺中。這種比較既可以給人帶來自信,也可能給人帶來自卑。當它給人帶來自卑時,負性的自我肖像會慢...
    我的心靈大白閱讀 3,561評論 18 90

友情鏈接更多精彩內(nèi)容