【C语言必知必会

您所在的位置:网站首页 判断奇偶c语言选择结构 【C语言必知必会

【C语言必知必会

2024-07-13 14:22| 来源: 网络整理| 查看: 265

引言

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。它在编程语言中具有举足轻重的地位。 此文为【C语言你还没卷起来?】系列之第五篇,介绍C语言的选择结构,结合专题优质题目,带领读者从0开始,深度掌握知识点。

在这里插入图片描述

文章目录 1️⃣ 概念介绍2️⃣代码过渡3️⃣知识点讲解4️⃣编程实例5️⃣总结

1️⃣ 概念介绍

C语言的选择结构是一种编程结构,用于根据条件的真假来选择性地执行代码块。

我们也称选择结构为条件控制语句选择结构

在这里插入图片描述

条件控制语句选择结构分为if-else结构与switch-case结构

简单形式如下:

if(表达式) { 语句 }

其中表达式不限于逻辑表达式或关系表达式,可以是各种表达式,如算术表达式等。当表达式的值为非零时,结果为“真”;当表达式的值为零时,结果为“假”。

if-else结构 基本形式是:

if(表达式) 语句1 else 语句2

当表达式的结果为真(非零)时,执行语句1,执行完后跳到下一语句。当表达式的结果为假(零)时,执行语句2,执行完后顺序执行下一语句。

else-if结构 形式如下:

if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 …… …… else if(表达式n) 语句n else 语句n+1

switch语句一般格式

switch(表达式) { case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; … case 常量表达式n: 语句n; break; default: 语句n+1; break; }

注意事项

case后面常量表达式的值必须互不相等,否则会出现互相矛盾的现象。其类型应该与switch后面表达式的类型相容。 例如不能出现两个case 1

case和常量表达式之间要有空格 case1是错的,case 1是对的

case和default出现可以在任何位置,其先后次序不影响执行结果,但习惯上将default放在switch-case结构的底部。

case提供了执行某一语句序列的入口,起着标号的作用;多个case可以执行同一语句序列。 每个case语句的结尾不要忘了加break,否则将导致多个分支重叠。

不要忘记最后的default分支。即使程序真的不需要default处理,也应该保留语句: default : break;

2️⃣代码过渡

在正式开始选择结构的代码实现之前,我们需要掌握解决问题的数学等思想应该如何向代码思想过渡。

举个例子: 求一个数x的绝对值 数学思想:若x小于0,则其绝对值为-x,否则为x

判断一个整数x是否为5的倍数 数学思想:若x%5等于0,则x是5的倍数,否则不是

将百分制的成绩转换成等级制,100~90->A 数学思想:若成绩≥90,并且成绩≤100,则为A

我们使用C语言解决上面的问题需要使用以下语言元素: 若…则…否则 对应 选择结构 小于等于 对应 关系运算符 并且 对应 逻辑运算符

以下为常见的关系运算符:

在这里插入图片描述在这里插入图片描述

当逻辑表达式成立时,为“真”,用1表示,否则为“假",用0表示。

举个例子: 设a为4,b为6,c为4

在这里插入图片描述 设a为4,b为6,c为5

在这里插入图片描述 注意事项 数学中的 a≤x≤b, 不能改写成C的 ay,就把x赋值给max,否则把y赋值给max,使用以下代码:

if( x>y ) max=x; else //相当于if(x b)?a:b的值就是4,因为2不大于4,所以条件为假,返回b的值。

接着我们讲一讲switch语句形式与执行过程

switch语句是一种用于根据表达式值选择执行不同代码块的选择结构。 它的形式如下:

