內容導讀
- 1.C語言的選擇——選擇分支結構
- 1.0分支結構概述
- 1.1if分支陳述句
- 1.1.1if...結構
- 1.1.2if...else...結構
- 1.1.3if...else if...else...結構
- 1.1.4分支結構的嵌套
- 1.2switch分支陳述句
- 1.3運算式
- 1.3.1關系運算子和關系運算式
- 1.3.2邏輯運算子和邏輯運算式
- 1.3.3條件運算子和條件運算式
- 2.C語言的輪回——回圈結構
- 2.0回圈結構概述
- 2.1while回圈
- 2.2do...while回圈
- 2.3for回圈
- 2.4三種回圈陳述句的比較
- 2.5改變回圈執行的狀態(break和continue)
- 2.5.1break
- 2.5.2continue
- 2.6go ... to陳述句
- 3.程式實體
- 3.1二分查找
- 3.2猜數字游戲
作者水平很有限,如果發現錯誤,一定要及時告知作者哦!感謝感謝!
1.C語言的選擇——選擇分支結構
1.0分支結構概述

如上圖所示,這就是一個分支結構,也叫選擇結構,
在C語言有兩種選擇陳述句
- if陳述句,用來實作兩個或多個分支的選擇結構
- switch陳述句,用來實作多分支的選擇結構
1.1if分支陳述句
1.1.1if…結構

語法結構
if (運算式)
{
陳述句;
}
#include <stdio.h>
//如果年齡大于或等于18歲,就表示成年了,
int main()
{
int age = 18;//年齡
if (age >= 18)
{
printf("成年啦!\n");
}
return 0;
}
1.1.2if…else…結構

語法結構
if (運算式)
{
陳述句1;
}
else
{
陳述句2;
}
#include <stdio.h>
//如果年齡大于或等于18歲,就表示成年了,否則未成年,
int main()
{
int age = 18;
if (age >= 18)
{
printf("雖然成年啦,但是我還不想長大!\n");
}
else
{
printf("我要快快長大!\n");
}
return 0;
}
1.1.3if…else if…else…結構

語法結構
if (運算式1)
{
陳述句1;
}
else if (運算式2)
{
陳述句2;
}
...
//else if數量無限制,最后的else可以用也可以不用
else
{
陳述句n;
}
#include <stdio.h>
//如果年齡0-12 童真
//13-22青春
//23-32 活力
//33-42 穩重
//43-52 成熟
//53+ 老當益壯
int main()
{
int age = 18;
if (age <= 12)
{
printf("童真\n");
}
else if (age >= 13 && age <=22)
{
printf("青春\n");
}
else if (age >= 23 && age <= 32)
{
printf("活力\n");
}
else if (age >= 33 && age <= 42)
{
printf("穩重\n");
}
else if (age >= 43 && age <=52)
{
printf("成熟\n");
}
else
{
printf("老當益壯\n");
}
return 0;
}
1.1.4分支結構的嵌套

使用嵌套結構需要注意if與else的配對關系,
else總是與它上面的最近的未配對的if配對,
比如,下面這個結構

編程式者把else寫在與第1個if(外層if)同一列上,意圖是使else與第1個if對應,但實際上else是與第2個if配對,因為它們相距最近,
所以我們在撰寫代碼時,要將代碼寫規范,不要寫成這個樣子,容易出錯,
如果if與else的數目不一樣,為實作程式設計者的思想,可以加花括號來確定配對關系,

1.2switch分支陳述句
【引子】要求按照考試成績的等級輸出百分制分數段,A等為85分以上,B等為70~84分,C等為60~69分,D等為 60分以下,成績的等級由鍵盤輸入,
#include <stdio.h>
int main()
{
char grade;
scanf("%c",&grade);
printf("Your score:");
switch(grade)
{
case 'A': printf("85~100\n");break;
case 'B': printf("70~84\n");break;
case 'C': printf("60~69\n");break;
case 'D': printf("<60\n");break;
default: printf("enter data error!\n");
}
return 0;
}

