wordpress 中英文站点佛山的网站建设公司
news/
2025/9/25 21:20:13/
文章来源:
wordpress 中英文站点,佛山的网站建设公司,济南房产信息网站官网查询,注册公司流程步骤引言 C语⾔是结构化的程序设计语⾔#xff0c;这⾥的结构指的是顺序结构、选择结构、循环结构。为什么有着三种结构呢#xff0c;大家其实可以想象一下#xff0c;生活中的绝大数事情都可以抽象着三种结构#xff0c;而我们今天要给大家介绍的就是三大结构之一——选择结构…引言 C语⾔是结构化的程序设计语⾔这⾥的结构指的是顺序结构、选择结构、循环结构。为什么有着三种结构呢大家其实可以想象一下生活中的绝大数事情都可以抽象着三种结构而我们今天要给大家介绍的就是三大结构之一——选择结构 选择结构要求程序员指定一个或多个要评估或测试的条件以及条件为真时要执行的语句必需的和条件为假时要执行的语句可选的。它的流程图大致如下 1. 逻辑运算符 在讲解什么是选择结构前我们要先了解一些C语言常见的逻辑运算符。 1.1 逻辑取反运算符 逻辑取反运算符的形式特别简单只需要在需要进行取反操作的变量前 !变量名 假设有变量a它的取反规则如下 1.2 与运算符 在C语言中并不支持数学上的且而是由一个运算符代替的。比如说数学上的0x10写成C语言的形式就是x0x10。 假设有两个变量ab与运算符的运算规则如下 1.3 或运算符 在C语言中或者也有专门的运算符表示——|| 假设有两个变量ab或运算符的运算规则如下 2. if......else语句 2.1 if语句 if语句是最简单选择结构语法之一他的语法结构如下: if ( 表达式 )语句 表达式成⽴为真则语句执⾏表达式不成⽴为假则语句不执⾏。 C语言特别规定非零为真零为假。 例⼦输⼊⼀个整数判断是否为奇数如果是奇数打印是奇数 #includestdio.h
int main()
{int num 0;scanf(%d, num);if (num % 2 1)printf(%d 是奇数\n, num);return 0;
} 首先输入一个值(num)然后进入if语句判断如果num%2等于1条件就为真就会打印反之条件为假就不会进入打印。 特别注意C语言中判断是否相等的运算符是是赋值符号。 2.2 else 我们继续以上面例子为列如果⼀个数不是奇数那就是偶数了如果任意⼀个整数我们要清楚的判断是奇数还是偶数怎么表⽰呢这⾥就需要 if...else... 语句了语法形式如下 if ( 表达式 )语句1else语句2 所以上面的例子可以改写成如下代码 #includestdio.h
int main()
{int num 0;scanf(%d, num);if (num % 2 1)printf(%d 是奇数\n, num);elseprintf(%d 是偶数\n, num);return 0;
} 默认在 if 和 else 语句中默认都只控制⼀条语句 2.3 多个if else的使用 if else 语句也可以多个同时使用构成多个分支形式如下 if(判断条件1){语句块1} else if(判断条件2){语句块2}else if(判断条件3){语句块3}else if(判断条件m){语句块m}else{语句块n} 意思是从上到下依次检测判断条件当某个判断条件成立时则执行其对应的语句块然后跳到整个 if else 语句之外继续执行其他代码。如果所有判断条件都不成立则执行语句块n然后继续执行后续代码。
也就是说一旦遇到能够成立的判断条件则不再执行其他的语句块所以最终只能有一个语句块被执行。
我们以下面这段代码举个例子 #includestdio.hint main()
{int age 0;scanf(%d, age);if (age 0 age 18) {printf(少年\n);}else if (age 18 age 30) {printf(青年\n);}else if (age 30 age 45) {printf(壮年\n);}else if (age 45 age 55) {printf(中年\n);}else if (age 55 age 75) {printf(老年\n);}else {printf(老寿星\n);}return 0;
} 假设我们输入的是40输出 2.4 if else的嵌套 if else也能嵌套使用也就是说if执行的语句中也可以包含if else语句。我们用判断三角形来具体说明这个问题: #include stdio.h
int main()
{int a, b, c;while(scanf(%d%d%d, a, b, c)3){if (a b c a c b b c a) {if (a b b c) {printf(是一个等边三角形);}else if (a b || a c || b c) {printf(是一个等腰三角形);}else if (a * a b * b c * c || a * a c * c b * b || b * b c * c a * a) {printf(是一个直角三角形);}else {printf(是一个普通三角形);}}else {printf(由%d,%d,%d三边组成的不是三角形, a, b, c);}}return 0;
} 2.5 悬空的else 在书写if....else语句时最好每一条语句后面都加上大括号。
至于为什么我们可以以下面这段代码举例 #includestdio.h
int main()
{int a 0;int b 2;if (a 1)if (b 2)printf(hehe\n);elseprintf(haha\n);return 0;
}//输出什么 输出结果 为什么会什么结果都没有输出呢 这就是悬空 else 的问题如果有多个 if 和 else 可以记住这样⼀条规则 else 总是跟最接近的 if 匹配。最下面的else其实是与if(b2)这条语句配对的而不是与if(a1)配对当a等于0自然不会进入任何语句。 3. switch语句 在我们学习多个lf else语句时候就会会发现如果条件多的话整个选择结构就会变得很冗杂所以C语言为了解决这个问题引入了switchswitch 是另外一种选择结构的语句用来代替简单的、拥有多个分支的 if else 语句。 比如说下面这段代码就会显得十分冗余 int main()
{int day 0;scanf(%d, day);if(day 1)printf(星期一\n);else if(day 2)printf(星期二\n);else if (day 3)printf(星期三\n);else if (day 4)printf(星期四\n);else if (day 5)printf(星期五\n);else if (day 6)printf(星期六\n);elseprintf(星期天\n);return 0;
} 3.1 switch的基本规则 switch的语法如下 switch (expression) {case value1: statementcase value2: statementdefault: statement} switch语句必须遵循下面的规则 switch语句中的括号是一个常量表达式必须是一个整型或枚举类型。 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。 3.2 break的重要性 学习完switch的语法之后然后我们可以将最开始的例子改造 int main()
{int day 0;scanf(%d, day);switch (day){case 1:printf(星期一\n);case 2:printf(星期二\n);case 3:printf(星期三\n);case 4:printf(星期四\n);case 5:printf(星期五\n);case 6:printf(星期六\n);case 7:printf(星期天\n);}return 0;
} 但是当我们一运行代码就会发现问题 为什么输入1反而后续的结果都输出了呢?
原因是 switch 语句也是分⽀效果的只有在 switch 语句中使⽤ break 才能在跳出 switch 语句如果某⼀个 case 语句的后边没有 break 语句代码会继续玩下执⾏有可能执⾏其他 case语句中的代码直到遇到 break 语句或者 switch 语句结束。
所以在 switch 语句中 break 语句是⾮常重要的能实现真正的分⽀效果。
当然 break 也不是每个 case 语句都得有这就得根据实际情况来看了。
改造代码后; int main()
{int day 0;scanf(%d, day);switch (day){case 1:printf(星期一\n);break;case 2:printf(星期二\n);break;case 3:printf(星期三\n);break;case 4:printf(星期四\n);break;case 5:printf(星期五\n);break;case 6:printf(星期六\n);break;case 7:printf(星期天\n);break;}return 0;
} 3.3 default的使用 在使⽤ switch 语句的时候我们经常可能遇到⼀种情况⽐如 switch 后的表达式中的值⽆法匹配代码中的 case 语句的时候这时候要不就不做处理要不就得在 switch 语句中加⼊default ⼦句。 其语法如下 switch (expression) {case value1: statementcase value2: statementdefault: statement} switch 后边的 expression 的结果不是 value1 也不是 value2 的时候就会执⾏default ⼦句。
就⽐如前⾯做的打印星期的练习如果 day 的输⼊不是1~7的值如果我们要提⽰输⼊错误则可以这样完成代码 #includestdio.h
int main()
{int day 0;scanf(%d, day);switch (day){case 1:printf(星期一\n);break;case 2:printf(星期二\n);break;case 3:printf(星期三\n);break;case 4:printf(星期四\n);break;case 5:printf(星期五\n);break;case 6:printf(星期六\n);break;case 7:printf(星期天\n);break;default :printf(输入错误\n);break;}return 0;
} 在 switch 语句中 case 语句和 default 语句是没有顺序要求的只要你的顺序是满⾜实际需求的就可以。不过我们通常是把 default ⼦句放在最后处理的。 4. 综合练习 4.1 题目一 输入三个整数x,y,z请把这三个数由小到大输出。 #include stdio.h
int main()
{int x, y, z, t;printf(请输入三个数字:\n);scanf(%d%d%d, x, y, z);if (x y) { /*交换x,y的值*/t x; x y; y t;}if (x z) { /*交换x,z的值*/t z; z x; x t;}if (y z) { /*交换z,y的值*/t y; y z; z t;}printf(从小到大排序: %d %d %d\n, x, y, z);return 0;
} 4.2 题目二 输入某年某月某日判断这一天是这一年的第几天 #include stdio.h
int main()
{int day, month, year, sum, leap;printf(请输入年、月、日格式为年,月,日2015,12,10\n);scanf(%d,%d,%d, year, month, day); // 格式为2015,12,10switch (month) // 先计算某月以前月份的总天数{case 1:sum 0; break;case 2:sum 31; break;case 3:sum 59; break;case 4:sum 90;break;case 5:sum 120;break;case 6:sum 151;break;case 7:sum 181; break;case 8:sum 212; break;case 9:sum 243;break;case 10:sum 273; break;case 11:sum 304; break;case 12:sum 334; break;default:printf(输入错误\n); break;}sum sum day; // 再加上某天的天数if (year % 400 0 || (year % 4 0 year % 100 ! 0)) {// 判断是不是闰年leap 1;}else {leap 0;}if (leap 1 month 2) { // *如果是闰年且月份大于2,总天数应该加一天sum;}printf(这是这一年的第 %d 天。, sum);printf(\n);return 0;
} 文章转载自Betty’sSweet 原文链接https://www.cnblogs.com/bett/p/18028037 体验地址引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/917545.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!