【C語言】-循環結構-for語句

for語句:

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

    for語句的執行流程:

    for語句的執行流程

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

    這是累加問題,累加問題的通用表達式爲:S = S + T;
    其中,S是一個變量,用來存儲累加最後的結果,稱之爲累加器;T是一個表達式,表明每次須要加入累加器的中的值。
    累加通常是經過循環結構實現的。循環以前要設置累加器S的初始值爲0。
    累加項T能夠是很簡單的表達式,也有多是一個經過分析獲得的較複雜的表達式。
int S = 0;
for (int i = 1; i <= 100; i++)
{
   S = S + i;
}
printf("%d\n",S);

注意:

1)對於已經肯定是累加算法的題目,首先肯定累加項與循環變量的關係;
2)而後,考慮第一個累加項的值是多少,以肯定循環變量的初值;
3)其次,肯定最後一個累加項的值,肯定循環條件;
4)最後,考慮每一個累加項之間的關係,以肯定循環變量的變化(步長值)。編程

例:編程計算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。
連乘的算法和累加算法類似,循環體實現的是S = S * T的形式。須要注意的S的初值不是0,而是要設爲1。
在求連乘時,因爲每乘一次結果增加都很是快,因此應該注意是否會出現溢出的問題。

循環程序設計思路:

(1)輸入是什麼?用來肯定原始值。

(2)輸出是什麼?肯定應該輸出的結果。

(3)從輸入轉換爲輸出須要怎樣的步驟,是否須要重複(肯定是否須要使用循環語句以及循環語句的內容)。

(4)若是須要重複,可否提早預知重複的次數?用來肯定使用while、do while、for中的哪一種循環語句。

(5)什麼時候再也不須要重複?用來肯定循環條件以及循環體中使循環條件趨近於0的語句。

例:水仙花數、四葉玫瑰數、五角星數、六位數的問題。

水仙花數:每位數字的3次冪之和等於它自己。例:1^3 + 5^3 + 3^3 = 153。
四葉玫瑰數:每位數字的4次冪之和等於它自己。
五角星數:每位數字的5次冪之和等於它自己。
六位數:每位數字的6次冪之和等於它自己。code

// 打印出全部的水仙花數
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);
         }
       }

或:

// 打印出全部水仙花數
        int i,j,k,n,s;
        printf("水仙花數有:\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("%d\n",n);
            }
        }
相關文章
相關標籤/搜索