等級grade定義為字符變數,從鍵盤輸入一個大寫字母,賦給變數grade,switch得到grade的值并把它和各case中給定的值(′A′,′B′,′C′,′D′之一)相比較,如果和其中之一相同(稱為匹配),則執行該case后面的陳述句(即printf陳述句),
如果輸入的字符與′A′,′B′,′C′,′D′都不相同,就執行default后面的陳述句,
注意在每個case后面后的陳述句中,最后都有一個break陳述句,它的作用是使流程轉到switch陳述句的末尾(即右花括號處),
再比如,輸入1-5輸出的是“weekday”;輸入6-7輸出“weekend”
#include <stdio.h>
//switch輸入1-5輸出的是“weekday”;輸入6-7輸出“weekend”
int main()
{
int day = 0;
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
switch(運算式)
{
case 常量1 : 陳述句1
case 常量2 : 陳述句2
? ? ?
case 常量n : 陳述句n
default : 陳述句n+1
}
(1) 括號內的“運算式”,其值的型別應為整數型別(包括字符型),
(2) 花括號內是一個復合陳述句,內包含多個以關鍵字case開頭的陳述句行和最多一個以default開頭的行,case后面跟一個常量(或常量運算式),它們和default都是起標號作用,用來標志一個位置,執行switch陳述句時,先計算switch后面的“運算式”的值,然后將它與各case標號比較,如果與某一個case標號中的常量相同,流程就轉到此case標號后面的陳述句,如果沒有與switch運算式相匹配的case常量,流程轉去執行default標號后面的陳述句,
(3) 可以沒有default標號,此時如果沒有與switch運算式相匹配的case常量,則不執行任何陳述句,
(4) 各個case標號出現次序不影響執行結果,
(5) 每一個case常量必須互不相同;否則就會出現互相矛盾的現象,
(6) case標號只起標記的作用,在執行switch陳述句時,根據switch運算式的值找到匹配的入口標號,在執行完一個case標號后面的陳述句后,就從此標號開始執行下去,不再進行判斷,因此,一般情況下,在執行一個case子句后,應當用break陳述句使流程跳出switch結構,最后一個case子句(今為default子句)中可不加break陳述句,
(7) 在case子句中雖然包含了一個以上執行陳述句,但可以不必用花括號括起來,會自動順序執行本case標號后面所有的陳述句,當然加上花括號也可以,
(8) 多個case標號可以共用一組執行陳述句,
好習慣:
1.在最后一個 case 陳述句的后面加上一條 break陳述句,(之所以這么寫是可以避免出現在以前的最后一個 case 陳述句后面忘了添加 break陳述句),
2.在每個 switch 陳述句中都放一條default子句是個好習慣,甚至可以在后邊再加一個 break ,
1.3運算式
在上面的分支陳述句中,都牽涉到了運算式,在上述結構中,運算式的作用是判斷,如果運算式為真,則執行后面對應的陳述句,否則跳過其陳述句,
在c語言中0表示假,非0表示真,
這里的“運算式”可以是關系運算式、邏輯運算式,甚至是數值運算式,
現在就讓我們深入運算式在分支結構和回圈中的作用以及一些細節問題,
1.3.1關系運算子和關系運算式
在C語言中,比較符(或稱比較運算子)稱為關系運算子,所謂“關系運算”就是“比較運算”,將兩個數值進行比較,判斷其比較的結果是否符合給定的條件,

前4種關系運算子的優先級別相同,后2種也相同,前4種高于后2種,
關系運算子的優先級低于算術運算子,
關系運算子的優先級高于賦值運算子,

用關系運算子將兩個數值或數值運算式連接起來的式子,稱為關系運算式,
關系運算式的值是一個邏輯值,即“真”或“假”,
在C的邏輯運算中,以“1”代表“真”,以“0”代表“假”,

1.3.2邏輯運算子和邏輯運算式
用邏輯運算子將關系運算式或其他邏輯量連接起來的式子就是邏輯運算式,

1. “&&”和“‖”是雙目運算子,要求有兩個運算物件(運算元); “!”是單目運算子,只要有一個運算物件,
2. 優先次序:!(非)→&&(與)→‖(或), 即“!”為三者中最高的; 邏輯運算子中的“&&”和“‖”低于關系運算子,“!”高于算術運算子,
3. 邏輯運算結果不是0就是1,不可能是其他數值,而在邏輯運算式中作為參加邏輯運算的運算物件可以是0(“假”)或任何非0的數值(按“真”對待),
在邏輯運算式的求解中,并不是所有的邏輯運算子都被執行,只是在必須執行下一個邏輯運算子才能求出運算式的解時,才執行該運算子,

既然關系運算式和邏輯運算式的值是0和1,而且在判斷一個量是否為“真”時,以0代表“假”,以非0代表“真”,那么就可以理解為什么在if陳述句中運算式可以是任何數值運算式,

比如閏年的判斷
判別用year表示的某一年是否閏年,可以用一個邏輯運算式來表示,閏年的條件是符合下面二者之一: ①能被4整除,但不能被100整除,如2020,②能被400整除,如2000,
#include <stdio.h>
int main()
{
int year = 0;
printf("在1900-2048年之間是閏年的年份有:\n");
for (year = 1900; year <= 2048; year++)
{
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
{
printf("%d ",year);
}
}
return 0;
}

1.3.3條件運算子和條件運算式

比如下面這一個判斷陳述句
if (a>b)
max=a;
else
max=b;
也可以寫成
max=(a>b) ? a : b;
//或
a>b ? (max=a) : (max=b); //運算式2和運算式3是賦值運算式
框圖

條件運算子由兩個符號(?和:)組成,必須一起使用,要求有3個操作物件,稱為三目(元)運算子,它是C語言中唯一的一個三目運算子,
條件運算子的執行順序: 先求解運算式1,若為非0(真)則求解運算式2,此時運算式2的值就作為整個條件運算式的值,若運算式1的值為0(假),則求解運算式3,運算式3的值就是整個條件運算式的值,
例如,輸入一個字符,判別它是否為大寫字母,如果是,將它轉換成小寫字母;如果不是,不轉換,然后輸出最后得到的字符,
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char ch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
printf("%c\n",ch);
return 0;
}

