一、while回圈
我們已經掌握了if陳述句
if(條件)
陳述句;
當條件滿足的情況下,if陳述句后的陳述句執行,否則不執行,但這個陳述句只會執行一次,當我們需要讓同一件事執行多次時,我們就可可以使用while陳述句實作回圈,
1.語法結構
while(運算式)
回圈陳述句;
2. 應用
1) 在螢屏上列印1-10
int main()
{
int i = 1;
while(i <= 10)
{
printf("%d\n",i);
i++;
}
return 0;
}
2)while回圈中break的使用
只要在回圈中執行break,則立即跳出整個回圈,
int main()
{
int i = 1;
while(i <= 10)
{
if(5 == i)
break; //當i=5時,回圈結束
printf("%d\n",i);
i++;
}
return 0; //輸出1,2,3,4
}
3) while中continue的作用
跳過本次回圈后面的代碼,回到while的判斷部分
int main()
{
int i = 1;
while(i <= 10)
{
if(5 == i)
continue; //當i=5時,不執行printf和i++陳述句,回到while,判斷5是不是小于10
printf("%d\n",i);
i++;
}
return 0; //輸出1,2,3,4,因為5始終小于10,后面是死回圈
}
4) 例一:
getchar--輸入一個字符
putchar--輸出一個字符
它們只針對字符的輸入、輸出,并且一次只能輸入、輸出一個字符
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF) //實作輸入多個字符
{
putchar();
}
return 0; //例:輸入abc,輸出abc
}
利用while陳述句清理緩沖區
int main()
{
char input[20] = {0};
printf("請輸入密碼:>");
scanf("%s", input); //abcdef
int tmp = 0;
while ((tmp = getchar()) != '\n') //清理緩沖區
{
;//空陳述句
}
printf("請確認密碼(Y/N):>");
int ch = getchar();
if (ch == 'Y')
{
printf("確認成功\n");
}
else
{
printf("確認失敗\n");
}
return 0;
}
例二:
利用while陳述句,當且僅當輸入數字時列印
int main()
{
int ch = 0;
while ((ch = putchar()) != EOF)
{
if(ch < '0' || ch > 9)
continue;
putchar();
}
return 0; //輸入a,程式沒有反應;輸入3,螢屏上列印3
}
二、for回圈
1.語法
for(運算式1;運算式2;運算式3)
回圈陳述句;
運算式1為初始化部分,用于初始化回圈變數
運算式2為條件判斷部分,用于判斷回圈時候終止
運算式3為調整部分,用于回圈條件的調整
2.應用
1)列印1-10數字
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
printf("%d ", i);
return 0;
}
2)for回圈中break的使用
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (5 == i)
{
break;
}
printf("%d ", i);
}
return 0; //螢屏上列印1 2 3 4
}
3)for回圈中continue的使用
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (5 == i)
{
continue ;
}
printf("%d\n", i);
}
return 0; //不會和while回圈陳述句一樣陷入死回圈,因為在判斷部分有i++,所以結果為1234678910不會列印5
}
for的初始化,判斷,調整三個部分都可以省略,中間的判斷部分如果省略,意味著判斷恒為真,就構成了死回圈,
4)for回圈的嵌套
int main()
{
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("hehe\n");
}
}
return 0; //列印9個hehe
}
三、do.....while回圈
1.語法
do
回圈陳述句;
while(運算式);
2.應用
1)用do...while列印1-10
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
2)do..while回圈中的break
int main()
{
int i = 1;
do
{
if (5 == i)
break;
printf("%d ", i);
i++;
} while (i <= 10);
return 0; //列印 1 2 3 4
}
3)do...while中的continue
int main()
{
int i = 1;
do
{
if (5 == i)
continue;
printf("%d ", i);
i++;
} while (i <= 10);
return 0; //列印1 2 3 4,并且陷入死回圈
}
四、練習
1.計算n的階乘
#include <stdio.h>
#include <string.h>
int main()
{
int n = 0;
scanf("%d\n", &n);
int i = 0;
int ret = 1;
for (i = 1; i <= n; i++)
{
ret = ret * i;
}
printf("%d\n", ret);
return 0;
}
2.計算1!+2!+...+10!
int main()
{
int n = 0;
int i = 0;
int sum = 0;
int ret = 1;
for (n = 1; n <= 10; n++)
{
ret = 1;
for (i = 1; i <= n; i++)
{
ret = ret * i;
}
sum = sum + ret;
}
printf("%d\n", sum);
return 0;
}
這個代碼可以進行優化如下:
int main()
{
int n = 0;
int sum = 0;
int ret = 1;
for (n = 1; n <= 10; n++)
{
ret = ret * n;
sum = sum + ret;
}
printf("%d\n", sum);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/344301.html
標籤:其他
