C語言 筆記03
本章涉及《啊哈C》第三章晨缴、第四章
名稱 | 作用 | 名稱 | 作用 |
---|---|---|---|
+ | 加 | >= | 大于等于 |
- | 減 | <= | 小于等于 |
* | 乘 | != | 不等于 |
/ | 除 | && | 與 |
> | 大于 | (看注釋) | 或 |
< | 小于 | ! | 非 |
== | 等于 |
1.運(yùn)算符總結(jié)
名稱 | 作用 | 名稱 | 作用 |
---|---|---|---|
+ | 加 | >= | 大于等于 |
- | 減 | <= | 小于等于 |
* | 乘 | != | 不等于 |
/ | 除 | && | 與 |
> | 大于 | (看注釋) | 或 |
< | 小于 | ! | 非 |
== | 等于 |
其中“或”的符號(hào)是“||”。
2.1>2究竟對(duì)不對(duì)
3.討厭的嵌套
書本中的部分內(nèi)容這里不提了峡捡,就是關(guān)于縮進(jìn)嵌套的內(nèi)容击碗,主需要注意下面2個(gè)問題即可。
4.永不停止的while
怎么讓計(jì)算機(jī)輸出1000個(gè)“Hello World”们拙,寫1000個(gè)print嗎稍途?太笨了吧!
這里我們介紹while睛竣,代碼如下:
while(1>0)
{
printf("Hello World");
}
這樣電腦就能無限打印"Hello World"
5.我說幾遍就幾遍
int a;
a = 1;
while(a<=100)
{
printf("Hello World");
a = a + 1;
}
這樣就會(huì)打印100個(gè)“Hello World”晰房。
6.if 對(duì) while 說:我對(duì)你很重要
7.求和求摇、求和
8.邏輯挑戰(zhàn)4:60秒倒計(jì)時(shí)開始
我們要設(shè)計(jì)一個(gè)60秒倒計(jì)時(shí)射沟,先設(shè)計(jì)一個(gè)3秒倒計(jì)時(shí)。
9.這個(gè)有點(diǎn)暈——循環(huán)嵌套來了
現(xiàn)在我們想嘗試打印出下面圖形:
*****
*****
*****
改怎么辦呢与境?
法一:
printf("*****\n");
printf("*****\n");
printf("*****\n");
上面的寫法當(dāng)然可以验夯,但是如果我們要輸出100行甚至更多的情況下,則不適合了摔刁。所以我們利用while循環(huán)改進(jìn):
法二:while + if
int a;
a=1;
while(a<=15)
{
printf("*");
if (a%5 == 0)
printf("\n");
a = a+1;
}
這段代碼就是循環(huán)打印 星號(hào) 15次(涉及while語句)挥转,并且當(dāng)打印到第5 10 15 個(gè)時(shí)就換行(涉及if語句)。
當(dāng)然還有別的辦法:循環(huán)嵌套
法三:while循環(huán)嵌套(while + while)
首先用一個(gè)外循環(huán)循環(huán)a解決換行的問題:
int a;
a=1;
while (a<=3)
{
printf("\n");
a=a+1;
}
然后再用一個(gè)內(nèi)循環(huán)循環(huán)b解決星號(hào)問題:
int a,b;
a=1;
while (a<=3) // 控制換行
{
b=1;
while (b<=5) //控制每行5個(gè)星號(hào)
{
printf("*")
b=b+1;
}
printf("\n");
a=a+1;
}
外循環(huán)每循環(huán)一次共屈,內(nèi)循環(huán)就會(huì)從頭到尾循環(huán)一遍绑谣。
現(xiàn)在,如果我們想要輸出下面的圖形怎么辦:
*
**
***
****
*****
我們同樣可以用嵌套的方法:
外嵌套a實(shí)現(xiàn)換行:
int a;
a = 1;
while (a<=5)
{
printf("\n");
a=a+1
}
內(nèi)嵌套b實(shí)現(xiàn)打印星號(hào):把b<=5改成b<=a即可拗引。
int a,b;
a = 1;
while (a<=5)
{
b = 1;
while (b <= a)
{
printf("*");
b = b+1;
}
printf("\n");
a=a+1;
}
10.邏輯挑戰(zhàn)5:奔跑的字母
顯然借宵,除了printf中的內(nèi)容不容,三個(gè)部分的內(nèi)容都一樣矾削,所以可以考慮使用while嵌套循環(huán):
打印順序?yàn)椋?/h3>
- 打印“H”壤玫;
- 打印“空格”+“H”豁护;
- 打印“空格”+“空格”+“H”。
顯然欲间,不管加不加“空格”楚里,3次“H”是肯定會(huì)打印的,所以我們用外循環(huán)a實(shí)現(xiàn)打印3次H:
int a ;
a = 1;
while (a<=3)
{
system("cls"); // 清屏
printf("H");
Sleep(1000); // 使 H 暫停一秒
a = a+1;
}
再用循環(huán)b實(shí)現(xiàn)打印第n次時(shí)猎贴,就在打印“H”前先打印(n-1)個(gè)“空格”:
int a,b ;
a = 1;
while (a<=3)
{
system("cls"); // 清屏
b = 1;
while (a>b)
{
printf(" ");
b = b+1;
}
printf("H");
Sleep(1000); // 使 H 暫停一秒
a = a+1;
}
效果:
11.究竟循環(huán)了多少次
12.邏輯挑戰(zhàn)6:奔跑的小人
如果我們將要第10節(jié)內(nèi)容中的“H”換成一個(gè)行走的小人:
O
<H>
I I
怎么辦呢班缎?
我們首先會(huì)把
printf("H")
替換成:
printf(" O\n");
printf("<H>\n");
printf("I I\n");
效果如下:
顯然,只有腦袋在移動(dòng)嘱能!沒有達(dá)到我們的目的吝梅。
為什么呢?因?yàn)槲覀兗拥哪切┛崭裰患釉诹?" O\n"前面惹骂,所以要想整體移動(dòng)苏携,還得在其余部分也加上空格代碼:
13.for隆重登場(chǎng)
回顧之前我們用while語句來輸出1到10:
int a ;
a = 1;
while (a<=10)
{
printf("%d",a);
a = a+1;
}
這個(gè)while循環(huán)由三個(gè)部分組成:
- 設(shè)置初始值 a = 1;
- 設(shè)置循環(huán)條件 a<=10;
- a每次增加1 a = a+1;
其中第1和第3是我們?nèi)菀走z漏的部分,如果我們不小心遺漏的話這個(gè)while循環(huán)就運(yùn)行不了了对粪。
為了規(guī)避這種情況右冻,我們就可以使用for循環(huán):
int a;
for(a=1;a<=10;a=++) // a = a+1 可寫成 a = a++
{
printf("%d",a);
}
我們可以把while循環(huán)的三個(gè)部分都放進(jìn)for循環(huán)的括號(hào)中!是不是很方便著拭!
注意:for循環(huán)括號(hào)中只有2個(gè)分號(hào)纱扭,最后一個(gè)部分后面不用加。
用for循環(huán)輸出1~100中能所有7的倍數(shù)或者末尾含7的數(shù)儡遮,代碼如下:
int a;
for(a=1;a<=100;a=a++)
{
if(a%7==0 || a%10==7)
printf("%d",a);
}
是不是很簡(jiǎn)便乳蛾?那么是不是for循環(huán)就一定比while循環(huán)好呢?
不是的鄙币,其實(shí)在控制已知循環(huán)次數(shù)時(shí)肃叶,比如100次1000次,for循環(huán)確實(shí)比while循環(huán)好用十嘿。
但是因惭,并不是任何情況下for循環(huán)都要優(yōu)于while循環(huán),隨著慢慢深入绩衷,你會(huì)了解什么時(shí)候用while蹦魔,什么時(shí)候用for。