古典家具公司网站模板,wordpress用户注册邮件验证,网站开发课设心得,网站被别人做镜像问题引出
我们在程序设计往往会遇到如下的问题#xff0c;比如下的函数的计算。 也就是我们是必须要通过一个条件的结果来选择下一步的操作#xff0c;算法上属于一个分支结构#xff0c;C语言中实现分支结构主要使用if语句。
条件判断
根据某个条件成立与否#xff0c…问题引出
我们在程序设计往往会遇到如下的问题比如下的函数的计算。 也就是我们是必须要通过一个条件的结果来选择下一步的操作算法上属于一个分支结构C语言中实现分支结构主要使用if语句。
条件判断
根据某个条件成立与否决定是否执行指定的任务操作。 条件判断的结果是逻辑值布尔类型值也就是说分支语句的条件可以使用关系表达式和逻辑表达式在程序中用真1和假0来表示。
关系运算及其表达式
关系运算符及其优先次序
关系运算符是用来进行比较的符号C语言中提供了6种关系运算符
关系表达式
关系表达式是指用关系运算符将两个表达式连接起来组成的有意义的式子。 在C语言中用1非0表示关系表达的值为真条件成立0表示关系表达式的值为假条件不成立即关系表达式的值要么是1条件成立要么是0条件不成立
问题引出
有时只用一个简单的关系表达式无法完整地表达一个条件。 其中的条件需要用逻辑表达式来表示x!0a!0 ,就是一种逻辑运算符。
逻辑运算及其表达式
逻辑运算符及其优先级
逻辑运算符是构成复杂的复合条件的运算符。 C语言中提供3种逻辑运算符
逻辑表达式 用逻辑运算将关系表达式或逻辑量连接起来构成的有意义的式子。 逻 辑 表 达 式 中 各 种 运 算 符 的 优 先 级 顺 序 如 下 !(逻辑非) → 算术运算符 → 关系运算符 → 和|| → 赋值运算符 C语言编译系统在表示逻辑运算符结果时真用1表示假用0表示
案例
假设a 4,b 5,则 !a -- 0
a b -- 1
a || b -- 1
!a || b -- 14 0 || 2 -- 1 ⼩贴⼠ 实际上逻辑运算符两侧的运算对象不但可以是0和1或是0和⾮0⽽且也可以是字符型、实型和指针型等。系统最终是以0和⾮0来判定它们的真假的。例如’c’ ‘d’ 为1
⽤if语句实现分⽀结构
单分支if…
语法
// 语法1舍弃{}if (表达式)
单语句; // 语法2保留{}
if (表达式){}流程图 功能 若表达式值为True(⾮0)则执⾏表达式后⾯的语句执⾏完该语句后继续执⾏if语句后的语句。 若表达式值为0则不执⾏表达式后⾯的语句⽽直接执⾏if语句后⾯的语句。 说明 如果表达式条件表达式后⾯的是复合语句则要⽤⼀对花括号{}括起来。单语句可有可⽆。 案例 要求计算并输出下列分段函数的值 代码
#include stdio.hint main(){// 创建两个变量用来存储两个操作数double x,y -2; // 我们给y赋初始值假定x 0// 从控制台输入xprintf(请输入一个整数作为x的值:\n);scanf(%lf,x);// 校验if (x 0) y 2;printf(x%lf,y%lf\n,x,y);return 0;
}案例 要求有a,b,c三个数要求从控制台输⼊并且求出最⼤值 分析
通过控制台给a,b,c赋值创建⼀个变量max,⽤来存放a,b,c中的最⼤值默认a是最⼤值这样可以减少⼀次判断让b,c和max进⾏⽐较将最⼤值存⼊max 代码 /************************************************************************* File Name: Author:
demo02.cfpf Description: 单分支 if.. Created Time: 2024年11月29日 星期五 10时59分45秒
************************************************************************/#include stdio.hint main(int argc,char *argv[]){// 要求求a,b,c中的最大值
// 创建三个变量用来存放a,b,c的值
int a,b,c;// 创建一个变量用来存放max的值
printf(请在控制台输入三个整数\n);scanf(%d%d%d,a,b,c);// 创建一个变量用来存放max的值
int max a;// 让最大值分别和b,c进行比较
if (max b){max b; // 如果max b就让b作为a,b中的最大值
}if (max c){max c; // 其实a,b中的最大值和c比}printf(%d,%d,%d中的最大值是%d\n,a,b,c,max);return 0;}有可能产⽣的问题 scanf()同时输⼊多个变量时默认时使⽤空格或者回⻋换⾏。 在变量赋值前使⽤变量导致运算结果错误莫名输出随机数
双分支if…else…
语法 // 舍弃{}if 表达式
单语句1;else
单语句2;// 针对以上写法我们可以使用三目表达式表达式 ? 单语句1 : 单语句2// 保留{}if (表达式){
单语句或者复合语句1;}else{
单语句或者复合语句2;}注意 else语句本身不能单独存在必须依赖于if配对使用 流程图 功能 若表达式的值为1则执行语句1否则执行语句2。不管条件表达式成不成立都要执行一个语句其次需要 主要的是语句1和语句2都可以是复合语句。 说明 if…else…结构可以实现双分支选择结构。C语言允许if…else…结构嵌套。即在语句1与语句2中又可以包含完 整的if语句或者if…else结构并且这种嵌套可以多层为了保证程序的执行效率建议不超过4层。 利用if…else结构的嵌套可以实现多分支选择结构。
案例 要求计算并输出下列分段函数的值 流程图 代码
/************************************************************************* File Name: Author:
demo03.cfpf Description: 双分支 if..else.. Created Time: 2024年11月29日 星期五 11时42分39秒
#include stdio.h************************************************************************/int main(int argc,char *argv[]){}// 需求计算并输出下列分段函数的值
// 创建两个变量存放x,y的值
int x,y;// 通过键盘录入数据
printf(请输入一个整数\n);scanf(%d,x);// 校验
if (x 0)y -2;elsey 2;// 打印输出测试结果
printf(x%d,y%d\n,x,y);return 0;}改造为三⽬运算符的写法 /************************************************************************* Created Time: 2024年11月29日 星期五 11时42分39秒
************************************************************************/int main(int argc,char *argv[])14// 需求计算并输出下列分段函数的值
// 创建两个变量存放x,y的值int x,y;// 通过键盘录入数据
printf(请输入一个整数\n);scanf(%d,x);// 校验
// 三目表达式
y x 0 ? -2 : 2;// 打印输出测试结果
printf(x%d,y%d\n,x,y);return 0;}多分支if…else…if…else
语法
写法1嵌套if..else..(不推荐)if(表达式1) 语句1;elseif(表达式2) 语句2;else...elseif(表达式n) 语句n;else 语句n1;
写法2并列if..else..if....else..(推荐)
if(表达式1) 语句1;else if(表达式2) 语句2;...[else if(表达式n) 语句n;][else 语句n1;]案例 要求根据学⽣的成绩对学⽣进⾏分级 成绩 90,A 成绩 80,B 成绩 60,C 成绩 60,D 代码
#include stdio.h// 方式1借助于执行顺序减少判断的条件
int if_test1(){// 创建一个变量用来存放输入的成绩int score;// 通过控制台输入一个成绩printf(请输入一个整数\n);scanf(%d,score);// 校验分级 95if(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 60 score 80){printf(C\n);}else if(score 80 score 90){}printf(B\n);else if(score 90){}else
{}}printf(A\n);printf(D\n);int main(int argc,char *argv[]){}if…else结构注意点
if…else结构中的语句1与语句2都可以是复合语句。 在if…else结构中语句1与语句2都可以是空语句。
if语句的嵌套 注意 ① else 总是与前面最近的未配对的if配对使用 ② 可通过增加{}来确定配对关系 ③ 只要if中包含if都属于是if语句的嵌套
/************************************************************************* 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 stdio.h// 方式1借助于执行顺序减少判断的条件
int if_test1(){// 创建一个变量用来存放输入的成绩
int score;// 通过控制台输入一个成绩
printf(请输入一个整数\n);scanf(%d,score);// 校验分级 95if(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 main(int argc,char *argv[]){if_test1();if_test2();return 0;}如何摘除⼀个三位数中的每⼀位 实现123个位数123 % 10 3;⼗位数123 % 100 / 10 2123 / 10 % 10 2;百位数123 / 100 1
⽤switch语句实现分⽀结构
我们可以使用switch实现多分支选择结构多分支也被称作多路分支 语法 switch(表达式){case 常量表达式1:
语句1;break;case 常量表达式2:
语句2;break;...case 常量表达式n:
语句n;break;default:
语句n1;break;// 一般省略
}流程图 说明 ① switch后括号内的表达式可以是任何类型的表达式但是表达式的值必须为 整数值整型字符型枚 举 ② 若表达式的值与某个常量表达式的值相等时执行此case后面的语句若没有相等的值时执行 default后面的语句 ③ 每个case后面的常量表达式的值必须不相同否则出现矛盾。 ④ 各个case和default出现的次序不影响执行结果。 ⑤ case后面的语句中如果没有break语句则执行完本case后的语句会接着执行下面的case; ⑥ 多个case公用一组语句。 案例 要求按照考试成绩的等级输出百分制分数段 分析 设分段原则如下 A级为85~100段 B级为70~84段 C级为60~69段 D级为60段 输⼊其它字符时为错。 代码
************************************************************************* File Name: demo05.c Author: 冯鹏飞 Description: 多分支switch Created Time: 2024年11月29日 星期五 15时51分59秒************************************************************************/#include stdio.h/*- 要求按照考试成绩的等级输出百分制分数段- 分析设分段原则如下 A级为85~100段 B级为70~84段 C级为60~69段 D级为60段 输入其它字符时为错。*/int switch_test1(){// 创建一个变量用来存放考试等级char grade;// 通过控制台输入一个字符printf(input grade\n);scanf(%c,grade);// 校验根据等级输出分段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);}}int main(int argc,char *argv[]){}