- 從零開始:Qt可視化程序設(shè)計基礎(chǔ)教程
- 彭凌西等編著
- 722字
- 2022-01-06 09:52:49
1.7 結(jié)構(gòu)化程序設(shè)計
C++支持最基本的3種程序運行結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。
● 順序結(jié)構(gòu):程序按順序執(zhí)行,不發(fā)生語句跳轉(zhuǎn),此處不單獨介紹。
● 選擇結(jié)構(gòu):根據(jù)條件是否滿足,有選擇地執(zhí)行相應的代碼。
● 循環(huán)結(jié)構(gòu):根據(jù)條件是否滿足,循環(huán)多次執(zhí)行某段代碼。
· 1.7.1 選擇結(jié)構(gòu)
█ 1.if語句
作用:執(zhí)行滿足條件的語句。
if語句的3種形式如下。
● 單行格式if語句。
● 多行格式if語句。
● 多條件的if語句。
(1)單行格式if語句:if(條件){條件滿足時執(zhí)行的語句},流程如圖1-30所示,使用方法見例1-15。
圖1-30 單行格式if語句條件判斷流程
例1-15:單行格式if語句。
#include <iostream>
using namespace std;
int main() {
//選擇結(jié)構(gòu)—單行格式if語句
//輸入一個分數(shù),如果分數(shù)大于600分,視為考上本科第一批錄取的大學(一本大學),并輸出
int score = 0;
cout << "請輸入一個分數(shù):" << endl;
cin >> score;
cout << "您輸入的分數(shù)為: " << score << endl;
//if語句
//注意事項:在if判斷語句后面不要加分號
if (score > 600)
{
cout << "我考上了一本大學?。?!" << endl;
}
return 0;
}
例1-15運行結(jié)果如圖1-31所示。
注意:if條件表達式后不要加分號。
(2)多行格式if語句:if(條件){條件滿足時執(zhí)行的語句}else{條件不滿足時執(zhí)行的語句},流程如圖1-32所示,使用方法見例1-16。
圖1-31 例1-15運行結(jié)果
圖1-32 多行格式if語句條件判斷流程
例1-16:多行格式if語句。
#include <iostream>
using namespace std;
int main() {
int score = 0;
cout << "請輸入考試分數(shù):" << endl;
cin >> score;
if (score > 600)
{
cout << "我考上了一本大學" << endl;
}
else
{
cout << "我未考上一本大學" << endl;
}
return 0;
}
例1-16運行結(jié)果如圖1-33所示。
(3)多條件的if語句:if(條件1){條件1滿足時執(zhí)行的語句}else if(條件2){條件2滿足時執(zhí)行的語句}...else{都不滿足時執(zhí)行的語句},流程如圖1-34所示,使用方法見例1-17。
圖1-33 例1-16運行結(jié)果
圖1-34 多條件的if語句條件判斷流程
例1-17:多條件的if語句。
#include <iostream>
using namespace std;
int main() {
int score = 0;
cout << "請輸入考試分數(shù):" << endl;
cin >> score;
if (score > 600)
{
cout << "我考上了一本大學" << endl;
}
else if (score > 500)
{
cout << "我考上了二本大學" << endl;
}
else if (score > 400)
{
cout << "我考上了三本大學" << endl;
}
else
{
cout << "我未考上本科" << endl;
}
return 0;
}
例1-17運行結(jié)果如圖1-35所示。
總結(jié):在if語句中,可以嵌套使用if語句,以達到更精確的條件判斷。
█ 2.三目運算符
作用:通過三目運算符實現(xiàn)簡單的判斷。
語法:表達式1 ?表達式2:表達式3。
解釋:如果表達式1的值為真,執(zhí)行表達式2,并返回表達式2的結(jié)果;如果表達式1的值為假,執(zhí)行表達式3,并返回表達式3的結(jié)果。
具體使用方法見例1-18。
例1-18:三目運算符。
#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++中三目運算符返回的是變量,可以繼續(xù)賦值
(a > b ? a : b) = 100;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
return 0;
}
例1-18運行結(jié)果如圖1-36所示。
圖1-35 例1-17運行結(jié)果
圖1-36 例1-18運行結(jié)果
總結(jié):和if語句相比較,三目運算符的優(yōu)點是短小、整潔;缺點是如果用嵌套,結(jié)構(gòu)不清晰。
█ 3.switch語句
作用:執(zhí)行多條件分支語句。
語法:
switch(表達式)
{
case 結(jié)果1:執(zhí)行語句;break;
case 結(jié)果2:執(zhí)行語句;break;
...
default:執(zhí)行語句;break;
}
具體使用方法見例1-19。
例1-19:switch語句。
#include <iostream>
using namespace std;
int main() {
//請給電影評分
//10~9: 經(jīng)典
// 8: 非常好
// 7~6: 一般
// 5分及以下: 較差
int score = 0;
cout << "請給電影打分" << endl;
cin >> score;
switch (score)
{
case 10:
case 9:
cout << "經(jīng)典" << endl;
break;
case 8:
cout << "非常好" << endl;
break;
case 7:
case 6:
cout << "一般" << endl;
break;
default:
cout << "較差" << endl;
break;
}
return 0;
}
例1-19運行結(jié)果如圖1-37所示。
圖1-37 例1-19運行結(jié)果
注意1:switch語句中表達式的類型只能是整型或者字符型。
注意2:case里如果沒有break,那么程序會一直向下執(zhí)行。
總結(jié):與if語句相比較,在多條件判斷時,switch語句的結(jié)構(gòu)更清晰,執(zhí)行效率更高;缺點是switch語句不可以判斷區(qū)間。
· 1.7.2 循環(huán)結(jié)構(gòu)
█ 1.while循環(huán)語句
作用:滿足循環(huán)條件,執(zhí)行循環(huán)語句。
語法:while(循環(huán)條件){執(zhí)行語句}。
解釋:只要循環(huán)條件的結(jié)果為真,就執(zhí)行循環(huán)語句,否則跳出循環(huán)。流程如圖1-38所示,使用方法見例1-20。
例1-20:while循環(huán)語句。
#include <iostream>
using namespace std;
int main() {
int num = 0;
while (num < 10)
{
cout << "num = " << num << endl;
num++;
}
return 0;
}
例1-20程序運行結(jié)果如圖1-39所示。
圖1-38 while循環(huán)語句流程
圖1-39 例1-20運行結(jié)果
注意:在執(zhí)行循環(huán)語句時,程序必須提供跳出循環(huán)的出口,否則會出現(xiàn)死循環(huán),即程序不能結(jié)束運行。
█ 2.do-while循環(huán)語句
作用:滿足循環(huán)條件,執(zhí)行循環(huán)語句。
語法:do{執(zhí)行語句} while(循環(huán)條件)。
流程如圖1-40所示,具體使用方法見例1-21。
例1-21:do-while循環(huán)語句。
#include <iostream>
using namespace std;
int main() {
int num = 0;
do
{
cout << num << endl;
num++;
} while (num < 10);
return 0;
}
例1-21運行結(jié)果如圖1-41所示。
圖1-40 do-while循環(huán)語句流程
圖1-41 例1-21運行結(jié)果
總結(jié):do-while循環(huán)語句與while循環(huán)語句的區(qū)別在于,do-while循環(huán)語句先執(zhí)行一次循環(huán)語句,再判斷循環(huán)條件。
█ 3.for循環(huán)語句
作用:滿足循環(huán)條件,執(zhí)行循環(huán)語句。
語法:for(起始表達式;條件表達式;末尾循環(huán)體) {循環(huán)語句}。
具體使用方法見例1-22。
例1-22:for循環(huán)語句。
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 10; i++)
{
cout << i << endl;
}
return 0;
}
例1-22運行結(jié)果如圖1-42所示。
圖1-42 例1-22運行結(jié)果
注意:for循環(huán)語句中的表達式,要用分號進行分隔。
總結(jié):while循環(huán)語句、 do-while循環(huán)語句、for循環(huán)語句都是開發(fā)中常用的循環(huán)語句,for循環(huán)語句結(jié)構(gòu)清晰,比較常用。
█ 4.嵌套循環(huán)
作用:在循環(huán)體中再嵌套一層循環(huán),解決一些實際問題。
嵌套循環(huán)語句的具體使用方法見例1-23。
例1-23:嵌套循環(huán)語句。
#include <iostream>
using namespace std;
int main() {
//外層循環(huán)執(zhí)行1次,內(nèi)層循環(huán)執(zhí)行1輪
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
cout << "*" << " ";
}
cout << endl;
}
return 0;
}
例1-23運行結(jié)果如圖1-43所示。
圖1-43 例1-23運行結(jié)果
· 1.7.3 跳轉(zhuǎn)語句
在循環(huán)語句執(zhí)行過程中,跳轉(zhuǎn)語句用于實現(xiàn)程序語句的跳轉(zhuǎn)。在C++中,跳轉(zhuǎn)語句有break語句、continue語句、goto語句3種,下面分別進行介紹。
█ 1.break語句
作用:跳出選擇結(jié)構(gòu)或者循環(huán)結(jié)構(gòu)。
break語句使用的情況有以下3種。
● 出現(xiàn)在switch條件語句中,作用是終止case并跳出switch條件語句。
● 出現(xiàn)在循環(huán)語句中,作用是跳出當前的循環(huán)語句。
● 出現(xiàn)在嵌套循環(huán)語句中,作用是跳出最近的內(nèi)層循環(huán)語句。
具體使用方法見例1-24、例1-25、例1-26。
例1-24:跳轉(zhuǎn)語句。
#include<iostream>
using namespace std;
int main() {
//在switch 語句中使用break
cout << "請選擇您挑戰(zhàn)副本的難度:" << endl;
cout << "1.普通" << endl;
cout << "2.中等" << endl;
cout << "3.困難" << endl;
int num = 0;
cin >> num;
switch (num)
{
case 1:
cout << "您選擇的是普通難度" << endl;
break;
case 2:
cout << "您選擇的是中等難度" << endl;
break;
case 3:
cout << "您選擇的是困難難度" << endl;
break;
}
return 0;
}
例1-24運行結(jié)果如圖1-44所示。
例1-25:跳出循環(huán)語句。
#include <iostream>
using namespace std;
int main() {
//在循環(huán)語句中使用break
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break; //跳出循環(huán)語句
}
cout << i << endl;
}
return 0;
}
例1-25運行結(jié)果如圖1-45所示。
圖1-44 例1-24運行結(jié)果
圖1-45 例1-25運行結(jié)果
例1-26:跳轉(zhuǎn)語句。
#include <iostream>
using namespace std;
int main() {
//在嵌套循環(huán)語句中使用break,退出內(nèi)層循環(huán)
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
{
break;
}
cout << "*" << " ";
}
cout << endl;
}
return 0;
}
例1-26運行結(jié)果如圖1-46所示。
圖1-46 例1-26運行結(jié)果
█ 2.continue語句
作用:在循環(huán)語句中,跳過本次循環(huán)中余下尚未執(zhí)行的語句,繼續(xù)執(zhí)行下一次循環(huán),具體使用方法見例1-27。
例1-27:continue語句。
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 100; i++)
{
if (i % 2 == 0)
{
continue;
}
cout << i << endl;
}
return 0;
}
例1-27運行結(jié)果如圖1-47所示。
注意:continue語句并沒有使整個循環(huán)終止,而break語句會跳出循環(huán)。
█ 3.goto語句
作用:可以無條件跳轉(zhuǎn)語句。
語法:goto 標記。
解釋:如果標記的名稱存在,執(zhí)行到goto語句時會跳轉(zhuǎn)到標記的位置。
具體使用方法見例1-28。
例1-28:goto語句。
#include <iostream>
using namespace std;
int main() {
cout << "1" << endl;
goto FLAG;
cout << "2" << endl;
cout << "3" << endl;
cout << "4" << endl;
FLAG:
cout << "5" << endl;
return 0;
}
例1-28運行結(jié)果如圖1-48所示。
圖1-47 例1-27運行結(jié)果
圖1-48 例1-28運行結(jié)果
注意:在程序中不建議使用goto語句,以免造成程序流程混亂。
- Java程序設(shè)計與開發(fā)
- Python自動化運維快速入門(第2版)
- Learning RabbitMQ
- JavaScript 網(wǎng)頁編程從入門到精通 (清華社"視頻大講堂"大系·網(wǎng)絡開發(fā)視頻大講堂)
- Learning Bayesian Models with R
- Java從入門到精通(第5版)
- aelf區(qū)塊鏈應用架構(gòu)指南
- Learning Laravel 4 Application Development
- PySpark Cookbook
- 機器學習與R語言實戰(zhàn)
- 現(xiàn)代C++編程實戰(zhàn):132個核心技巧示例(原書第2版)
- Unity&VR游戲美術(shù)設(shè)計實戰(zhàn)
- Everyday Data Structures
- 零基礎(chǔ)看圖學ScratchJr:少兒趣味編程(全彩大字版)
- JavaScript悟道