條件運算式“(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch”的作用是: 如果字符變數ch的值為大寫字母,則條件運算式的值為(ch+32),即相應的小寫字母,32是小寫字母和大寫字母ASCII的差值,如果ch的值不是大寫字母,則條件運算式的值為ch,即不進行轉換,
2.C語言的輪回——回圈結構
2.0回圈結構概述
為什么要使用回圈結構?
當你要輸入100個或者以上學生的成績時,你會意識到非常麻煩,如果不使用回圈這就意味著你要寫100輸入函式進行成績的錄入,好吧,如果你覺得還不夠麻煩,那10000,1000000個學生成績錄入呢?可想而知,根本是不可能完成的任務,
回圈結構分為三類,while回圈,do…while回圈,for回圈,
有了回圈結構,無論是百萬個資料還是千萬個資料的錄入都是非常輕松的,
2.1while回圈

while(運算式)
{
陳述句;
}
while陳述句可簡單地記為: 只要當回圈條件運算式為真(即給定的條件成立),就執行回圈體陳述句,
“陳述句”就是回圈體,回圈體可以是一個簡單的陳述句,可以是復合陳述句(用花括號括起來的若干陳述句),
執行回圈體的次數是由回圈條件控制的,這個回圈條件就是上面一般形式中的“運算式”,它也稱為回圈條件運算式,當此運算式的值為“真” (以非0值表示)時,就執行回圈體陳述句;為“假” (以0表示)時,就不執行回圈體陳述句,
while回圈的特點是先判斷條件運算式,后執行回圈體陳述句,
比如,計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,列印出結果
int main()
{
double a = 1.0;
double sum = 0.0;
int i = 1;
for (i = 1; i <= 100; i++)
{
sum += a / i;
a = -a;
}
printf("%lf", sum);
return 0;
}

計算1+2+3+…+100的值,
#include<stdio.h>
int main()
{
int i=1,sum=0; //定義變數i的初值為1,sum的初值為0
while(i<=100) //當i>100,條件運算式i<=100的值為假,不執行回圈體
{ //回圈體開始
sum=sum+i; //第1次累加后,sum的值為1
i++; //加完后,i的值加1,為下次累加做準備
} //回圈體結束
printf("sum=%d\n",sum); //輸出1+2+3…+100的累加和
return 0;
}

我們以第二個問題為例,介紹while回圈的相關細節問題,
程式執行的框圖

(1) 回圈體如果包含一個以上的陳述句,應該用花括號括起來,作為復合陳述句出現,
(2) 不要忽略給i和sum賦初值,否則它們的值是不可預測的,結果顯然不正確,
(3) 在回圈體中應有使回圈趨向于結束的陳述句,如本例中的“i++;”陳述句,如果無此陳述句,則i的值始終不改變,回圈永遠不結束,
2.2do…while回圈

do
{
陳述句;
}
while(運算式)
do…while陳述句與while陳述句非常相似,僅僅只有一個不同點,
那就是do…while陳述句先無條件地執行回圈體,然后判斷回圈條件是否成立,
就是說,無論運算式為真還是假,回圈體內的陳述句至少會回圈一次,
同理,計算1+2+3+…+100的值,
#include <stdio.h>
int main()
{
int i=1,sum=0;
do
{
sum=sum+i;
i++;
}while(i<=100);
printf("sum=%d\n",sum);
return 0;
}


在一般情況下,用while陳述句和用do…while陳述句處理同一問題時,若二者的回圈體部分是一樣的,那么結果也一樣,
但是如果while后面的運算式一開始就為假(0值)時,兩種回圈的結果是不同的,
2.3for回圈

for(運算式1;運算式2;運算式3)
{
陳述句;
}
相當于
運算式1;
while (運算式2)
{
陳述句;
運算式3;
}
for陳述句更為靈活,不僅可以用于回圈次數已經確定的情況,還可以用于回圈次數不確定而只給出回圈結束條件的情況,它完全可以代替while陳述句,
運算式1: 設定初始條件,只執行一次,可以為零個、一個或多個變數設定初值,
運算式2: 是回圈條件運算式,用來判定是否繼續回圈,在每次執行回圈體前先執行此運算式,決定是否繼續執行回圈,
運算式3: 作為回圈的調整,例如使回圈變數增值,它是在執行完回圈體后才進行的,
for陳述句的執行程序如下:
(1) 求解運算式1,
(2) 求解運算式2,若此條件運算式的值為真(非0),則執行for陳述句中的回圈體,然后執行第(3)步,若為假(0),則結束回圈,轉到第(5)步,
(3) 求解運算式3,
(4) 轉回步驟(2)繼續執行,
注意: 在執行完回圈體后,回圈變數的值“超過”回圈終值,回圈結束,
(5) 回圈結束,執行for陳述句下面的一個陳述句,
關于for回圈的運算式
“運算式1”可以省略,即不設定初值,但運算式1后的分號不能省略,例如: for(;i<=100;i++),應當注意: 由于省略了運算式1,沒有對回圈變數賦初值,因此,為了能正常執行回圈,應在for陳述句之前給回圈變數賦以初值,
運算式2也可以省略,即不用運算式2來作為回圈條件運算式,不設定和檢查回圈的條件,此時回圈無終止地進行下去,也就是認為運算式2始終為真,
運算式3也可以省略,但此時程式設計者應另外設法保證回圈能正常結束,
甚至可以將3個運算式都可省略,即不設初值,不判斷條件(認為運算式2為真值),回圈變數也不增值,無終止地執行回圈體陳述句,顯然這是沒有實用價值的,
運算式1可以是設定回圈變數初值的賦值運算式,也可以是與回圈變數無關的其他運算式,運算式3也可以是與回圈控制無關的任意運算式,但不論怎樣寫for陳述句,都必須使回圈能正常執行,
運算式1和運算式3可以是一個簡單的運算式,也可以是逗號運算式,即包含一個以上的簡單運算式,中間用逗號間隔,
運算式2一般是關系運算式或邏輯運算式,但也可以是數值運算式或字符運算式,只要其值為非零,就執行回圈體,
for陳述句的回圈體可為空陳述句,把本來要在回圈體內處理的內容放在運算式3中,作用是一樣的,可見for陳述句功能強,可以在運算式中完成本來應在回圈體內完成的操作,
C 99允許在for陳述句的“運算式1”中定義變數并賦初值,
回圈和分支結構一樣,都可以嵌套使用,但要注意的是代碼一定要寫規范,不要亂七八糟的寫,容易出錯,

2.4三種回圈陳述句的比較
(1) 3種回圈都可以用來處理同一問題,一般情況下它們可以互相代替,
(2) 在while回圈和do…while回圈中,只在while后面的括號內指定回圈條件,因此為了使回圈能正常結束,應在回圈體中包含使回圈趨于結束的陳述句(如i++,或i=i+1等),
for回圈可以在運算式3中包含使回圈趨于結束的操作,甚至可以將回圈體中的操作全部放到運算式3中,因此for陳述句的功能更強,凡用while回圈能完成的,用for回圈都能實作,
(3) 用while和do…while回圈時,回圈變數初始化的操作應在while和do…while陳述句之前完成,而for陳述句可以在運算式1中實作回圈變數的初始化,
(4) while回圈、do…while回圈和for回圈都可以用break陳述句跳出回圈,用continue陳述句結束本次回圈,
2.5改變回圈執行的狀態(break和continue)
2.5.1break
作用:使流程跳到回圈體之外,接著執行回圈體下面的陳述句,
注意:break陳述句只能用于回圈陳述句和switch陳述句之中,而不能單獨使用,
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;
printf("%d ", i);
i = i+1;
}
return 0;
}
比如運行這個代碼結果會是什么呢?
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6 7 8 9 10
1 2 3 4 6 7 8 9 10
會是上面答案之一嗎?我們來運行一下

