C++阶段01笔记04【程序流程结构(选择结构、循环结构、跳转语句)】
C++| 匠心之作 從0到1入門學編程【視頻+課件+筆記+源碼】
目錄
4 程序流程結構
4.1 選擇結構
4.1.1 if語句
——①單行格式if語句
——②多行格式if語句
——③多條件的if語句
——④嵌套if語句
4.1.2 三目運算符
4.1.3 switch語句
4.2 循環結構
4.2.1 while循環語句
——while循環 練習案例:猜數字
4.2.2 do...while循環語句
——do...while循環 練習案例:水仙花數
4.2.3 for循環語句
——for循環 練習案例:敲桌子
4.2.4 嵌套循環
——for循環嵌套 練習案例:乘法口訣表
4.3 跳轉語句
4.3.1 break語句
——示例
4.3.2 continue語句
——示例
4.3.3 goto語句
——示例
4 程序流程結構
C/C++支持最基本的三種程序運行結構:順序結構、選擇結構、循環結構。
-
順序結構:程序按順序執行,不發生跳轉。
-
選擇結構:依據條件是否滿足,有選擇的執行相應功能。
-
循環結構:依據條件是否滿足,循環多次執行某段代碼。
4.1 選擇結構
4.1.1 if語句
作用:執行滿足條件的語句。
if語句的三種形式
單行格式if語句
多行格式if語句
多條件的if語句
——①單行格式if語句
單行格式if語句:if(條件){ 條件滿足執行的語句 }
示例:
#include <iostream> using namespace std;int main() {//選擇結構-單行if語句//用戶輸入一個分數,如果分數大于600分,視為考上一本大學,并在屏幕上打印(輸出)//1、用戶輸入分數int score = 0;cout << "請輸入一個分數:" << endl;cin >> score;//2、打印用戶輸入的分數cout << "您輸入的分數為: " << score << endl;//3、判斷分數是否大于600,如果大于600,則輸出...//if語句//注意事項,在if判斷語句后面,不要加分號if (score > 600){cout << "我考上了一本大學!!!" << endl;}return 0; }注意:if條件表達式后不要加分號。
——②多行格式if語句
多行格式if語句:if(條件){ 條件滿足執行的語句 }else{ 條件不滿足執行的語句 };
示例:
#include <iostream> using namespace std;int main() {//選擇結構-多行if語句//輸入考試分數,如果分數大于600,視為考上一本大學,在屏幕上輸出//如果沒考上一本大學,打印"未考上一本大學"//1、輸入考試分數int score = 0;cout << "請輸入考試分數:" << endl;cin >> score;//2、提示用戶輸入的分數cout << "您輸入的分數為:" << score << endl;//3、判斷如果大于600,打印“考上一本”,否則打印"未考上一本"if (score > 600) //大于600分執行下面大括號中的內容{cout << "我考上了一本大學!" << endl;}else//不大于600分,執行else后大括號中的內容{cout << "我未考上一本大學!" << endl;}system("pause");return 0; }——③多條件的if語句
多條件的if語句:if(條件1){ 條件1滿足執行的語句 }else if(條件2){條件2滿足執行的語句}... else{ 都不滿足執行的語句}
示例:
?
#include <iostream> using namespace std;int main() {//選擇結構-多行if語句int score = 0;cout << "請輸入考試分數:" << endl;cin >> score;if (score > 600){cout << "我考上了一本大學!" << endl;}else if (score > 500){cout << "我考上了二本大學!" << endl;}else if (score > 400){cout << "我考上了三本大學!" << endl;}else{cout << "我未考上本科!" << endl;}system("pause");return 0; }——④嵌套if語句
嵌套if語句:在if語句中,可以嵌套使用if語句,達到更精確的條件判斷。
案例需求:
-
提示用戶輸入一個高考考試分數,根據分數做如下判斷
-
分數如果大于600分視為考上一本,大于500分考上二本,大于400考上三本,其余視為未考上本科;
-
在一本分數中,如果大于700分,考入北大,大于650分,考入清華,大于600考入人大。
示例:
?
#include <iostream> using namespace std;int main() {int score = 0;cout << "請輸入考試分數:" << endl;cin >> score;if (score > 600){cout << "我考上了一本大學!" << endl;if (score > 700){cout << "我考上了北大!" << endl;}else if (score > 650){cout << "我考上了清華!" << endl;}else{cout << "我考上了人大!" << endl;}}else if (score > 500){cout << "我考上了二本大學!" << endl;}else if (score > 400){cout << "我考上了三本大學!" << endl;}else{cout << "我未考上本科!" << endl;}system("pause");return 0; }練習案例: 三只小豬稱體重
有三只小豬ABC,請分別輸入三只小豬的體重,并且判斷哪只小豬最重?
?
#include <iostream> using namespace std;int main() {//三個小豬稱體重,判斷哪只小豬最重//1、創建三只小豬的體重變量int A = 0;int B = 0;int C = 0;//2、讓用戶輸入三只小豬的體重cout << "\n請輸入小豬A的體重:" << endl;cin >> A;cout << "\n請輸入小豬B的體重:" << endl;cin >> B;cout << "\n請輸入小豬C的體重:" << endl;cin >> C;cout << "\n小豬A的體重為:" << A << endl;cout << "小豬B的體重為:" << B << endl;cout << "小豬C的體重為:" << C << endl;//3、判斷三只哪只小豬最重//先判斷A和B重量if (A > B) //A比B重{if (A > C){cout << "\n小豬A最重!\n" << endl;}else{cout << "\n小豬C最重!\n" << endl;}}else //B比A重{if (B > C){cout << "\n小豬B最重!\n" << endl;}else{cout << "\n小豬C最重!\n" << endl;}}system("pause");return 0; }4.1.2 三目運算符
作用: 通過三目運算符實現簡單的判斷。
語法:表達式1 ? 表達式2 :表達式3
解釋:
如果表達式1的值為真,執行表達式2,并返回表達式2的結果;
如果表達式1的值為假,執行表達式3,并返回表達式3的結果。
示例:
#include <iostream> using namespace std;int main() {//三目運算符int a = 10;int b = 20;int c = 0;c = a > b ? a : b;cout << "c = " << c << endl; //c = 20c = (a > b ? a : b);cout << "c = " << c << endl; //c = 20//C++中三目運算符返回的是變量,可以繼續賦值(a > b ? a : b) = 100;cout << "a = " << a << endl; //a = 10cout << "b = " << b << endl; //b = 100cout << "c = " << c << endl; //c = 20system("pause");return 0; }總結:和if語句比較,三目運算符優點是短小整潔,缺點是如果用嵌套,結構不清晰。
4.1.3 switch語句
作用:執行多條件分支語句。
語法:
switch?(表達式) //【switch語句中表達式類型只能是整型或者字符型】
{
????case?結果1:?執行語句;break;
????case?結果2:?執行語句;break;
????...
????default: 執行語句;break;
}
示例:
#include <iostream> using namespace std;int main() //switch語句 {//請給電影進行評分// 10 ~ 9 經典// 8 ~ 7 非常好// 6 ~ 5 一般// 5分以下 爛片//1、提示用戶給電影評分cout << "請給電影打分:" << endl;//2、用戶開始進行打分int score = 0;cin >> score;cout << "您打的分數為:" << score << endl;//3、根據用戶輸入的分數來提示用戶最后的結果switch (score){case 10:// cout << "您認為是經典電影!" << endl;// break; //退出當前分支case 9:cout << "您認為是經典電影!" << endl;break; //退出當前分支case 8:// cout << "您認為電影非常好!" << endl;// break;case 7:cout << "您認為電影非常好!" << endl;break;case 6:case 5:cout << "您認為電影一般!" << endl;break;default:cout << "您認為是爛片!" << endl;break;}//if和switch區別?//switch缺點:判斷時候只能是整型或者字符型,不可以是一個區間!//switch優點:結構清晰,執行效率高!system("pause");return 0; }注意1:switch語句中表達式類型只能是整型或者字符型。
注意2:case里如果沒有break,那么程序會一直向下執行。
總結:與if語句比,對于多條件判斷時,switch的結構清晰,執行效率高,缺點是switch不可以判斷區間。
4.2 循環結構
4.2.1 while循環語句
作用:滿足循環條件,執行循環語句
語法:while(循環條件){ 循環語句 }
解釋:只要循環條件的結果為真,就執行循環語句。
示例:
#include <iostream> using namespace std;int main() {//while循環//在屏幕上打印 0 ~ 9 這10個數字int num = 0;//while()中填入循環條件//注意事項:在寫循環時,一定要避免死循環的出現。while (1)死循環while (num < 10){ // 循環代碼cout << "num = " << num << endl;num++;}system("pause");return 0; }注意:在執行循環語句時候,程序必須提供跳出循環的出口,否則出現死循環。
——while循環 練習案例:猜數字
while循環練習案例:猜數字
案例描述:系統隨機生成一個1到100之間的數字,玩家進行猜測,如果猜錯,提示玩家數字過大或過小,如果猜對恭喜玩家勝利,并且退出游戲。
#include?<ctime>?//?time系統時間頭文件
//添加隨機數種子,作用:利用當前系統時間生成隨機數,防止每次隨機數都是一樣。
srand((unsigned?int)time(NULL));
#include <iostream> #include <ctime> // time系統時間頭文件 using namespace std;int main() {//添加隨機數種子,作用:利用當前系統時間生成隨機數,防止每次隨機數都是一樣。srand((unsigned int)time(NULL));//1、系統生成隨機數【rand() % 100:生成0~99的隨機數】int num = rand() % 100 + 1; //rand()%100+1 生成 0+1 ~ 99+1 的隨機數cout << "系統生成隨機數(0~99):" << num << endl;//2、玩家進行猜數int val = 0; //玩家輸入數據while (1) //死循環{cin >> val;//3、判斷玩家的猜測//猜錯:提示猜的結果 過大或過小,重新返回第二步if (val > num){cout << "猜測過大!\n"<< endl;}else if (val < num){cout << "猜測過小!\n"<< endl;}else{cout << "猜測正確!\n"<< endl;//猜對:退出游戲break; //break, 可以利用該關鍵字退出當前循環。}}system("pause");return 0; }4.2.2 do...while循環語句
作用: 滿足循環條件,執行循環語句。
語法: do{ 循環語句 } while(循環條件);
注意:與while的區別在于do...while會先執行一次循環語句,再判斷循環條件。
示例:
#include <iostream> using namespace std;int main() {//do...while循環語句//在屏幕中輸出0~9這10個數字int num = 0;do{cout << num << endl;num++;} while (num < 10);num = 0;do{cout << num << endl;num++;} while (num); // 死循環!!!num = 0;//while (num < 10 ) // 輸出0~9while (num) //不執行任何代碼{cout << num << endl;num++;}//do...while和while循環區別在于do...while會先執行一次循環語句system("pause");return 0; }總結:與while循環區別在于,do...while先執行一次循環語句,再判斷循環條件。
——do...while循環 練習案例:水仙花數
練習案例:水仙花數
案例描述:水仙花數是指一個 3 位數,它的每個位上的數字的 3次冪之和等于它本身。
例如:1^3 + 5^3+ 3^3 = 153
請利用do...while語句,求出所有3位數中的水仙花數。
#include <iostream> using namespace std;int main() {//1、先打印所有的三位數int num = 100;do{//2、從所有的三位數字中找到水仙花數int a = 0; //個位int b = 0; //十位int c = 0; //百位a = num % 10; //獲取數字的個位b = num / 10 % 10; //獲取數字的十位c = num / 100; //獲取數字的百位if (a * a * a + b * b * b + c * c * c == num) //如果是水仙花數,才打印{cout << num << endl;}num++;} while (num < 1000);system("pause");return 0; }4.2.3 for循環語句
作用: 滿足循環條件,執行循環語句。
語法:for(起始表達式;條件表達式;末尾循環體) { 循環語句; }
示例:
#include <iostream> using namespace std;int main() {//for循環//打印數字0~9for (int i = 0; i < 10; i++){cout << i << endl;}//同義拆分int i = 0;for (;;){if (i >= 10){break;}cout << i << endl;i++;}system("pause");return 0; }詳解:
注意:for循環中的表達式,要用分號進行分隔。
總結:while、do...while、for都是開發中常用的循環語句,for循環結構比較清晰,比較常用。
——for循環 練習案例:敲桌子
練習案例:敲桌子
案例描述:從1開始數到數字100, 如果數字個位含有7,或者數字十位含有7,或者該數字是7的倍數,我們打印敲桌子,其余數字直接打印輸出。
?
#include <iostream> using namespace std;int main() {//1、先輸出1~100數字for (int i = 1; i <= 100; i++){//2、從100個數中找到特殊的數字,打印“敲桌子!”//如果是7的倍數、個位是7、十位是7,打印“敲桌子!”if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) //如果是特殊數字,打印“敲桌子!”{cout << "敲桌子!" << endl;}else //如果不是特殊數字,打印數字{cout << i << endl;}}system("pause");return 0; }4.2.4 嵌套循環
作用: 在循環體中再嵌套一層循環,解決一些實際問題。
例如我們想在屏幕中打印如下圖片,就需要利用嵌套循環。
?
#include <iostream> using namespace std;int main() {//利用嵌套循環實現星圖//外層循環執行1次,內層循環執行1輪(1周)for (int i = 0; i < 10; i++) //外層循環:打印一行星圖{for (int j = 0; j < 10; j++) //內層循環:打印一行*{cout << "*"<< " "; //*加空格}cout << endl; //換行}return 0; }——for循環嵌套 練習案例:乘法口訣表
練習案例:乘法口訣表
案例描述:利用嵌套循環,實現九九乘法表。
#include <iostream> using namespace std;int main() {//乘法口訣表for (int i = 1; i <= 9; i++) //打印行數{// cout << i << endl;for (int j = 1; j <= i; j++) //打印列數{cout << j << "*" << i << "=" << i * j << " ";}cout << endl;}system("pause");return 0; }4.3 跳轉語句
4.3.1 break語句
作用: 用于跳出選擇結構或者循環結構。
break使用的時機:
-
出現在switch條件語句中,作用是終止case并跳出switch。
-
出現在循環語句中,作用是跳出當前的循環語句。
-
出現在嵌套循環中,跳出最近的內層循環語句。
——示例
#include <iostream> using namespace std;int main() //break的使用時機 {//1、在switch語句中使用breakcout << "請選擇您挑戰副本的難度:" << endl;cout << "1、普通!" << endl;cout << "2、中等!" << endl;cout << "3、困難!" << endl;int num = 0; //創建選擇結果的變量cin >> num; //等待用戶輸入switch (num){case 1:cout << "您選擇的是普通難度!" << endl;break; //退出switch語句case 2:cout << "您選擇的是中等難度!" << endl;break;case 3:cout << "您選擇的是困難難度!" << endl;break;}//2、在循環語句中用breakfor (int i = 0; i < 10; i++){if (i == 5) //如果i等于5,退出循環,不再打印{break; // 跳出循環語句}cout << i << endl;}//3、在嵌套循環語句中使用break,退出內層循環【出現在嵌套循環語句中】for (int i = 0; i < 10; i++){for (int j = 0; j < 10; j++){if (j == 5){break; //退出內層循環}cout << "*" << " ";}cout << endl;}return 0; }4.3.2 continue語句
作用:在循環語句中,跳過本次循環中余下尚未執行的語句,繼續執行下一次循環。
——示例
#include <iostream> using namespace std;int main() {//continue語句for (int i = 0; i < 100; i++){if (i % 2 == 0) //奇數輸出,偶數不輸出,0 2 4 6 8 10{continue; //作用:可以篩選條件,執行到此就不再向下執行;執行下一次循環//break會退出循環,而continue不會}cout << i << endl;}system("pause");return 0; }注意:continue并沒有使整個循環終止,而break會跳出循環。
4.3.3 goto語句
作用:可以無條件跳轉語句。
語法: goto 標記;?如: goto FLAG;【一般用純大寫單詞!】
解釋:如果標記的名稱存在,執行到goto語句時,會跳轉到標記的位置。
——示例
??
#include <iostream> using namespace std;int main() //goto語句 {cout << "1、xxx" << endl;cout << "2、xxx" << endl;goto FLAG;cout << "3、xxx" << endl;cout << "4、xxx" << endl;FLAG:cout << "5、xxx" << endl;system("pause");return 0; }注意:在程序中不建議使用goto語句,以免造成程序流程混亂。
總結
以上是生活随笔為你收集整理的C++阶段01笔记04【程序流程结构(选择结构、循环结构、跳转语句)】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++阶段01笔记03【运算符(算术运算
- 下一篇: C++阶段01笔记05【数组(概述、一维