网站首页模板,网站建设的五大原则,做直播网站找哪家网站,网页设计流程顺序✨个人主页#xff1a; 熬夜学编程的小林
#x1f497;系列专栏#xff1a; 【C语言详解】 【数据结构详解】 分支语句 1、if语句1.1、if1.2、 else1.3、 分支中包含多条语句1.4、嵌套if1.5、 悬空else问题 2、关系操作符3、 条件操作符总结 C语言是结构化的程序设计语言 熬夜学编程的小林
系列专栏 【C语言详解】 【数据结构详解】 分支语句 1、if语句1.1、if1.2、 else1.3、 分支中包含多条语句1.4、嵌套if1.5、 悬空else问题 2、关系操作符3、 条件操作符总结 C语言是结构化的程序设计语言这里的结构指的是顺序结构、选择结构、循环结构C语言是能够实现这三种结构的其实我们如果仔细分析我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。 我们可以使用 if 、 switch 实现分支结构使用 for 、 while 、 do while 实现循环结构。 1、if语句
1.1、if
if 语句的语法形式如下:
if ( 表达式 )语句表达式成立为真则语句执行表达式不成立为假则语句不执行。 在C语言中0为假非0表示真也就是表达式的结果如果是0则语句不执行表达式的结果如果不是0则语句执行。 例子输入⼀个整数判断是否为奇数(不能被2整除的数即%2等于1的数)
#include stdio.h
int main()
{int num 0;scanf(%d, num);if(num % 2 1)//如果括号内的条件成立则执行下面一条语句printf(%d 是奇数\n, num);return 0;
}1.2、 else
如果⼀个数不是奇数那就是偶数了如果任意⼀个整数我们要清楚的判断是奇数还是偶数怎么表示呢 这里就需要 if…else… 语句了语法形式如下
if ( 表达式 )语句1 //为真则执行语句1
else语句2 //否则执行语句2例子输入⼀个整数判断是否为奇数如果是奇数打印是奇数否则打印数偶数(能被2整除的数即%2等于0的数)。
#include stdio.h
int main()
{int num 0;scanf(%d, num);if(num % 2 1)printf(%d 是奇数\n, num);//奇数执行elseprintf(%d 是偶数\n, num);//偶数执行return 0;
}练习输入⼀个年龄 18岁就输出成年否则就输出未成年
#include stdio.h
int main()
{int age 0;scanf(%d, age);if(age18)printf(成年\n);//年龄大于等于18执行elseprintf(未成年\n);//其他情况执行return 0;
}1.3、 分支中包含多条语句
默认在 if 和 else 语句中默认都只控制⼀条语句比如
#include stdio.h
int main()
{int age 0;scanf(%d, age);if(age 18)printf(成年了\n);printf(可以谈恋爱了\n);return 0;
}上面的代码你会发现输入的值不管是18 还是小于18“可以交女朋友了” 都会打印在屏幕上。
这是因为 if 语句只能控制⼀条语句就是 printf(“成年了\n”); if语句为真则打印成年了if语句为假则不打印对于 printf(“可以谈恋爱了\n”); 是独立存在的不管if语句的条件的真假都会被执行。那如果我们要if语句同时控制2条语句怎么办呢 那就要使用 {} 将代码括起来else 后也可以跟上大括号。 如下
#include stdio.h
int main()
{int age 0;scanf(%d, age);if(age 18) //if 后使⽤{} 控制多条语句-这个块也叫程序块或者复合语句{printf(成年了\n);printf(可以交⼥朋友了\n);}return 0;
}#include stdio.h
int main()
{int age 0;scanf(%d, age);if(age 18) //if 后使⽤{} 控制多条语句-这个块也叫程序块或者复合语句{printf(成年了\n);printf(可以交⼥朋友了\n);}else //else 后使⽤{}控制多条语句-这个块也叫程序块或者复合语句{printf(未成年\n);printf(不可以早恋哦\n);}return 0;
}1.4、嵌套if 在 if else 语句中 else 可以与另⼀个 if 语句连用构成多重判断。 比如要求输入⼀个整数判断输入的整数是0还是正数或者负数。请看如下代码
#include stdio.h
int main()
{int num 0;scanf(%d, num);if(num 0)printf(输入的数字是0\n);else if(num 0) //这⾥的if 相当于嵌套在els语句中形成了嵌套结构printf(输入的数字是正数\n);elseprintf(输入的数字是负数\n);return 0;
}比如 输入⼀个整数如果是正数再判断是奇数还是偶数并输出如果不是正数则输出非正数。
#include stdio.h
int main()
{int num 0;scanf(%d, num);if(num0){if(num%2 0)printf(偶数\n);elseprintf(奇数\n);}else{printf(⾮正数\n);}return 0;
}以上就是嵌套if语句的语法有了嵌套if语句就可以完成更多复杂逻辑的判断。
练习
输⼊⼀个⼈的年龄
如果年龄18岁打印少年
如果年龄在18岁⾄44岁打印⻘年
如果年龄在45岁⾄59岁打印中⽼年
如果年龄在60岁⾄89岁打印⽼年
如果90岁以上打印⽼寿星//⽅法1
#include stdio.h
int main()
{int age 0;scanf(%d, age);if(age18)printf(少年\n);else if(age44)printf(⻘年\n);else if(age59)printf(中老年\n);else if(age90)printf(老年\n);elseprintf(老寿星\n);return 0;
}
//带上⼤括号更容易看明⽩
#include stdio.h
int main()
{int age 0;scanf(%d, age);if(age18){printf(少年\n);}else{if(age44){printf(⻘年\n);}else{if(age59){printf(中老年\n);}else{if(age90)printf(老年\n);elseprintf(老寿星\n);}}}return 0;
}1.5、 悬空else问题
如果有多个 if 和 else 可以记住这样⼀条规则 else 总是跟最接近的 if 匹配。 我们首先从下面代码开始
#include stdio.hint main(){int a 0;int b 2;if(a 1)if(b 2)printf(hehe\n);elseprintf(haha\n);return 0;}程序运行的结果是啥 很多初学者上来以判断 a 是 0不等于 1 那就执行 else 子句打印 haha 但是当你去运行代码输出的结果是啥都不输出。
为什么呢 这就是悬空 else 的问题如果有多个 if 和 else 可以记住这样⼀条规则 else 总是跟最接近的 if 匹配。 实际上 else 是和第⼆个 if进行匹配的这样后边的 if…else 语句是嵌套在第⼀个 if 语句中的如果第⼀个 if 语句就不成立嵌套 if 和 else 就没机会执行了最终啥都不打印。
如果代码改成下面这样就更加容易理解了。
#include stdio.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匹配可以这样修改代码
#include stdio.h
int main()
{int a 0;int b 2;if(a 1){if(b 2)printf(hehe\n);}else{printf(haha\n);}return 0;
}只要带上适当的大括号代码的逻辑就会更加的清晰所以大家以后在写代码的时候要注意括号的使用让代码的可读性更高。
2、关系操作符 C 语言用于比较的表达式称为 “关系表达式”relational expression里面使用的运算符就称为“关系运算符”relational operator主要有下面6个。 • 大于运算符 • 小于运算符 • 大于等于运算符 • 小于等于运算符 • 相等运算符 • ! 不相等运算符
下面是⼀些例子。
a b;//a等于b 注意不要跟赋值运算符混淆
a ! b;//a不等于b
a b;//a小于b
a b;//a大于b
a b;//a小于等于b
a b;//a大于等于b关系表达式通常返回 0 或 1 表示真假。 C 语言中 0 表示假所有非零值表示真。比如 20 12 返回 1 12 20 返回 0 。 关系表达式常用于 if 或 while 结构。
if (x 3) {printf(x is 3.\n);
}注意相等运算符 与赋值运算符 是两个不⼀样的运算符不要混淆。有时候可能会不小心写出下面的代码它可以运行但很容易出现意料之外的结果。
if (x 3) ...上面示例中原意是 x 3 但是不小心写成 x 3 。这个式子表示对变量 x 赋值 3 它的返回值为 3 所以 if 判断总是为真。 为了防止出现这种错误有的程序员喜欢将变量写在等号的右边。
if (3 x) ...这样的话如果把 误写成 编译器就会报错。
/* 报错 */
if (3 x) ...另⼀个需要避免的错误是多个关系运算符不宜连用。
i j k上面示例中连续使用两个小于运算符。这是合法表达式不会报错但是通常达不到想要的结果即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算所以实际执行的是下面的表达式。
(i j) k上面式子中i j 返回 0 或 1 所以最终是 0 或 1 与变量 k 进行比较。 如果想要判断变量 j的值是否在 i 和 k 之间应该使用下面的写法。
i j j k//表示且 逻辑运算符 后期会详细讲解 此处的意思为ij 且 jk比如我们输入⼀个年龄如果年龄在18岁~36岁之间我们输出青年。 如果我们这样写
#include stdio.h
int main()
{int age 0;scanf(%d, age);if(18age36){printf(⻘年\n);}return 0;
}当我们输入10的时候依然输出青年如下图
这是因为我们先拿18和age中存放的10比较表达式1810为假 18age 的结果是0再拿0和36比较036为真所以打印了青年 所以即使当age是10的时候也能打印青年 逻辑上是有问题这个代码应该怎么写呢
#include stdio.h
int main()
{int age 0;scanf(%d, age);if(age18 age36){printf(⻘年\n);}return 0;
}以上就是关于关系操作符我们需要掌握的剩下的只要按照字面意思理解使用就行没有特别注意的。
注为逻辑运算符后序会详细讲解现在只需知道它的意思是且。
3、 条件操作符 条件操作符也叫三目操作符需要接受三个操作数的形式如下 exp1 ? exp2 : exp3条件操作符的计算逻辑是如果 exp1 为真 exp2 计算计算的结果是整个表达式的结果如果exp1 为假 exp3 计算计算的结果是整个表达式的结果。
练习1使用条件操作符表示下面代码的逻辑。
#include stdio.h
int main()
{int a 0;int b 0;scanf(%d %d, a, b);if (a 5)b 3;elseb -3;printf(%d\n, b);return 0;
}
//改造后
#include stdio.h
int main()
{int a 0;int b 0;scanf(%d, a);b a5 ? 3:-3;printf(%d\n, b);return 0;
}练习2使用条件表达式实现找两个数中较大值(两个数找较大值不是a大就是b大适合条件表达式)
#include stdio.h
int main()
{int a 0;int b 0;scanf(%d %d, a, b);int m ab ? a : b;//将两个数中较大的数赋值给mprintf(%d\n, m);//打印较大的数return 0;
}总结
本篇博客就结束啦谢谢大家的观看如果公主少年们有好的建议可以留言喔谢谢大家啦