switch (表达式) { case 值1: // 如果表达式的值等于值1,则执行这里的代码 break; case 值2: // 如果表达式的值等于值2,则执行这里的代码 break; case 值3: // 如果表达式的值等于值3,则执行这里的代码 break; // 可以有更多的case语句 default: // 如果表达式的值没有与上面的任何值匹配,则执行这里的代码 }

switch语句的执行过程如下:

1.将表达式的值与每个case后面的值进行比较,从上到下逐个检查。 2.如果找到匹配的值,则从该位置开始执行与该case语句相关联的代码块,并且在执行完毕之后跳出switch语句。 3.如果没有找到匹配的值,即表达式的值与所有case后面的值均不匹配,则执行default标签下的代码块(如果有)。 4.如果没有default标签或者default标签后面的代码块执行完毕,程序将继续执行紧随switch语句的代码。

举个简单的例子:

int num = 2; switch (num) { case 1: printf("数字是1\n"); break; case 2: printf("数字是2\n"); break; default: printf("数字不是1、2、3\n"); } return 0; }

由于num为2,对应case2,所以程序输出数字是2

需要注意的是:

在每个case后面的值必须是常量表达式,且不允许重复每个case语句块末尾都要使用break语句,用于跳出switch语句,否则会继续执行下一个case的代码块,这可能造成错误。可以有多个case语句块与同一代码块相关联,它们会顺序执行,直到遇到break语句或者switch语句结束。 4️⃣编程实例

综上所述,选择结构是编程中常用的一种控制结构,用于根据条件的真假选择不同的执行路径。

接着我们通过编程实例,进行实战讲解。

题目要求:求一元二次方程的2实数根或2虚根(不考虑a=0的情况)。

例如:输入 a b c: 1 -2 1 ;输出 x1=1.000, x2=1.000 输入 a b c: 3 4 5 ;输出 x1=-0.667+1.106 i, x2=-0.667-1.106 i

1.解题思路

计算判别式 d,即 b*b - 4*a*c 使用 if 条件语句进行判断:

若 d 大于零,则表示方程有两个不同实数根,使用 sqrt 函数计算 d 的平方根,并分别计算出两个实根 x1 和 x2,然后使用 printf 函数输出结果。若 d 小于或等于零,则表示方程没有实数根,使用 sqrt 函数计算 -d 的平方根并取虚部,然后计算出实部 x1,最后使用 printf 函数输出结果。

2.代码实现

// 计算判别式 d = b^2 - 4ac d = (b * b - 4 * a *c); // 判断二次方程的根的情况 if (d > 0) { // 若 d 大于 0,则有两个不同的实数根 d = sqrt(d); x1 = (-b + d) / (2 * a); x2 = (-b - d) / (2 * a); printf("x1 = %.3f, x2 = %.3f\n", x1, x2); } else { // 若 d 小于等于 0,则有虚根 d = sqrt(-d); x1 = -b / (2 * a); // 实部 x2 = d / (2 * a); // 虚部 printf("x1 = %.3f + %.3fi, x2 = %.3f - %.3fi\n", x1, x2, x1, x2); }

3.添加预处理命令等,将代码格式化

#include #include int main() { double a, b, c, d, x1, x2; // 提示用户输入 a、b、c 的值 printf("Enter a b c: "); scanf("%lf %lf %lf", &a, &b, &c); // 计算判别式 d = b^2 - 4ac d = (b * b - 4 * a *c); // 判断二次方程的根的情况 if (d > 0) { // 若 d 大于 0,则有两个不同的实数根 d = sqrt(d); x1 = (-b + d) / (2 * a); x2 = (-b - d) / (2 * a); printf("x1 = %.3f, x2 = %.3f\n", x1, x2); } else { // 若 d 小于等于 0,则有虚根 d = sqrt(-d); x1 = -b / (2 * a); // 实部 x2 = d / (2 * a); // 虚部 printf("x1 = %.3f + %.3fi, x2 = %.3f - %.3fi\n", x1, x2, x1, x2); } return 0; }

编译运行结果:

在这里插入图片描述 通过使用 if 条件语句,程序能够根据不同的情况执行相应的代码,实现了根据判别式的值来判断二次方程的根的类型。

至此,选择结构的编程实例已讲解完成,读者需要躬身实践来掌握C语言选择结构相关知识点。

5️⃣总结

此文为 【C语言必知必会】系列第五篇 ,带领读者掌握C语言的选择结构,带领读者从0开始,深度掌握知识点。

专栏将提供优质C语言编程题,带领读者全方位掌握C语言,读者可订阅专栏持续跟进。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3