复习C++(day02)

复习C++(day02),第1张

C++基础
  • 2.1 程序流程结构
    • 2.1.1 顺序结构
    • 2.1.2 选择结构
      • if语句
      • 三目运算符
      • switch语句
    • 2.1.3 循环结构
      • while循环语句
      • do...while循环语句
      • for循环
      • 嵌套循环
    • 2.1.4 跳转语句
      • break语句
      • continue语句
      • goto语句

2.1 程序流程结构 2.1.1 顺序结构

含义:程序按顺序执行,不发生跳转。


2.1.2 选择结构

含义:依据条件是否满足,有选择地执行相应功能。


if语句

作用:执行满足条件的语句。



if语句的三种形式:

  • 单行格式if语句
  • 多行格式if语句
  • 多条件的if语句

1、单行格式if语句:

if(条件){
    条件满足执行的语句
}

2、多行格式if语句:

if(条件){
     条件满足执行的语句
}else{
     条件不满足执行的语句
}

例1

//判断用户输入的分数是否大于等于60分,输出及格或不及格
int score = 0;
cout << "请输入分数:" << endl;
cin >> score;
if (score > 60) {
	cout << "及格" << endl;
}
else {
	cout << "不及格" << endl;
}

运行结果:


3、多条件的if语句

if(条件1){
      条件1满足执行的语句
}else if(条件2){
      条件2满足执行的语句
}else{
     都不满足执行的语句
}

例2

//判断用户输入的分数,大于等于60分,输出及格,否则输出不及格
//大于等于75,输出中等
//大于等于85,输出良好
//大于等于95,输出优秀

int score = 0;
cout << "请输入分数:" << endl;
cin >> score;
if (score >= 60 && score<75) {
	cout << "及格" << endl;
}
else if(score>=75 && score<85){
	cout << "中等" << endl;
}
else if (score >= 85 && score < 95) {
	cout << "良好" << endl;
}
else if(score>=95){
	cout << "优秀" << endl;
}
else {
	cout << "不及格" << endl;
}

运行结果:

补充:嵌套if语句(精准判断)

例3

/*
用户输一个高考分数,分数>600,则考上一本;分数>500,则考入二本;分数>400,则考入三本;
其余视为未考上本科;
在一本分数中,分数>700分,考入北大;分数>650分,考入清华;分数>600分,考入人大。


*/ int score = 0; cout << "请输入您的高考分数:" << endl; cin >> score; if (score > 600) { if (score <=650) { cout << "考上一本,并考入人大" << endl; } else if(score<=700){ cout << "考上一本,并考入清华" << endl; } else { cout << "考上一本,并考入北大" << endl; } } else if (score > 500 && score <= 600) { cout << "考入二本" << endl; } else if (score > 400 && score <= 500) { cout << "考入三本" << endl; } else { cout << "很抱歉,未考上" << endl; }

运行结果:

三目运算符

语法:表达式1 ? 表达式2 :表达式3
解释:

  1. 如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
  2. 如果表达式1的值为假,执行表达式3,并返回表达式3的结果。


例4

int a = 20;
int b = 10;
cout << (a > b ? a : b) << endl;

在C++中三目运算符返回的是变量,可以继续赋值

switch语句

作用:执行多条件分支语句
语法:

switch(表达式1){
      case 结果1:执行语句;break;
      case 结果2:执行语句;break;
      ...
      default:执行语句;break;
 }

break:表示退出当前分支。


如果不加的话,会一直执行到底。


例5

/*
给电影打分
10~9 经典
8~7 非常好
6~5 一般
5以下 烂片
*/
int score = 0;
cout << "请给电影打分:" << endl;
cin >> score;
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;
}

运行结果:

switch
缺点:判断的时候只能是整型或字符型,不可以是一个区间
优点:结构清晰,执行效率高

2.1.3 循环结构 while循环语句

语法:

while(循环条件){循环语句}

解释:只要循环条件结果为真,就执行循环语句。


例6(打印数字)

