⑴ c語言函數與循環
1.for語句的一般格式
for([變數賦初值];[循環繼續條件];[循環變數增值])
{ 循環體語句組;}
2.for語句的執行過程
執行過程如圖5-1所示。
(1)求解「變數賦初值」表達式。
(2)求解「循環繼續條件」表達式。如果其值非0,執行(3);否則,轉至(4)。
(3)執行循環體語句組,並求解「循環變數增值」表達式,然後轉向(2)。
(4)執行for語句的下一條語句。
3.說明
(1)「變數賦初值」、「循環繼續條件」和「循環變數增值」部分均可預設,甚至全部預設,但其間的分號不能省略。
(2)當循環體語句組僅由一條語句構成時,可以不使用復合語句形式,如上例所示。
(3)「循環變數賦初值」表達式,既可以是給循環變數賦初值的賦值表達式,也可以是與此無關的其它表達式(如逗號表達式)。
例如,for(sum=0;i<=100;i++) sum += i;
for(sum=0,i=1;i<=100;i++) sum += i;
(4)「循環繼續條件」部分是一個邏輯量,除一般的關系(或邏輯)表達式外,也允許是數值(或字元)表達式。
⑵ C語言三種循環結構的完整句子
for語句循環
1 for語句一般形式中的各表達式可以省略,但是分號間隔符不能少。需要注意省略表達式1之前要給循環變數賦初值。
2 如省略去表達式2或者3則將造成無限循環,這是應在循環體內設法結束循環
main(){
int a=0,n=4;
for(;;)(
a++,n--;
print("%d",a*2);
if(n==0) break;)
}
上面例子中 for語句的表達式完全省去,由循環體中的語句實現循環變數的遞減和循環條件的判斷。當n的值為0時,由break 語句終止循環,轉去執行for語句以後的程序。
在此情況下,for語句以等價於while(1)語句,如果在循環體中沒有相應的控制手段,將造成死循環
二 while 語句循環
1while語句中的表達式一般是關系表達式或者是邏輯表達式,只要表達式的值為真(非0)即可繼續循環
2 循環體中如果包括一個以上的語句 則必須用{}括起來,組成符合語句
3 應注意循環條件的選擇 以避免死循環
4 允許while語句的循環體又是while語句,從而形成雙循環。
三 do-while語句
1 do-while語句和while語句的區別在於 do-while語句是先執行後判斷,因此 do-while至少要執行一次循環體,而while是先判斷後執行,如果條件不滿足,則一次循環體語句也不執行。while語句和 do-while語句一般可以相互改寫。
2 在if語句和while語句中,表達式後面不能加分號,而在 do-while語句的表達式後面必須加分號。
3 do-while語句也可以組成多重循環,而且可以和while語句相互嵌套。在do和while之間的循環體由多個語句組成是,也必須用{}括起來形成一個復合語句
⑶ 將一個整數分解成幾個連續整數的和C語言做法
#include
<stdio.h>
int
main(void)
{
int
n;
scanf("%d",
&n);//
輸入
printf("\n\n%d=\n",
n);
for(int
n1=1;
n1<=n/2;
n1++)//
n1為等差數列第一項
{
for(int
n2=n1+1;
n2<n;
n2++)//
n2為等差數列最後一項
{
if((n1+n2)*(n2-n1+1)
==
n*2)//
用等差數列公式算和
{
//如果相等就輸出結果
for(int
t=n1;
t<n2;
t++)
{
printf("%d+",
t);
}
printf("%d\n",
t);
}
}
}
return
0;
}
vc6下編譯通過。
⑷ C語言循環語句問題
不對 '10'不對的
『1』 = 0x31
'10' != 0x3a
這樣可以
for(m='0'+1;m!='9'+1;m++)
⑸ C語言 通過循環解決任意位整數的拆解
將整個函數嵌在一個無限循環語句里。\r\n如。加上\r\nwhile(1)\r\n{\r\nif (C=1)\r\nstatement1;\r\nelse if (C=2)\r\nstatement2;\r\nelse if (C=3)\r\nstatement3;\r\nelse\r\nstatement4;\r\n}\r\n只是你自己要再根據你自身情況判斷退出循環的條件。
⑹ C語言的三種循環結構為
1、while循環
while語句的一般形式為:while(表達式)語句。其中表達式是循環條件,語句為循環體。
while語句中的表達式一般是關系表達或邏輯表達式,只要表達式的值為真(非0)即可繼續循環。
2、do-while語句的一般形式為:
do
語句
while(表達式);
這個循環與while循環的不同在於:它先執行循環中的語句,然後再判斷表達式是否為真,
如果為真則繼續循環;如果為假,
則終止循環。因此,
do-while循環至少要執行一次循環語句。
3、在C語言中,for語句使用最為靈活,它完全可以取代
while
語句。它的一般形式為:
for(表達式1;表達式2;表達式3)
語句
它的執行過程如下:
1)
先求解表達式1。
2)
求解表達式2,若其值為真(非0),則執行for語句中指定的內嵌語句,然後執行下
面第3)步;若其值為假(0),則結束循環,轉到第5)步。
3)
求解表達式3。
4)
轉回上面第2)步繼續執行。
5)
循環結束,執行for語句下面的一個語句。
注意:
1)
for循環中的「表達式1(循環變數賦初值)」、「表達式2(循環條件)」和「表達式3(循環變數增量)」都是選擇項,
即可以預設,但「;」不能預設。
2)
省略了「表達式1(循環變數賦初值)」,
表示不對循環控制變數賦初值。
3)
省略了「表達式2(循環條件)」,
則不做其它處理時便成為死循環。
4、幾種循環的比較
1)
循環都可以用來處理同一個問題,一般可以互相代替。
2)
while和do-while循環,循環體中應包括使循環趨於結束的語句。for語句功能最強。
3)
用while和do-while循環時,循環變數初始化的操作應在while和do-while語句之前完成,而for語句可以在表達式1中實現循環變數的初始化。
⑺ c語言遞歸和循環的區別
遞歸是函數體中調用自己,如果不加控制,將無休止的調用自己,直到堆棧溢出。循環是反復執行某一段區域內的代碼,如果不加控制,就會形成死循環。所以不管是遞歸還是循環,都要設定一定的條件,以結束遞歸或循環。實際問題中,有一些問題是遞歸的,這樣的問題使用遞歸程序解決感覺會自然些,程序也會簡單些,但是,遞歸要經常調用函數,開銷(內存、時間)大,有些問題就不適宜使用,循環不需要調用自身,甚至可以不調用函數,效率高,不過,要將遞歸問題改成非遞歸,可能就要動動腦筋。上例中pow2 函數實現部分指數計算功能,(b, n-1) =3 這個提法有問題,因為遞歸調用時,在返回之前系統堆棧上有一大堆(從第一次調用知道條件滿足時的次數)的該遞歸函數,條件滿足後這一系列的函數依次返回。上述函數運行過程是這樣的: 執行主函數的 pow2(3, 2); 後:1: b = 3 n = 2 此時 n > 0; pow2 調用自身(即遞歸調用): pow2(b, n-1) * b 後:2: b = 3 n = 1 此時 n > 0; pow2 調用自身(即遞歸調用): pow2(b, n-1) * b 後:3: b = 3 n = 0 此時 n = 0, if (n <= 0) 條件滿足 1; 遞歸函數第一次(函數最後依次遞歸調用)返回,值為 14: 上一次 pow2(b, n-1) 返回值為 1,return pow2(b, n-1) * b; 所以本次(第2次)返回 35: 上一次 pow2(b, n-1) 返回值為 3,return pow2(b, n-1) * b; 所以本次(第1次)返回 96: 函數main得到 pow2 的返回值 9
⑻ c語言中怎樣把兩個循環合並成為一個循環
把具體場景發一下吧,比如遍歷一個二維數組(一般都用兩重循環),其實當做一個一維數組去遍歷就好了。
又或者是把兩個不相關的循環合二為一就更沒什麼難度了,所以,具體場景是什麼很重要的。
⑼ c語言 這兩個for循環是嵌套的還是分開的,怎麼區別
這兩個for循環時分開的,一般嵌套循環縮進格數不同,而這兩個for縮進格數相同,所以是分開的。一般寫嵌套循環時,要畫花括弧{},這樣比較好分辨外循環和內循環。
⑽ 以for循環為例概述C語言循環結構的基本組成要素
1 for循環的基本格式為
for(expr1; expr2; expr3)
{
//loop body
}
2 各部分說明:
expr1: 在進入循環前執行,一般是 初始化一類的操作;
expr2: 每次循環前執行,為一個邏輯表達式,判斷是否執行循環。如表達式為假,則退出循環;
expr3:每次循環後執行,一般是自變數的修改;
loop body: 循環體,執行循環內容。
3 基本組成要素:
a) 循環的退出條件,在for中,是expr2;
b) 循環的自變數修改,一般與退出條件相關,在for中,是expr3;
c) 循環實際執行的操作,即循環體,loop body部分。