C++ 程序流程結(jié)構(gòu)詳解
1.選擇結(jié)構(gòu)
1.1 判斷語句if
1.單行if語句 if
#include<iostream> using namespace std; int main() { //選擇語句 if語句 //用戶輸入分?jǐn)?shù),如果分?jǐn)?shù)大于600,視為考上一本,在屏幕上輸出 //1、用戶輸入分?jǐn)?shù) int score = 0; cout << "請輸入一個分?jǐn)?shù):"<<endl; cin >> score; //2、打印用戶輸入的分?jǐn)?shù) cout << "您輸入的分?jǐn)?shù)為:" << score << endl; //3、判斷是否大于600,如果大于,那么輸出 if (score >600) { cout << "恭喜您考上了一本大學(xué)"; } return 0; }
2.多行if語句 if...else
#include<iostream> using namespace std; int main() { //1、用戶輸入分?jǐn)?shù) int score = 0; cout << "請輸入一個分?jǐn)?shù):" << endl; cin >> score; //2、打印用戶輸入的分?jǐn)?shù) cout << "您輸入的分?jǐn)?shù)為:" << score << endl; //3、判斷是否大于600,如果大于,那么輸出 if (score > 600) { cout << "恭喜 您考上了一本大學(xué)!"; } else { cout << "未考上一本"; } return 0; }
3.多條件if語句 if...else if...else if ...else
#include<iostream> using namespace std; int main() { //1、用戶輸入分?jǐn)?shù) int score = 0; cout << "請輸入一個分?jǐn)?shù):" << endl; cin >> score; //2、打印用戶輸入的分?jǐn)?shù) cout << "您輸入的分?jǐn)?shù)為:" << score << endl; //3、分?jǐn)?shù)大于600,視為考上一本大學(xué) //大于500,視為考上二本大學(xué),屏幕輸出 //大于400,視為考上三本大學(xué),屏幕輸出 //小于等于400,視為未考上本科 if (score > 600) { cout << "恭喜 您考上了一本大學(xué)!"; } else if (score > 500) { cout << "恭喜 您考上了二本大學(xué)!"; } else if (score > 400) { cout << "恭喜 您考上了二本大學(xué)!"; } else { cout << "未考上本科"; } return 0; }
4.嵌套if語句
例1:三個數(shù)找最大
#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整除;
法一:使用關(guān)系運(yùn)算符判斷
#include<iostream> using namespace std; //命名空間 int main() { //主函數(shù) int year; cin >> year; if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//&&優(yōu)先級更高 { cout << "閏年" << endl; } else { cout << "不是閏年" << endl; } return 0; }
琺二:嵌套if
#include<iostream> using namespace std; //命名空間 int main() { //主函數(shù) 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 三目運(yùn)算符判斷
語法:表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3
【解釋】若表達(dá)式1的值為真,則執(zhí)行表達(dá)式2,并返回表達(dá)式2的結(jié)果;
若表達(dá)式1的值為假,則執(zhí)行表達(dá)式3,并返回表達(dá)式3的結(jié)果
例3:兩個數(shù)找最大
#include<iostream> using namespace std; int main() { //三目運(yùn)算符 //創(chuàng)建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++中三目運(yùn)算符返回的是變量,可以繼續(xù)賦值 (a > b ? a : b)=100; cout << "A=" << a << endl; cout << "B=" << b << endl; return 0; }
例4:判斷一個數(shù)是否是3和5的整倍數(shù)
#include<iostream> using namespace std; //命名空間 int main() { //主函數(shù) 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 開關(guān)語句switch
注意點:
1.switch語句中表達(dá)式類型只能是整型或字符型;
2.case里如果沒有break,那么程序會一直向下執(zhí)行。
例5:給電影評分
#include<iostream> using namespace std; int main() { //switch語句 //給電影進(jìn)行打分 //10~9 經(jīng)典 //8~7 非常好 //6~5 一般 //5以下 爛片 //1、提示用戶給電影評分 cout << "請給電影評分" << endl; //2、用戶開始進(jìn)行打分 int score; cin >> score; cout << "Score=" << score << endl; //3、根據(jù)用戶輸入的分?jǐn)?shù)來提示用戶最后的結(jié)果 switch (score) { case 10: cout << "您認(rèn)為是經(jīng)典電影" << endl; break;//退出當(dāng)前分支 case 9: cout << "您認(rèn)為是經(jīng)典電影" << endl; break; case 8: cout << "您認(rèn)為是電影非常好" << endl; break; case 7: cout << "您認(rèn)為是電影非常好" << endl; break; case 6: cout << "您認(rèn)為是電影一般" << endl; break; case 5: cout << "您認(rèn)為是電影一般" << endl; break; default: cout << "您認(rèn)為是爛片" << endl; break; } //if和switch區(qū)別 //switch 缺點,判斷時候只能是整型或者字符型,不可以是一個區(qū)間 //switch 有點,結(jié)構(gòu)清晰,執(zhí)行效率高 return 0; }
例6:星期幾
switch語句內(nèi)遇break才停止執(zhí)行
#include<iostream> using namespace std; //命名空間 int main() { //主函數(shù) int n; cin >> n; switch (n)//首先跳轉(zhuǎ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; }
輸出結(jié)果:
2.循環(huán)結(jié)構(gòu)
2.1 while
例1:用while循環(huán)計算1~10累加
#include<iostream> using namespace std; //命名空間 int main() { //主函數(shù) int i = 1, sum = 0; while (i<=10) { sum += i; i++; } cout << sum << endl; return 0; }
例2:案例-猜數(shù)字
#include<iostream> using namespace std; #include<ctime> int main() { //添加隨機(jī)數(shù)種子 作用利用當(dāng)前系統(tǒng)時間生成隨機(jī)數(shù),防止每次隨機(jī)數(shù)都一樣 srand((unsigned int)time(NULL)); //1、系統(tǒng)生成隨機(jī)數(shù) int num = rand() % 100 + 1; //生成0~100的隨機(jī)數(shù) cout << num << endl; //2、玩家進(jìn)行猜測 cout << "請玩家輸入猜測的數(shù)據(jù):" << endl; int val; //玩家輸入的數(shù)據(jù) while (1) { cin >> val; //3、判斷玩家的猜測 if (val > num) { cout << "猜測過大!" << endl; } else if(val < num) { cout << "猜測過?。? << endl; } else { cout << "猜對啦!" << endl; break; //利用該關(guān)鍵字,退出循環(huán) } } //猜對 退出游戲 //猜錯 提示猜的結(jié)果,過大或者過小 重新返回第2步 return 0; }
2.2 do...while
例3:用do...while循環(huán)計算1~10累加
#include<iostream> using namespace std; //命名空間 int main() { //主函數(shù) int i = 1, sum = 0; do { sum += i; i++; } while (i <= 10); cout << sum << endl;//55 return 0; }
while與do...while的區(qū)別:
do...while無論while中條件是否為真,先執(zhí)行{}內(nèi)語句;
while中條件若為假,則不執(zhí)行。
例4:案例-水仙花數(shù)
#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循環(huán)計算1~10累加
#include<iostream> using namespace std; //命名空間 int main() { //主函數(shù) 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的數(shù)字 //2、找7的倍數(shù),個位有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 循環(huán)控制
1.break:跳出循環(huán)
例7:遇到負(fù)數(shù),則停止累加
#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) //判斷輸入是否為負(fù)數(shù),是負(fù)數(shù)就停止累加 break; sum += n; //對輸入的數(shù)進(jìn)行累加 } cout << "The Result :" << sum << endl; return 0; }
2.continu:跳出本次循環(huán),繼續(xù)下一次循環(huán)
例8:遇負(fù),則不進(jìn)行累加,接著加下一個正數(shù)
#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) //判斷輸入是否為負(fù)數(shù) continue; sum += n; //對輸入的數(shù)進(jìn)行累加 } cout << "The Result :" << sum << endl; return 0; }
3.goto:跳轉(zhuǎn)到label,接著往下走
例9:跳轉(zhuǎn)
#include <iostream> using namespace std; int main() { int ivar = 0; //定義一個整型變量,初始化為0 int num = 0; //定義一個整型變量,初始化為0 label: //定義一個標(biāo)簽 ivar++; //ivar自加1 num += ivar; //累加求和 if (ivar < 10) //判斷ivar是否小于100 { goto label; //轉(zhuǎn)向標(biāo)簽 } cout << ivar << num << endl; return 0; }
注意點:goto語句不能越過復(fù)合語句之外的變量定義的語句,例如,下面是非法的
goto label; int i 10; label: cout << "goto" << endl;
正確的:
goto label; { int i 10; } label: cout << "goto" << endl;
2.5 循環(huán)嵌套
例10:打印三角形
#include<iostream> using namespace std; //命名空間 int main() { //主函數(shù) int i, j, k; for (i = 1; i <= 5; i++) //控制行數(shù) { for (j = 1; j <= 5 - i; j++) //控制空格數(shù) cout << " "; for (k = 1; k <= 2 * i - 1; k++) //控制打印*號的數(shù)量 cout << "*"; cout << endl; } return 0; }
例11:打印星圖
#include<iostream> using namespace std; int main() { //利用嵌套循環(huán)實現(xiàn)星圖 //打印一行星圖 //外層循環(huán) for (int i = 0; i < 10; i++) { //內(nèi)層循環(huán) 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; }
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Java中BigDecimal,DateFormatter?和迭代器的"陷阱"
這篇文章主要介紹了Java中BigDecimal,DateFormatter?和迭代器的"陷阱",文章圍繞主題展開詳細(xì)的內(nèi)容介紹,感興趣的小伙伴可以參考一下2022-06-06Java實現(xiàn)的按照順時針或逆時針方向輸出一個數(shù)字矩陣功能示例
這篇文章主要介紹了Java實現(xiàn)的按照順時針或逆時針方向輸出一個數(shù)字矩陣功能,涉及java基于數(shù)組遍歷、運(yùn)算的矩陣操作技巧,需要的朋友可以參考下2018-01-01Java并發(fā)編程創(chuàng)建并運(yùn)行線程的方法對比
這篇文章主要為大家詳細(xì)介紹了Java并發(fā)編程創(chuàng)建并運(yùn)行線程的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03Spring?Cloud?Alibaba負(fù)載均衡實現(xiàn)方式
這篇文章主要為大家介紹了Spring?Cloud?Alibaba負(fù)載均衡實現(xiàn)方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10