//在屏幕中打印0~9这10个数字
int i = 0;
while (i < 10) {
	cout << i++ << " ";
}

运行结果:

例7(猜数字)

//猜数字
//添加随机数种子(加头文件),利用当前系统时间生成随机数,让其变化
srand((unsigned int)time(NULL));
int n = rand() % 100 + 1;
cout << "请玩家猜测一个数字:" << endl;
while (true) {
	int num = 0;
	cin >> num;
	if (num > n) {
		cout << "猜的数字过大,请重新输入\n" << endl;
	}
	else if (num == n) {
		cout << "恭喜您,猜对了" << endl;
		break;//退出循环
	}
	else {
		cout << "猜的数字过小,请重新输入\n" << endl;
	}
}

运行结果:

srand()可用来设置rand()产生随机数时的随机数种子。


通过设置不同的种子,我们可以获取不同的随机数序列。


可以利用srand((unsigned int)(time(NULL))的方法,利用系统时钟,产生不同的随机数种子。


不过要调用time(),需要加入头文件< ctime >

  • 取得(0,x)的随机整数:rand()%x;
  • 取得(a,b)的随机整数:rand()%(b-a);
  • 取得[a,b)的随机整数:rand()%(b-a)+a;
  • 取得[a,b]的随机整数:rand()%(b-a+1)+a;
  • 取得(a,b]的随机整数:rand()%(b-a)+a+1;
  • 取得0-1之间的浮点数:rand()/double(RAND_MAX)。


do…while循环语句

语法:

do{循环语句} while(循环语句);//切莫忘分号

与while的区别:do…while会先执行一次循环语句;while先判断条件。


例8(打印数字)

int n = 0;
do
	cout<<n++<<" ";
while (n < 10);
return 0;

运行结果:

例9(水仙花数)

//打印100~1000的水仙花数
int n = 100;
int a = 0;
int b = 0;
int c = 0;
do {
	a = n / 100;
	b = n / 10 % 10;
	c = n % 10;
	if ((a * a * a + b * b * b + c * c * c) == n) {
		cout << n << endl;
	}
	n++;
} while (n < 1000);

运行结果:

for循环

语法:

for(起始表达式;条件表达式;末尾循环体){循环语句;}

例10(打印0~9)

for(int i=0;i<10;i++){
	cout << i << " ";
}

运行结果:

例11(敲桌子)

for (int i = 1; i <= 100; i++) {
	if (i % 10 == 7 || i / 10 == 7 || i % 7 == 0) {
		cout << "敲桌子" << endl;
		continue;
	}
	cout << i << endl;	
}

运行结果:

嵌套循环

作用:在循环体中再嵌入一层循环,解决一些实际问题

例12(打印*)

//打印*
for (int i = 0; i < 10; i++) {
	for (int j = 0; j < 10; j++) {
		cout << "* ";
	}
	cout << endl;
}

运行结果:

例13(打印乘法口诀表)

//打印乘法口诀表
for (int i = 1; i < 10; i++) {
	for (int j = 1; j < i+1; j++) {
		cout << i << "x" << j << "=" << i * j << " ";
	}
	cout << endl;
}

运行结果:

2.1.4 跳转语句 break语句

作用:用于跳出选择结构或者循环结构
break使用的时机:

  • 出现在switch条件语句中,作用是终止case并跳出switch
  • 出现在循环语句中,作用是跳出当前的循环语句
  • 出现在嵌套循环中,跳出最近的内层循环语句
continue语句

作用:在循环语句中,跳出本次循环中余下未执行的语句,继续执行下一次循环

goto语句

作用:可以无条件跳转语句
语法:

goto 标记;

如果标记的名称存在,执行到goto语句时,会跳转到标记的位置

例14

//goto语句
cout << 1 << endl;
cout << 2 << endl;
goto flag;
cout << 3 << endl;
cout << 4 << endl;
flag://建立标记,跳到此处
cout << 5 << endl;
cout << 6 << endl;

运行结果:

在程序中不建议使用goto语句,以免造成程序流程混乱

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/585385.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存