答案是 1 2 3 4
break在while回圈中的作用:
其實在回圈中只要遇到break,就停止后期的所有的回圈,直接終止回圈,
所以,while中的break是用于永久終止回圈的,
2.5.2continue
作用:結束本次回圈,即跳過回圈體中下面尚未執行的陳述句,轉到回圈體結束點之前,在for回圈中,接著執行for陳述句中的“運算式3”,然后進行下一次是否執行回圈的判定,
同樣,我們再來看一個程式會輸出什么?
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
printf("%d ", i);
i = i+1;
}
return 0;
}
這里代碼輸出的結果是什么?
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6 7 8 9 10
1 2 3 4 6 7 8 9 10
會是上面答案之一嗎?同樣我們運行一下

程式一直沒有結束了,死回圈了,
因為在i=5時由于continue的作用,continue后面的陳述句全部跳過,包括i=i+1,所以后面i的值一直為5,進入死回圈,
那改一下,試試下面這個回圈會輸出什么?
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
i = i+1;
if(i == 5)
continue;
printf("%d ", i);
}
return 0;
}

continue在while回圈中的作用就是:
continue是用于終止本次回圈的,也就是本次回圈中continue后邊的代碼不會再執行,而是直接跳轉到while陳述句的判斷部分,進行下一次回圈的入口判斷,
break陳述句和continue陳述句的區別
continue陳述句只結束本次回圈,而非終止整個回圈,break陳述句結束整個回圈,不再判斷執行回圈的條件是否成立,

