C++ 程序流程結構詳解
1.選擇結構
1.1 判斷語句if
1.單行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,如果大於,那麼輸出 if (score >600) { cout << "恭喜您考上瞭一本大學"; } return 0; }
2.多行if語句 if…else
#include<iostream> using namespace std; int main() { //1、用戶輸入分數 int score = 0; cout << "請輸入一個分數:" << endl; cin >> score; //2、打印用戶輸入的分數 cout << "您輸入的分數為:" << score << endl; //3、判斷是否大於600,如果大於,那麼輸出 if (score > 600) { cout << "恭喜 您考上瞭一本大學!"; } else { cout << "未考上一本"; } return 0; }
3.多條件if語句 if…else if…else if …else
#include<iostream> using namespace std; int main() { //1、用戶輸入分數 int score = 0; cout << "請輸入一個分數:" << endl; cin >> score; //2、打印用戶輸入的分數 cout << "您輸入的分數為:" << score << endl; //3、分數大於600,視為考上一本大學 //大於500,視為考上二本大學,屏幕輸出 //大於400,視為考上三本大學,屏幕輸出 //小於等於400,視為未考上本科 if (score > 600) { cout << "恭喜 您考上瞭一本大學!"; } else if (score > 500) { cout << "恭喜 您考上瞭二本大學!"; } else if (score > 400) { cout << "恭喜 您考上瞭二本大學!"; } else { cout << "未考上本科"; } return 0; }
4.嵌套if語句
例1:三個數找最大
#include<iostream> using namespace std; int main() { int a, b, c; cin >> a >> b >> c; cout << "A=" << a << endl; cout << "B=" << b << endl; cout << "C=" << c << endl; if (a>b)// a比b大 { if (a>c)//a最大 { cout << "A最大" << endl; } else { cout << "C最大" << endl; } } else// b比a大 { if (b > c)//b最大 { cout << "B最大" << endl; } else { cout << "C最大" << endl; } } return 0; }
例2:判斷是否是閏年
閏年的定義:
- 能被4整除,但不能被100整除;
- 能被400整除;
法一:使用關系運算符判斷
#include<iostream> using namespace std; //命名空間 int main() { //主函數 int year; cin >> year; if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//&&優先級更高 { cout << "閏年" << endl; } else { cout << "不是閏年" << endl; } return 0; }
琺二:嵌套if
#include<iostream> using namespace std; //命名空間 int main() { //主函數 int year; cin >> year; if (year % 4 == 0) { if (year%100==0) { if (year % 400 == 0) { cout << "閏年" << endl; } else { cout << "不是閏年" << endl; } } else { cout << "閏年" << endl; } } else { cout << "不是閏年" << endl; } return 0; }
1.2 三目運算符判斷
語法:表達式1 ? 表達式2 : 表達式3
【解釋】若表達式1的值為真,則執行表達式2,並返回表達式2的結果;
若表達式1的值為假,則執行表達式3,並返回表達式3的結果
例3:兩個數找最大
#include<iostream> using namespace std; int main() { //三目運算符 //創建3個變量 a b c // 將a和b做比較,將變量大的值賦值給變量c int a = 10; int b = 0; int c; c=(a > b ? a : b); cout << "C=" << c << endl;//10 //C++中三目運算符返回的是變量,可以繼續賦值 (a > b ? a : b)=100; cout << "A=" << a << endl; cout << "B=" << b << endl; return 0; }
例4:判斷一個數是否是3和5的整倍數
#include<iostream> using namespace std; //命名空間 int main() { //主函數 int num; cout << "Please input a number:" << endl; cin >> num; //法1: (num % 3== 0&&num%5==0) ? cout << "yes" << endl : cout << "no" << endl; //法2: (num % 3 == 0)? ((num%5==0) ? cout << "yes" << endl : cout << "no" << endl): cout << "no" << endl; return 0; }
1.3 開關語句switch
註意點:
1.switch語句中表達式類型隻能是整型或字符型;
2.case裡如果沒有break,那麼程序會一直向下執行。
例5:給電影評分
#include<iostream> using namespace std; int main() { //switch語句 //給電影進行打分 //10~9 經典 //8~7 非常好 //6~5 一般 //5以下 爛片 //1、提示用戶給電影評分 cout << "請給電影評分" << endl; //2、用戶開始進行打分 int score; cin >> score; cout << "Score=" << 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: cout << "您認為是電影一般" << endl; break; case 5: cout << "您認為是電影一般" << endl; break; default: cout << "您認為是爛片" << endl; break; } //if和switch區別 //switch 缺點,判斷時候隻能是整型或者字符型,不可以是一個區間 //switch 有點,結構清晰,執行效率高 return 0; }
例6:星期幾
switch語句內遇break才停止執行
#include<iostream> using namespace std; //命名空間 int main() { //主函數 int n; cin >> n; switch (n)//首先跳轉到與輸入一樣的case,接著往下走,遇break停止或知道語句走完才停止 { case 1: cout << "Monday" << endl; case 2: cout << "Tuesday" << endl; case 3: cout << "Wednesday" << endl; case 4: cout << "Thursday" << endl; case 5: cout << "Friday" << endl; case 6: cout << "Saturday" << endl; case 7: cout << "Sunday" << endl; default: cout << "input error" << endl; } return 0; }
輸出結果:
2.循環結構
2.1 while
例1:用while循環計算1~10累加
#include<iostream> using namespace std; //命名空間 int main() { //主函數 int i = 1, sum = 0; while (i<=10) { sum += i; i++; } cout << sum << endl; return 0; }
例2:案例-猜數字
#include<iostream> using namespace std; #include<ctime> int main() { //添加隨機數種子 作用利用當前系統時間生成隨機數,防止每次隨機數都一樣 srand((unsigned int)time(NULL)); //1、系統生成隨機數 int num = rand() % 100 + 1; //生成0~100的隨機數 cout << num << endl; //2、玩傢進行猜測 cout << "請玩傢輸入猜測的數據:" << endl; int val; //玩傢輸入的數據 while (1) { cin >> val; //3、判斷玩傢的猜測 if (val > num) { cout << "猜測過大!" << endl; } else if(val < num) { cout << "猜測過小!" << endl; } else { cout << "猜對啦!" << endl; break; //利用該關鍵字,退出循環 } } //猜對 退出遊戲 //猜錯 提示猜的結果,過大或者過小 重新返回第2步 return 0; }
2.2 do…while
例3:用do…while循環計算1~10累加
#include<iostream> using namespace std; //命名空間 int main() { //主函數 int i = 1, sum = 0; do { sum += i; i++; } while (i <= 10); cout << sum << endl;//55 return 0; }
while與do…while的區別:
do…while無論while中條件是否為真,先執行{}內語句;
while中條件若為假,則不執行。
例4:案例-水仙花數
#include<iostream> using namespace std; int main() { int num = 100; do { int a = num % 10;// 個位 int b = num / 10 % 10; //十位 int c = num / 100; //百位 if (num == a*a*a+b*b*b+c*c*c) { cout << num << endl; } num++; } while (num<1000); return 0; }
2.3 for
例5:用for循環計算1~10累加
#include<iostream> using namespace std; //命名空間 int main() { //主函數 int sum = 0; for (int i = 1; i <= 10; i++) { sum += i; } cout << sum << endl; return 0; }
例6:敲桌子
#include<iostream> using namespace std; int main() { //1、輸出1~100的數字 //2、找7的倍數,個位有7,十位有7 for (int i = 1; i <=100; i++) { if (i%7==0||i%10==7||i/10%10==7) { cout << "敲桌子!" << endl; } else { cout << i << endl; } } return 0; }
2.4 循環控制
1.break:跳出循環
例7:遇到負數,則停止累加
#include <iostream> using namespace std; int main() { int i, n, sum; sum = 0; cout << "input 10 number" << endl; for (i = 1; i <= 10; i++) { cout << i << ":"; cin >> n; if (n < 0) //判斷輸入是否為負數,是負數就停止累加 break; sum += n; //對輸入的數進行累加 } cout << "The Result :" << sum << endl; return 0; }
2.continu:跳出本次循環,繼續下一次循環
例8:遇負,則不進行累加,接著加下一個正數
#include <iostream> using namespace std; int main() { int i, n, sum; sum = 0; cout << "input 10 number" << endl; for (i = 1; i <= 10; i++) { cout << i << ":"; cin >> n; if (n < 0) //判斷輸入是否為負數 continue; sum += n; //對輸入的數進行累加 } cout << "The Result :" << sum << endl; return 0; }
3.goto:跳轉到label,接著往下走
例9:跳轉
#include <iostream> using namespace std; int main() { int ivar = 0; //定義一個整型變量,初始化為0 int num = 0; //定義一個整型變量,初始化為0 label: //定義一個標簽 ivar++; //ivar自加1 num += ivar; //累加求和 if (ivar < 10) //判斷ivar是否小於100 { goto label; //轉向標簽 } cout << ivar << num << endl; return 0; }
註意點:goto語句不能越過復合語句之外的變量定義的語句,例如,下面是非法的
goto label; int i 10; label: cout << "goto" << endl;
正確的:
goto label; { int i 10; } label: cout << "goto" << endl;
2.5 循環嵌套
例10:打印三角形
#include<iostream> using namespace std; //命名空間 int main() { //主函數 int i, j, k; for (i = 1; i <= 5; i++) //控制行數 { for (j = 1; j <= 5 - i; j++) //控制空格數 cout << " "; for (k = 1; k <= 2 * i - 1; k++) //控制打印*號的數量 cout << "*"; cout << endl; } return 0; }
例11:打印星圖
#include<iostream> using namespace std; int main() { //利用嵌套循環實現星圖 //打印一行星圖 //外層循環 for (int i = 0; i < 10; i++) { //內層循環 for (int j = 0; j < 10; j++) { cout << "* "; } cout << endl; } return 0; }
例12:輸出乘法口訣表
#include<iostream> using namespace std; int main() { for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { cout << j << "*" << i << "=" << i * j << "\t"; } cout << endl; } return 0; }
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!