1.for循環(huán)
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{
語句塊
}
表達(dá)式1:表示的是初始化條件;
表達(dá)式2:循環(huán)條件
表達(dá)式3:自增或自減
for循環(huán)中三個表達(dá)式都可以省略,但分號必須保留。
- 示例:計(jì)算1+2+3+...+100
#include
/*
計(jì)算1+2+3+...+100
*/
int main()
{
int i;
int sum=0;
for(i=1;i<=100;i++)
{
printf("i=%dn",i);
sum+=i;//sum=sum+i;
}
printf("sum=%dn",sum);
}
1.1 for循環(huán)嵌套
#include
int main()
{
int i,j;
int cnt=0;
for(i=0;i3;i++)//i=0,1,2
{
for(j=0;j5;j++)//j=0,1,2,3,4
{ //j=0,1,2,3,4
cnt++;
printf("第%d次循環(huán):i=%d,j=%dn",cnt,i,j);
if(j==2)break;/*break跳出當(dāng)前循環(huán)*/
}
}
return 0;
}
[wbyq@wbyq 123]$ gcc main.c
[wbyq@wbyq 123]$ ./a.out
第1次循環(huán):i=0,j=0
第2次循環(huán):i=0,j=1
第3次循環(huán):i=0,j=2
第4次循環(huán):i=1,j=0
第5次循環(huán):i=1,j=1
第6次循環(huán):i=1,j=2
第7次循環(huán):i=2,j=0
第8次循環(huán):i=2,j=1
第9次循環(huán):i=2,j=2
注意:break只能跳出一層循環(huán)
2.while循環(huán)
while(表達(dá)式)
{
語句塊
}
- 示例:2+4+6+8...+100
#include
/*
示例:2+4+6+8...+100
*/
int main()
{
int i=2;
int sum=0;
while(i<=100)
{
sum+=i;
i+=2;
}
printf("sum=%dn",sum);
}
3.do..while循環(huán)
do
{
語句塊
}while(表達(dá)式);
while和do...while區(qū)別:while循環(huán)條件為真才能執(zhí)行里面的語句塊,do...while先執(zhí)行一次語句塊,再判斷條件。
4.循環(huán)控制語句
控制語句 | 描述 |
break語句 | 終止循環(huán)或switch語句,程序?qū)?zhí)行緊接著循環(huán)或switch的下一條語句 |
continue語句 | 立刻停止本輪循環(huán),重新開始下輪循環(huán) |
goto語句 | 將控制跳轉(zhuǎn)到被標(biāo)記的語句。不太建議程序中使用goto語句 |
4.1 break語句
C語言中break語句有以下兩種用法:
①用于循環(huán)語句中,當(dāng)break語句出現(xiàn)在一個循環(huán)內(nèi)時,循環(huán)會立即終止,且程序流將繼續(xù)執(zhí)行緊接著循環(huán)的下一條語句。
②用于switch結(jié)構(gòu)中,它可用于終止switch語句中的一個case。
如果使用的是嵌套循環(huán)(即一個循環(huán)內(nèi)嵌套另一個循環(huán)), break語句會停止執(zhí)行其所在的那層循環(huán),然后開始執(zhí)行該塊之后的下一行代碼。
4.2 continue語句
C語言中的continue語句有點(diǎn)像 break 語句。但它不是強(qiáng)迫終止, continue會結(jié)束當(dāng)前循環(huán)中的代碼,強(qiáng)迫開始下一次循環(huán)。
對于for循環(huán),continue語句執(zhí)行后自增語句仍然會執(zhí)行。
對于while和do...while循環(huán),continue 語句會重新執(zhí)行條件判斷語句。
4.3 goto語句
C語言中的goto語句允許把控制無條件轉(zhuǎn)移到同一函數(shù)內(nèi)的被標(biāo)記的語句。
注意:在任何編程語言中,都不建議使用goto語句。一是因?yàn)樗沟贸绦虻目刂屏麟y以跟蹤,使程序難以理解和難以修改。任何使用goto語句的程序可以改寫成不需要使用goto語句的寫法。二是goto語句容易破壞原本的代碼結(jié)構(gòu)。
C語言中g(shù)oto語句的語法:
Label:
printf("goto語句使用!n");
.....
語句塊;
...
goto Label:
在這里,label可以是任何除C關(guān)鍵字以外的純文本,它可以設(shè)置在C程序中g(shù)oto語句的前面或者后面。
5.練習(xí)
1.求100以內(nèi)自然數(shù)中偶數(shù)之和。
2.輸出200~400以內(nèi)能被3整除且個位數(shù)字為6的整數(shù)。
3.計(jì)算:1*2*3+3*4*5+。。。。 +99*100*101 的值。
4.輸出所有水仙花數(shù)。(水仙花數(shù):一個三位數(shù),它的每個位上的數(shù)字的3次冪只和等于他本身)
5.排列組合問題:一個口袋中放有12個球,已知其中3個是紅色的,3個是白色的,6個是黑色的,現(xiàn)在從中任取8個,問共有多少種可能的顏色搭配。
6.判斷2~100之間所有素?cái)?shù)。(只能被本身整除的數(shù),比如:3 、7、13。
7.輸出2~1000之間的可逆素?cái)?shù)。
8.打印正三角形和倒三角形。
9.輸出9*9乘法表。
10.韓信點(diǎn)兵:相傳韓信才智過人,從不直接清點(diǎn)自己軍隊(duì)的人數(shù),只要讓士兵先后以三人一排、五人一排、七人一排地變換隊(duì)形,而他每次只掠一眼隊(duì)伍的排尾就知道總?cè)?數(shù)了。請輸入3個非負(fù)整數(shù)a,b,c ,表示每種隊(duì)形排尾的人數(shù)(a<3,b<5,c<7),輸出總?cè)藬?shù)的最小值(或報(bào)告無解)。已知總?cè)藬?shù)不小于10,不超過100 。
11.有一個4位數(shù),它的9倍數(shù)恰好是其反序數(shù),求該數(shù)。(反序數(shù)就是將其倒過來形參的整數(shù),例1234的反序數(shù)就是4321。)
12.求一個三位數(shù),該三位數(shù)等于其每個位數(shù)字的階乘之和。
13.輸出1000以內(nèi)所有的完全數(shù)。(完全數(shù):一個數(shù)恰好等于它的因子之和。如6的因子為1 2 3,而1+2+3=6)
14.輸出具有abcd=(ab+cd)2性質(zhì)的四位數(shù)。
15.將100元換成1元、5元、10元有多少種換法?
16.百元買白雞問題:100塊錢買100只雞,公雞5塊1只、母雞3塊1只,小雞3只1塊,輸出所有的買法。
17.有一個數(shù)列:1、1、2、3 、5 、8...
通過輸入下標(biāo),輸出對應(yīng)的值,下標(biāo)從1開始。例如輸入3,輸出2;輸入5,輸出5;
18.愛因斯坦出了一道這樣的數(shù)學(xué)題:有一條長階梯,若每步跨⒉階,則最后剩1階,若每步跨3階﹐則最后剩⒉階,若每步跨5階,則最后剩4階,若每步跨6階則最后剩5階。只有每次跨7階,最后才正好一階不剩。請問,這條階梯共有多少階?
19.一輛卡車違反交通規(guī)則,撞人后逃跑?,F(xiàn)場有三人目擊事件,但都沒有記住車號,只記下車號的一些特征(假設(shè)僅為數(shù)字)。
甲說:牌照的前兩位數(shù)字是相同的;
乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同;
丙是位數(shù)學(xué)家,他說:四位的車號剛好是一個整數(shù)的平方。請根據(jù)以上線索求出車號。
20.如果一個數(shù)恰好等于它的因子之和,則稱該數(shù)為“完全數(shù)”。如:6的因子是1、2、3,而6=1+2+3,則6是個“完全數(shù)”。試求出1000以內(nèi)的全部“完全數(shù)”。
21.誰在說謊問題:張三說李四在說謊,李四說王五在說謊,王五說張三和李四都在說謊。現(xiàn)在問:這三人中到底誰說的是真話,誰說的是假話?
審核編輯:湯梓紅
-
C語言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137398 -
關(guān)鍵字
+關(guān)注
關(guān)注
0文章
37瀏覽量
6917 -
循環(huán)語句
+關(guān)注
關(guān)注
0文章
10瀏覽量
4900
發(fā)布評論請先 登錄
相關(guān)推薦
評論