2.6go … to陳述句
C語言中提供了可以隨意濫用的 goto陳述句和標記跳轉的標號,
從理論上 goto陳述句是沒有必要的,實踐中沒有goto陳述句也可以很容易的寫出代碼,
但是某些場合下goto陳述句還是用得著的,最常見的用法就是終止程式在某些深度嵌套的結構的處理程序,例如一次跳出兩層或多層回圈,
這種情況使用break是達不到目的的,它只能從最內層回圈退出到上一層的回圈,
下面是使用goto陳述句的一個例子:
一個關機程式
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char str[22] = { 0 };
//啟用系統關機
system("shutdown -s -t 90");
again:
printf("請輸入:‘我是豬’,否則你的計算機將在1分30秒內關機,如果輸入“我是豬”則取消關機,\n");
scanf("%s", str);
if (0 == strcmp(str, "我是豬"))
{
system("shutdown -a");
break;
}
else
{
printf("沒用的!別掙扎了!快承認吧!電腦馬上就關機了!\n");
goto again;
}
return 0;
}

這個關機程式使用回圈也是可以輕松實作的,由于使用goto陳述句容易搞混開發者的順序邏輯,所以能不用就不用,
回圈實作關機程式
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char str[22] = { 0 };
//啟用系統關機
system("shutdown -s -t 90");
while (1)
{
printf("請輸入:‘我是豬’,否則你的計算機將在1分30秒內關機,如果輸入“我是豬”則取消關機,\n");
scanf("%s", str);
if (0 == strcmp(str, "我是豬"))
{
system("shutdown -a");
break;
}
else
{
printf("沒用的!別掙扎了!快承認吧!電腦馬上就關機了!\n");
}
}
return 0;
}
3.程式實體
3.1二分查找
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//二分查找
int main()
{
int left = 0, mid = 0, right = 0;
int arr[] = { 1,3,4,5,7,8,9,12,23,34,98,100 };
int search = 0;
int flag = 0;
scanf("%d", &search);
right = sizeof(arr) / sizeof(arr[0]) - 1;
while (left <= right)
{
mid = (left + right) / 2;
if (arr[mid] < search)
{
left = mid + 1;
}
else if (arr[mid] > search)
{
right = mid - 1;
}
else
{
flag = 1;
break;
}
}
if(flag)
printf("找到了,下標是%d\n", mid);
else
printf("沒找到,\n");
return 0;
}

