【无标题】if语句的嵌套

if 语句的嵌套
语法:
if (..)
if (..) 语句 1 ;
else 语句 2 ;
else
if (..) 语句 3 ;
else 语句 4 ;
流程图:
注意:
① else 总是与前面最近的未配对的 if 配对使用
可通过增加 {} 来确定配对关系
只要 if 中包含 if ,都属于是 if 语句的嵌套
if (..)
if (..) 语句 1 ;
else 语句 2 ;
else
if (..) 语句 3 ;
else 语句 4 ;
/*************************************************************************
> File Name: demo04.c
> Author: FPF
> Description: 多分支: if..else if....else..
> Created Time: 2024 11 29 日 星期五 14 20 18
************************************************************************/
/**
* 要求:根据学生的成绩,对学生进行分级,
成绩 >= 90,A
成绩 >= 80,B
成绩 >= 60,C
成绩 < 60,D
*/
#include
// 方式 1 :借助于执行顺序,减少判断的条件
int if_test1 ()
{
// 创建一个变量,用来存放输入的成绩
int score ;
// 通过控制台输入一个成绩
printf ( " 请输入一个整数: \n" );
scanf ( "%d" , & score );
// 校验,分级 95
if ( score < 0 || score > 100 )
{
printf ( " 您的输入不合法! \n" );
}
else
{
if ( score >= 90 )
{
printf ( "A\n" );
}
else if ( score >= 80 )
{
printf ( "B\n" );
}
else if ( score >= 60 )
{
printf ( "C\n" );
}
else
{
printf ( "D\n" );
}
// 方式 2 :不借助于执行顺序,做更精准的判断
int if_test2 ()
{
// 创建一个变量,用来存放输入的成绩
int score ;
// 通过控制台输入一个成绩
printf ( " 请输入一个整数: \n" );
scanf ( "%d" , & score );
// 校验,分级
if ( score < 0 || score > 100 )
{
printf ( " 您的输入不合法! \n" );
}
else if ( score >= 60 && score < 80 )
{
printf ( "C\n" );
}
else if ( score >= 80 && score < 90 )
{
printf ( "B\n" );
}
else if ( score >= 90 )
{
printf ( "A\n" );
}
else
{
printf ( "D\n" );
}
}
int if_test3 ()
{
// 需求:判断一个数是奇数还是偶数
int num ;
printf ( " 请输入一个整数: \n" );
scanf ( "%d" , & num );
// 校验
if ( num == 0 )
{
printf ( "0 既不是偶数也不是奇数! " );
}
else
{
if ( num % 2 == 0 )
{
printf ( "%d 是偶数! \n" , num );
}
else
{
printf ( "%d 是奇数! \n" , num );
}
int main ( int argc , char * argv [])
{
if_test1 ();
if_test2 ();
if_test3 ();
return 0 ;
}
小贴士:
如何拆出一个三位数中的每一位:
实现: 123
个位: 123 % 10 = 3
十位: 123 % 100 / 10 = 2
百位: 123 / 100 = 1
经典题:求水仙花数
解释:一个 n 位数各位数的 n 次方和等于这个数本身,复合这种规则的数叫做水仙花数!
switch 语句实现分支结构
我们可以使用 switch 实现多分支选择结构(多分支也被称作多路分支)
语法:
switch ( 表达式 ) // 表达式的结果建议是 字符 或者 整型
{
case 常量表达式 1 : // 这里一般使用 字面量 或者 符号常量 或者 枚举
语句 1 ;
break ;
case 常量表达式 2 :
语句 2 ;
break ;
...
case 常量表达式 n :
语句 n ;
break ;
default :
语句 n + 1 ;
break ; // 一般省略
}
说明:
① switch 后括号内的表达式可以是任意类型的表达式,但是表达式的值尽量是整型、字符型、
switch ( 表达式 ) // 表达式的结果建议是 字符 或者 整型
{
case 常量表达式 1 : // 这里一般使用 字面量 或者 符号常量 或者 枚举
语句 1 ;
break ;
case 常量表达式 2 :
语句 2 ;
break ;
...
case 常量表达式 n :
语句 n ;
break ;
default :
语句 n + 1 ;
break ; // 一般省略
}
若表达式的值与某个常量表达式的值相等时,执行此 case 后面的语句;若没有相等的值时,
执行 default 后面的语句。
每个 case 后面的常量表达式的值必须不相同,否则出现矛盾。
各个 case 出现的次序不影响执行结果。
⑤ case 后面的语句中如果没有 break 语句,则执行完本 case 后的语句后会接着执行下面的
case ,直到遇到下一个 break 为止。
多个 case 公用一组语句。
案例:
需求:按照考试成绩的等级输出百分制分数段
分析:
设分段原则如下:
A 级: 85~100
B 级: 70~84
C 级: 60~69
D 级: < 60
输入其他字符时错误
代码:
/*************************************************************************
> File Name: demo05.c
> Author: FPF
> Description: switch 案例
> Created Time: 2025 02 11 日 星期二 15 55 43
************************************************************************/
#include
// 案例 1 :按照考试成绩的等级输出百分制分数段
int switch_test1 ()
{
// 创建一个变量,用来存放考试等级
char grade ;
// 通过控制台输入一个字符
printf ( " 请输入一个字符: \n" );
scanf ( "%c" , & grade );
// 校验,根据等级输出分数段 Y
switch ( grade )
{
case 'A' :
printf ( "85~100\n" );
break ;
case 'B' :
printf ( "70~84\n" );
break ;
case 'C' :
printf ( "60~69\n" );
break ;
case 'D' :
printf ( "<60\n" );
break ;
default :
printf ( "Error\n" );
break ; // 如果 default switch 的最下面, break 是可以省略,反之不能省略。
}
}
int main ( int argc , char * argv [])
{
switch_test1 ();
return 0 ;
}
案例:
需求:若要求按照百分制考试分数输出等级。
分析:
若分段原则如下:
90~100 A
80~89 B
70~79 C
60~69 D
其他 E
代码
/*************************************************************************
> File Name: demo05.c
> Author: FPF
> Description: switch 案例
> Created Time: 2025 02 11 日 星期二 15 55 43
************************************************************************/
#include
// 需求:若要求按照百分制考试分数输出等级
int switch_test2 ()
{
// 创建一个变量,存储成绩
int score ;
// 通过键盘输入一个成绩
printf ( " 请输入考试成绩: \n" );
scanf ( "%d" , & score );
// 校验,根据成绩输出等级
switch ( score / 10 )
{
case 10 :
case 9 :
printf ( "A\n" );
break ;
case 8 :
printf ( "B\n" );
break ;
case 7 :
printf ( "C\n" );
break ;
case 6 :
printf ( "D\n" );
break ;
default :
printf ( "Error\n" );
}
}
int main ( int argc , char * argv [])
{
switch_test2 ();
return 0 ;
}

你可能感兴趣的:(算法)