C++既可以面向过程编程,也可以面向对象编程。面向过程编程就是程序员需要告诉计算机怎么做。面向过程的编程和C语言基本一致。
一、选择结构
(一)if语句
C++的if语句的一般形式为:
if(表达式)
语句1
else
语句2
含义:
当表达式为真时运行语句1,不为真就运行语句2。其中else及其后面部分是可选的,即当表达式不为真时不执行其他操作,仅当表达式为真执行语句1。
当没有else部分时,称为单行if语句,存在else部分称为多行if语句。
int a;cout << "请输入高考分数:" << endl;cin >> a;cout << "您的分数为: " << a << endl;//单行if语句if (a >= 600) //if语句后不能加分号{cout << "恭喜您考上重大" << endl; //满足条件,如果需要执行多行代码,则需要加大括号}//多行if语句if (a >= 600) //if语句后不能加分号cout << "恭喜您考上重大" << endl; //满足条件执行elsecout << "抱歉,继续加油" << endl; //不满足条件执行
(二)多条件if语句
if语句包含else部分,而else部分里面包含另一个if语句,这个内嵌if语句的else部分又是另一个if语句,如此循环既是一个内嵌多层的if语句。
多条件if语句的形式一般为:
if(表达式1)
语句1
else if(表达式2)
语句2
…
else if(表达式n-1)
语句n-1
else
语句n
含义·:
当表达式1为真,只执行语句1;当表达式1不为真,表达式2为真,就只执行语句2,如此规则下,如果表达式1到表达式n-1都不为真,则只执行语句n。
int math;cout << "请输入您的数学成绩:" << endl;cin >> math;if (a >= 600) //第一个条件{if (math > 120) //嵌套if语句cout << "恭喜您考上重大" << endl;elsecout << "抱歉,请继续加油" << endl;}else if(math==150) //第二个条件cout << "恭喜您考上重大" << endl;elsecout << "抱歉,请继续加油" << endl;
(三)嵌套if语句
嵌套if语句是指一个if语句的if部分和else部分分别存在一个不同的内嵌if语句,其一般形式如下(注意与多条件if语句的区别):
if(表达式1)
if(表达式2)
语句1
else
语句2
else
if(表达式3)
语句3
else
语句4
含义:
当表达式1为真时,若表达式2同时为真,则执行语句1,否则执行语句2;当表达式1不为真时,若表达式3为真时,执行语句3,否则执行语句4。
if (a >= 600) //第一个条件{if (math > 120) //嵌套if语句cout << "恭喜您考上重大" << endl;elsecout << "抱歉,请继续加油" << endl;}else{if(math==150) //第二个条件cout << "恭喜您考上重大" << endl;elsecout << "抱歉,请继续加油" << endl;}
(四)switch语句
多条件if语句和嵌套if语句在情况较多时,结构比较复杂,不易书写和阅读。switch语句是一种多分支语句,用来实现多分枝选择结构,形式简单,可读性高。其一般形式如下:
switch(表达式)
{
case 常量表达式1:
语句1
case 常量表达式2:
语句2
…
case 常量表达式n:
语句n
default:
语句n+1
含义:
根据表达式的值跳转至选择对应的case语句,并执行对应的语句。当表达式的值没有对应的case语句,则执行default语句的语句n+1。(swtich语句一般需要配合跳转语句使用,详情见跳转语句部分)
int score = 0, b;cout << "请给电影进行打分:" << endl;cin >> score;switch (b){case 2: //只能是整型和字符型,不可以是区间cout << "您认为电影很好看" << endl;break;case 1:cout << "您认为电影一般" << endl;break;case 0:cout << "您认为电影不好看" << endl;break;default:cout << "请输入正确的打分" << endl;}
(五)三目运算符
当程序在某一位置只需要一个进行一个判断选择,可以选用三目运算符进行简化书写。
三目运算符的一般形式为:
(表达式)?(语句1):(语句2)
含义:
当表达式为真时,执行语句1,否则执行语句2。
int a = 10;int b = 20;int c = 0;(a > b) ? (c = a) : (c = b); //取大值//c = (a > b) ? a : b;cout << "c =" << c << endl;//三目运算符选择的是变量,可以继续对其赋值(a > b ? a : b) = 100; //因为b>a,所以表达式返回的是变量b,等价于b=100cout << ("a = ") << a << endl;cout << ("b = ") << b << endl;
二、循环结构
(一)while语句
当程序需要反复执行某一操作时,就可以使用循环控制结构。
while语句的一般形式为:
while(表达式)
语句
含义:
当表达式为真时,执行while语句中的循环体。
特点:
先判断,再执行。
注意:
1、如果循环体存在一个以上的语句,需要用大括号括起来。
2、循环体中需要有使循环结束的语句。
#include<iostream>#include<ctime> //time系统时间头文件,用于随机数生成using namespace std;int main(){//随机生成1-100的随机数,系统提醒玩家猜的数大了还是小了//添加随机数种子,利用当前系统时间生成随机数,防止每次随机数一样srand((unsigned int)time(NULL));int target = rand() % 100+1; //随机生成一个1-100的目标随机数字,伪随机数int num = 0; //猜测值while (num != target){cout << "请输入你猜测的数字:" << endl;cin >> num;if (num > target)cout << "猜大了,你再猜" << endl;if(num < target)cout << "猜小了,你再猜" << endl;}cout << "恭喜你答对了,这数是:" << target << endl;system("pause");return 0;}
(二)do while语句
do while循环结构的一般形式为:
do
语句
while(表达式)
含义:
当程序运行到此处时,先执行一次循环体语句,再进行表达式判断,表达式为真则继续执行循环体,否则结束循环。
特点:
先执行,后判断。
#include<iostream>#include<math.h> //数学计算头文件using namespace std;int main(){//找到所有的水仙花数//水仙花数:三位数字,每一位数的三次方之和等于这个数int num = 100;int a, b, c;do{a = num / 100; //求数字的百位b = (num / 10) % 10; //求数字的十位c = num % 10; //求数字的个位if (num == pow(a, 3) + pow(b, 3) + pow(c, 3)) //pow(x,y)表示x的y次方{cout << num << endl;}num++;} while (num < 1000);system("pause");return 0;}
(三)for循环语句
for语句一般用于已经确定循环次数的循环结构中,同时也可以用于不确定循环次数的循环结构中,在常见情况下是可以代替while语句的。
for语句的一般结构为:
for(表达式1:表达式2:表达式3)
语句
更为一般的形式为:
for(循环变量赋初值:循环条件:循环变量增值)
语句
其中语句就是循环体,当循环体不只一条语句时,需要用大括号括起来。
语句1可以省略,取而代之在for循环前赋初值;语句2省略则表示循环不结束,进入死循环;同样的,语句3也可以省略,但需要保证循环能正常结束。
#include<iostream>using namespace std;int main(){//敲桌子//输出0-100中含有7和七的倍数for (int i = 0; i <= 100; i++){if ((i % 7 == 0) || (i % 10 == 7) || (i / 10 == 7)) //(i % 7 == 0):7的整数倍 (i % 10 == 7):个位数为7 (i / 10 == 7):十位数字为7cout << "敲桌子" << endl;elsecout << i << endl;}system("pause"); //保持在输出窗口return 0;}
三、嵌套循环
循环的嵌套是指一个循环里包含另一个循环。3种循环结构可以相互嵌套。3种循环结构两两组合成的新结构都是合法结构(以for语句嵌套for语句为例):
for(表达式1:表达式2:表达式3)
{
for(表达式4:表达式5:表达式6)
{
…
}
}
外层循环执行一次就需要将内层循环完全执行结束以便。
#include<iostream>using namespace std;int main(){//打印矩阵*图//利用嵌套循环int i = 0, j = 0;for (i = 0; i < 10; i++){for (j = 0; j < 10; j++) //输出行{cout << "* ";//if (j >= 9) //一行输出结束//{// cout << endl; //换行//}}//j = 0; //行计数值归零cout << endl;}system("pause"); //保持在输出窗口return 0;}
四、跳转语句
(一)break语句
一般用于提前结束某一循环过程,其一般形式为:
break;
break语句最为常见时用于switch语句中(代码见switch语句),同时可以用于其他循环语句的循环体中,用于提前结束循环。不能单独用于其他语句中。
switch (num){case 1:cout << "您选择的是简单难度" << endl;break;case 2:cout << "您选择的是普通难度" << endl;break;case 3:cout << "您选择的是困难难度" << endl;break;}
(二)continue语句
continue语句的作用是提前结束本次循环并跳转到下一次循环(循环条件满足情况下),一般结构为:
continue;
用于循环体中使本次循环结束,跳过continue下面的语句直接进入下一次循环判定。注意与break语句的区别,break语句直接结束所在循环结构的所用循环,开始执行其他语句。
#include<iostream>using namespace std;int main(){//continue语句:结束当前循环,不执行循环之中剩余语句,进入下一次循环//输出奇数,不输出偶数int a = 0;for (a; a < 30; a++){if (a % 2 == 0)continue; //用于筛选条件cout << a << endl;}system("pause"); //保持在输出窗口return 0;}
可以将break语句代码块中的break改成continue观察输出结果。
(三)goto语句
goto语句的作用时直接使程序跳转到指定位置处开始执行,形式为:
goto 标志
…
标志:
…
含义:
当程序运行到goto语句时,直接将程序跳转到设置的标志处继续执行,标志可以位于程序的任何位置。可以实现一定的循环效果,不推荐使用,会增大程序阅读的体验和程序的稳定性。
#include<iostream>using namespace std;int main(){//goto语句//直接跳转至标志处//不推荐使用,影响代码阅读体验cout << "请选择关卡难度" << endl;goto flag; //goto 标志cout << "1。简单" << endl;cout << "2。普通" << endl;flag: //标记cout << "3。困难" << endl;system("pause"); //保持在输出窗口return 0;}
END
