C 005-C 选择与分支2
在线练习: http://noi.openjudge.cn/ch0104/
条件语句C 实现
C 有以下条件语句:
使用if指定的代码块将被执行,如果一个指定的条件是真 使用else指定的代码块将被执行,如果相同的条件为假 使用else if指定一个新的条件测试,如果第一个条件为假 使用switch指定的代码许多替代块被执行
else if 语句
如果if语句为假,则执行else if,else if也为假才执行else:
题目描述 根据成绩输出成绩等级ABCDE
题目描述 输入一个成绩,输出这个成绩对应的等级 如大于等于90 为A 每10分一个等级,小于60为E。
输入 输入整数。 输出 分数对应的成绩级别。 样例输入 85 样例输出 B
代码语言:javascript复制#include<iostream>
using namespace std;
int main()
{
int x;
cin>>x;
if ( x >= 90 ) cout<<"A"<<endl;
else if(x >= 80) cout<<"B"<<endl;
else if(x >= 70) cout<<"C"<<endl;
else if(x >= 60) cout<<"E"<<endl;
else cout<<"E"<<endl;
return 0;
}
if嵌套语句
题目描述 输出三个数中的最大值
分析思路:
代码语言:javascript复制#include<iostream>
using namespace std;
int main()
{
int a, b, c;
cout << "请输入a,b,c三个数的值:" << endl;
cin >> a >> b >> c;
if (a > b)
{
if (a > c)
{
cout << "最大的数是:" << a << endl;
}
else
{
cout << "最大的数是:" << c << endl;
}
}
else
{
if (b > c)
{
cout << "最大的数是:" << b << endl;
}
else
cout << "最大的数是:" << c << endl;
}
system("pause");
return 0;
}
题目描述 模拟游戏登录
分析过程:
代码语言:javascript复制#include<iostream>
using namespace std;
int main()
{
int user, pw;
cout << "用户名id和密码,均为纯数字用空格分割:" << endl;
cin >> user >> pw;
if(user==123){
if(pw==456) {cout<<"登录成功";}
else{cout<<"密码错误";}
}
else{cout<<"用户名错误";}
system("pause");
return 0;
}
switch语句
如果比较的条件为多个特定的值,基于switch可以简化代码。 switch语句格式
代码语言:javascript复制#include<iostream>
using namespace std;
int main() {
switch (表达式)
{
case 常量表达式1: [语句块1] [break; ]
case 常量表达式2: [语句块2] [break;]
case 常量表达式3: [语句块3] [break;]
.
.
.
case 常量表达式n: [语句块n] [break;]
[default:语句块n 1;[ break;] ]
}
return 0;
}
三元运算符
题目描述 输出三个数中的最大值-基于3元运算符
基于3元运算符的办法
代码语言:javascript复制#include<iostream>
using namespace std;
int main()
{
int a, b, c, d;
cout << "请输入三个数a,b,c的值:" << endl;
cin >> a >> b >> c;
d = a > b ? a : b;
d = d > c ? d : c;
cout << "三个数中最大的数是:" << d << endl;
system("pause");
return 0;
}
题目描述 根据1-7输出星期1-星期日
代码语言:javascript复制#include <iostream>
using namespace std;
int main()
{
int choice;
cout << "Enter 1,2 ... 7: n";
cin >> choice;
switch (choice)
{
case 1 :
cout<< "星期一";
break;
case 2 :
cout<< "星期二";
break;
case 3 :
cout<< "星期三";
break;
case 4 :
cout<< "星期四";
break;
case 5 :
cout<< "星期五";
break;
case 6 :
cout<< "星期六";
break;
case 7 :
cout<< "星期日";
break;
default:
cout << "请输入1-7的整数n";
}
return 0;
}
switch后面必须有()和{}; 在()中是需要判断的语句和变量(例如上面是判断sum变量的值); 在{}中是switch核心程序块,用于判断处理; 在{}中就是使用case关键字来判断; case后面跟的必须是常量表达式(包括字符表达式)(格式如:case 1:语句;[break;]),表达式可以是C 任何的合法语句,但是其值只能是字符型常量或者整型常量,该常量表达式是用来判断()里面的表达式的值是否与该常量表达式的值相等; 每个分支case的常量表达式的值必须与某一值严格相等; case 常量表达式: 其冒号‘:’后面就是判断为True后所要执行的语句,而且最容易让新学者犯错的是,在执行语句后没有加 break 这样可能会导致的错误的结果,如果没有加break的话会继续执行下去,甚至会把其他case后面的语句也执行了,这个结果会在后面讲; 所有的case 后面可以加上“ default:语句块;break; ” 而且default可以加也可以不加; 注意 case 后面的 常量表达式的值都是不能相等的;(若判断的值范围较大,则显然是用if语句优于switch语句。) 在判断过程中发现每个分支case的常量表达式都不符合,则如果有default语句到时候就会执行default语句后面的的语句,如果default没有,则什么也不执行; 而且,若switch的某一分支的语句不止一句,则所要求的的多条语句也不用写成语句块的形式,只需在最后的语句后面加上break;即可表示在此case的执行语句结束;
案例练习
题目描述 给定三个正整数,分别表示三条线段的长度,判断这三条线段能否构成一个三角形。
题目描述 给定三个正整数,分别表示三条线段的长度,判断这三条线段能否构成一个三角形。
输入 输入共一行,包含三个正整数,分别表示三条线段的长度,数与数之间以一个空格分开。 输出 如果能构成三角形,则输出“yes” ,否则输出“no”。 样例输入 3 4 5 样例输出 yes
代码语言:javascript复制#include <iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
if(a b>c && a c>b && c b>a) cout<<"yes";
else cout<<"no";
return 0;
}
题目描述 判断是否式闰年。
题目描述 判断某年是否是闰年。
输入 输入只有一行,包含一个整数a(0 < a < 3000) 输出 一行,如果公元a年是闰年输出yes,否则输出no 样例输入 2006 样例输出 no
代码语言:javascript复制#include <iostream>
using namespace std;
int main()
{
int a;
cin>>a;
if(a@0==0 || a0!=0 && a%4==0) cout<<"yes";
else cout<<"no";
return 0;
}
在线练习:
http://noi.openjudge.cn/ch0104/ 14 18 19 20 21题
总结
本系列为C 学习系列,会介绍C 基础语法,基础算法与数据结构的相关内容。本文为C 条件表达式,包括if else if 和if 嵌套 switch语句和三元运算符邓,并介绍了分支语句的相关案例练习。