网站开发文档,跨境电商网站开发,wordpress新浪微博主题,无极在线招工招聘信息前言:在前面我们学习了选择结构和条件判断#xff0c;用if语句实现选择结构#xff0c;关系运算符和关系表达式#xff0c;逻辑运算符和逻辑表达式等知识。今天我们将接着上一篇未讲完的继续讲解。 鸡汤:种一棵树最好的时间是十年前#xff0c;其次是现在#xff01;加油各…前言:在前面我们学习了选择结构和条件判断用if语句实现选择结构关系运算符和关系表达式逻辑运算符和逻辑表达式等知识。今天我们将接着上一篇未讲完的继续讲解。 鸡汤:种一棵树最好的时间是十年前其次是现在加油各位一起努力 目录标题 4.1 选择结构的嵌套4.2 用switch语句实现多分支选择结构本章习题与习题讲解 4.1 选择结构的嵌套
在if语句中又包含一个或者多个if语句称为if语句的嵌套。
其一般格式如下:我们应当注意if与else的配对关系
else总是与它上面最近的未配对的if配对。我们来看一道例题 例题:有一阶跃函数(如下图)编写一程序输入一个x的值要求输出对应y的值。 代码:
int main()
{int x 0;int y 0;scanf(%d, x);if (x 0){y -1;}else if (x 0){y 0;}else{y 1;}printf(%d\n, y);return 0;
}4.2 用switch语句实现多分支选择结构 if 语句只有两个分支可供选择而实际问题中常常需要用到多分支的选择。例如学生成绩分类(85分以上为A等70 ~ 84分为B等60 ~ 69分为C等)人口统计分类(按年龄分为老、中、青、年、少、儿童)工资统计分类银行存款分类等。当然这些也可以用嵌套的If语句来处理但如果分支较多则嵌套的if语句层数较多程序冗长而且可读性降低。因此我们可以使用C语言提供的switch语句直接处理多分支的选择。switch语句是多分支选择语句。 看例题要求按照考试成绩的等级输出百分制分数段85分以上为A等70 ~ 84分为B等60 ~ 69分为C等60分以下为D等。成绩等级由键盘输入。
int main()
{char grade 0;scanf(%c, grade);printf(请输入你的成绩\n);switch (grade){case A:printf(你的成绩是:100 ~ 85\n);break;case B:printf(你的成绩是:84 ~ 70\n);break;case C:printf(你的成绩是:69 ~ 60\n);break;case D:printf(你的成绩是:小于60分\n);break;default:printf(输入错误,请重新输入\n);break;}return 0;
}运行结果: 运行流程图: 我们可以看到switch语句的作用是根据表达式的值使跳转流程转到不同的语句switch语句的一般形式如下: 我们再来看一个例题:用 switch语句处理菜单命令。在许多应用程序中用菜单对流程进行控制例如从键盘输入一个’A’或’a’字符就会执行A操作输入一个’B’或’b’字符就会执行B操作。可以按照以下以下思路编写程序。
int sum(int x, int y)
{return x y;
}int diff(int x, int y)
{return x - y;
}int main()
{int a 0;int b 0;char ch 0;printf(请输入三个数前两个输入整数后一个表示执行的操作\n);scanf(%d %d %c, a, b,ch);switch (ch){case A:case a:printf(sum %d\n, sum(a, b));break;case B:case b:printf(diff %d\n, diff(a, b));break;default:printf(输入错误,请重新0入\n);}return 0;
}运行结果:
本章习题与习题讲解
习题1请写出下面各逻辑表达式的值。设a 3b 4c 5 (1) a b c b c 题目分析: 因 a b c为真b c为假所以整体为假所以表达式的值为0 (2a || b c b - c 题目分析: 因为a为真 b c也为真所以 a || b c整体为真又因 b - c整体为真所以a || b c b - c整体为真。故答案为1。 (3) !(a b) !c || 1 题目分析 因为!的优先级在这里的逻辑运算符中是最高的所以优先算!的值,因a b整体为假所以!(a b整体真又因为c为真所以!c为假所以!(ab) !c整体为假又因1为真所以!(a b) !c || 1整体为真故答案为1。 (4) !(x a) y b) 0 题目分析 因x a为真所以!(x a)整体为假,所以!(x a) (y b)这个整体为假所以可以推出!(x a) y b) 0这个整体为假,故而答案为0。 (5) !(a b) c - 1 b c / 2 题目分析:因为!优先级最高所以 !(a b)为假值为0所以 !(a b) c - 1值为4为真又因为b c /2值为真所整体为真。
习题2给出一位不多于5位的正整数要求 (1)求出它是几位数 代码分析:
int digit(int n)
{int count 1;while (n / 10)//任何数最少是一位数{count;}return count;}
int main()
{int num 0;scanf(%d, num);int count digit(num);printf(%d\n, count);return 0;
}运行结果
(2)分别输出每一位数字 代码分析
int digit(int n)
{int count 1;while (n / 10)//任何数最少是一位数{count;}return count;}
int main()
{int num 0;scanf(%d, num);int count digit(num);//求出位数//printf(%d\n, count);int e_digit 0;int i 0;for (i 0; i count; i){e_digit num % 10;//将每一位数保存printf(每一位数是从低位到高位:%d\n, e_digit);num / 10;}return 0;
}运行结果
(3)按逆序输出各位数字例如原数321应输出123。
int digit(int n)
{int count 1;while (n / 10)//任何数最少是一位数{count;}return count;}
int main()
{int num 0;scanf(%d, num);int count digit(num);//求出位数//printf(%d\n, count);int e_digit 0;int i 0;printf(逆序输出的结果是:);for (i 0; i count; i){e_digit num % 10;//printf(每一位数是从低位到高位:%d\n, e_digit);printf(%d, e_digit);num / 10;}return 0;
}运行结果: 结尾好了今天的内容讲解就到了这里了如果各位觉得讲的好的话就给作者一个三连吧讲的不好的地方也麻烦各位多多指出作者都会努力改进的谢谢各位观看。