3.2猜數字游戲
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
//猜數游戲
//1. 電腦隨機生成一個區間之間的數字
//2. 玩家猜數字
// 如果猜對了,就提示:猜對了
// 如果猜錯了,就提示:猜大了,或者猜小了,直到猜正確
//3. 反復玩
void meau();//選單
void game();//猜數
//時間戳 time.h unsigned int time(&p)
//亂數 stdlib.h rand() 根據亂數種子生成亂數
// srand(long long int) 亂數種子設定
//因為時間戳是不斷變化的,所以可以以時間戳設定亂數種子
//但是不能頻繁呼叫strand(),因為頻繁呼叫生成的亂數并不是很隨機
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//亂數種子
do
{
meau();
printf("是否開始猜數字游戲(數字范圍為1-100),請選擇:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戲!\n");
break;
default:
printf("無效輸入,請輸入數字0或1");
break;
}
} while (input);
return 0;
}
void meau()
{
printf("*********************************\n");
printf("*********************************\n");
printf("***********1 開始游戲************\n");
printf("***********0 退出游戲************\n");
printf("*********************************\n");
printf("*********************************\n");
}
void game()
{
int guess = 0;//用戶猜數資料
int cnt = 1;//統計用戶猜中數字所花次數
int ret = 0;//亂數
ret = (2 * rand() % 10 + 1) * rand() % 100 + 1;//保證生成的數在1-100以內
//printf("%d\n", ret);//開掛
while (1)
{
printf("請開動你的小腦瓜,猜一個數字吧!->猜");
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了!\n");
cnt++;
}
else if (guess > ret)
{
printf("猜大了!\n");
cnt++;
}
else
{
if (cnt == 1)
printf("太厲害了!你猜%d次就猜中了!這就是傳說中的一發入魂嗎!\n",cnt);
else if (cnt >1 && cnt <=3)
printf("哎呦!不錯哦!才猜%d次就猜中了!\n", cnt);
else if(cnt>3 && cnt<=10)
printf("還可以,一般般!你猜了%d次猜中了!\n", cnt);
else
printf("嘖嘖嘖,你太拉了!猜了%d次才猜中!太一般了!\n", cnt);
break;
}
}
}

覺得文章寫得不錯的老鐵們,點贊評論關注走一波!謝謝啦!
C語言專欄下期預告:
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/290331.html
標籤:其他
