【C语言你还没卷起来?| 第六篇】一文带你精通选择结构

简介: 【C语言你还没卷起来?| 第六篇】一文带你精通选择结构

引言

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。它在编程语言中具有举足轻重的地位。

此文为【C语言必知必会】系列第六篇,进行C语言选择结构的专项练习,结合专题优质题目,带领读者从0开始,深度掌握知识点。



1️⃣ 前言

在上一讲中,带领读者掌握了选择结构的相关知识点,由于题目和实践是学习的核心,所以开展专项练习十分重要。

在本讲中,将深入剖析几个经典的C语言选择结构练习,带领读者在理论结合实际的基础上更好地学习、吸收、掌握C语言。


2️⃣专项练习

C语言的选择结构主要通过if语句实现,当我们面临需要从多个选项中选择执行某个代码块的情况时,可以使用选择结构来解决问题。

一个通用的解题思路如下:

1.首先,明确需要根据哪些条件进行选择,并确定你要解决的具体问题。

2.根据题目要求,使用逻辑表达式设计判断条件。这些条件可能基于变量值、用户输入、函数的返回值等。

3.利用if语句来实现选择结构。if语句的一般形式为:

if (condition) {
    // 执行条件满足时的代码块
} else {
    // 执行条件不满足时的代码块(可选)
}

根据条件的判断结果,if语句会选择性地执行相应的代码块。

4.如果有多个选项需要判断,可以使用嵌套的if语句或者else if语句来处理。例如:

if (condition1) {
    // 执行条件1满足时的代码块
} else if (condition2) {
    // 执行条件2满足时的代码块
} else {
    // 若上述条件都不满足时的默认代码块(可选)
}

在else if语句中,可以依次添加更多的条件进行判断。

5.在编写选择结构的代码时,要注意条件的逻辑和顺序。确保条件的判断是正确的,并按照预期的顺序进行排列。

6.完成代码后,进行测试和调试以确保其正确性。使用不同的测试用例来验证代码在各种情况下的行为是否符合预期。

以上是一个通用的解题思路,仍需根据具体问题的要求进行适当的调整和扩展。

接下来,让我们开始本节课程的专题练习,读者需要躬身实践来掌握。


第一题:编写已知3边求三角形的面积(计算公式见下)的通用程序。

要求:(1)该程序不仅能处理输入的边长为整数,也能处理实数边长;

(2)若输入的三边能构成三角形,则求其面积并输出;否则,输出“Sorry, it is not a triangle.”;

(3)输出结果保留2位小数;

解题思路如下:

  • 使用一条双分支的if语句来判断输入的三边能否构成三角形,即任意两边之和都必须大于第三边
  • 再使用sqrt函数求面积即可

下面是具体的代码实现:

#include <stdio.h>
#include <math.h>
int main()
{
  double a,b,c,p,s;
  scanf("%lf %lf %lf",&a,&b,&c);
  if(a+b>c&&a+c>b)
  {
    p=0.5*(a+b+c);
    s=sqrt(p*(p-a)*(p-b)*(p-c));
      printf("%.2f",s);
  }
  else{
    printf("Sorry,it is not a triangle.");
  }
  return 0;
}

值得注意的是,我们在代码块中将1/2写作0.5,这样是避免1/2被计算机计算为0,导致结果错误的情况。

程序运行结果如下:

自此,第一题已解题结束。


第二题:将键盘输入3个整数依次存入变量a,b,c中,按升序(a最小、c最大)输出所输入的3个整数。

要求: 输出时a中必须为最小值,c中必须为最大值。

解题思路

先对a和b进行排序,使a和b中较大的值赋给b,较小的值赋给a

if(a>b)
  {
    t=b;
    b=a;
    a=t;
  }

此时b比a大,接下来只需要比较b与c的关系即可:

if(b>c)
  {
    t=c;
    c=b;
    b=t;
  }

代码实现:

#include <stdio.h>
#include <math.h>
int main()
{
  int a,b,c,t;
  scanf("%d %d %d",&a,&b,&c);
  if(a>b)
  {
    t=b;
    b=a;
    a=t;
  }
  if(b>c)
  {
    t=c;
    c=b;
    b=t;
  }
  printf("%d %d %d",a,b,c);
  return 0;
}

程序运行结果:

自此,第二题已解题完毕。


第三题:判断输入的一个3位整数是否为回文数字。

解题思路

先看看什么是回文数字:

无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字

由于题目要求的是判断一个三位整数是否为回文数字,因此我们只需判断第一位与第三位是否相同即可。

怎么知道第一位的数字是多少呢? num/100

怎么知道第三位的数字是多少呢?num%10

代码实现

#include <stdio.h>
int main()
{
  int num;
  scanf("%d",&num);
  if(num/100==num%10)
  {
    printf("%d是回文数",num);
  }
  else 
  {
    printf("%d不是回文数",num);
  }
  return 0;
}

注意:判断数值是否相等时需要使用的运算符为== 而不是=

程序运行结果:

自此,第三题已解题完毕。


第四题:根据如下分段函数,输入的x的值,输出对应的y值,小数点后保留3位小数。

解题思路

使用 if—else 语句并且利用多个else的特性进行题解

if(x>6)
else if(x>0)   这里表示0<x<=6
else    这里表示x<=0
//ToDo

代码实现

#include <stdio.h>
#include <math.h>
int main()
{
double x,y;
scanf("%lf",&x);
if(x>6)
{
  y=5.0/27*(x*x-4*x-6);
}
else if(x>0){
  y=log(16)/log(3)+x;
}
else
{
  y=23.0/7*fabs(7*x*x*x+4);
}
printf("%.2f",y);
return 0;
}

程序运行结果:


5️⃣总结

此文为 【C语言你还没卷起来?】系列之第六篇 ,通过以题代练的形式带领读者掌握C语言的选择结构,带领读者从0开始,深度掌握知识点。

以题代练对于C语言的学习是十分重要的,专栏将持续提供优质C语言理论与实践的学习,带领读者全方位掌握C语言,读者可订阅专栏持续跟进。

目录
相关文章
|
网络协议 编译器 Linux
【C语言】结构体内存对齐:热门面试话题
【C语言】结构体内存对齐:热门面试话题
702 0
|
存储 安全 C语言
【C语言程序设计——选择结构程序设计】预测你的身高(头歌实践教学平台习题)【合集】
分支的语句,这可能不是预期的行为,这种现象被称为“case穿透”,在某些特定情况下可以利用这一特性来简化代码,但在大多数情况下,需要谨慎使用。编写一个程序,该程序需输入个人数据,进而预测其成年后的身高。根据提示,在右侧编辑器补充代码,计算并输出最终预测的身高。分支下的语句,提示用户输入无效。常量的值必须是唯一的,且在同一个。语句的作用至关重要,如果遗漏。开始你的任务吧,祝你成功!,程序将会继续执行下一个。常量都不匹配,就会执行。来确保程序的正确性。
698 10
|
小程序 C语言
【C语言程序设计——基础】顺序结构程序设计(头歌实践教学平台习题)【合集】
目录 任务描述 相关知识 编程要求 测试说明 我的通关代码: 测试结果: 任务描述 相关知识 编程编写一个程序,从键盘输入3个变量的值,例如a=5,b=6,c=7,然后将3个变量的值进行交换,使得a=6,b=7,c=5。面积=sqrt(s(s−a)(s−b)(s−c)),s=(a+b+c)/2。使用输入函数获取半径,格式指示符与数据类型一致,实验一下,不一致会如何。根据提示,在右侧编辑器补充代码,计算并输出圆的周长和面积。
628 10
|
存储 编译器 C语言
【C语言程序设计——选择结构程序设计】求一元二次方程的根(头歌实践教学平台习题)【合集】
本任务要求根据求根公式计算并输出一元二次方程的两个实根,精确到小数点后两位。若方程无实根,则输出提示信息。主要内容包括: - **任务描述**:使用求根公式计算一元二次方程的实根。 - **相关知识**:掌握 `sqrt()` 函数的基本使用方法,判断方程是否有实根。 - **编程要求**:根据输入的系数,计算并输出方程的根或提示无实根。 - **测试说明**:提供两组测试数据及预期输出,确保代码正确性。 - **通关代码**:包含完整的 C 语言代码示例,实现上述功能。 通过本任务,你将学会如何处理一元二次方程的求解问题,并熟悉 `sqrt()` 函数的使用。
546 5
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】
本任务要求从键盘输入三个数,并按从小到大的顺序排序后输出。主要内容包括: - **任务描述**:实现三个数的排序并输出。 - **编程要求**:根据提示在编辑器中补充代码。 - **相关知识**: - 选择结构(if、if-else、switch) - 主要语句类型(条件语句) - 比较操作与交换操作 - **测试说明**:提供两组测试数据及预期输出。 - **通关代码**:完整代码示例。 - **测试结果**:展示测试通过的结果。 通过本任务,你将掌握基本的选择结构和排序算法的应用。祝你成功!
469 4
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
1039 16
C语言------选择结构
这篇文章是C语言选择结构的入门实训,包括多个练习题及其源代码,旨在帮助读者熟练掌握条件语句和选择结构程序设计方法,并熟悉switch语句和程序调试过程。
C语言------选择结构
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】求阶跃函数的值(头歌实践教学平台习题)【合集】
本任务要求输入x的值,计算并输出特定阶跃函数的结果。主要内容包括: 1. **选择结构基本概念**:介绍if、if-else、switch语句。 2. **主要语句类型**:详细解释if、if-else、switch语句的使用方法。 3. **跃迁函数中变量的取值范围**:说明如何根据条件判断变量范围。 4. **计算阶跃函数的值**:通过示例展示如何根据给定条件计算函数值。 编程要求:在右侧编辑器Begin-End之间补充代码,实现阶跃函数的计算和输出。测试说明提供了多个输入及其预期输出,确保代码正确性。最后提供通关代码和测试结果,帮助理解整个过程。
449 0
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】判断一个数是不是5和7的倍数(头歌实践教学平台习题)【合集】
本任务要求输入一个正整数,判断其是否同时是5和7的倍数,若是输出&quot;Yes&quot;,否则输出&quot;No&quot;。内容涵盖选择结构的基本概念、主要语句类型(if、if-else、switch)及条件判断逻辑,帮助理解编程中的分支执行与条件表达式。测试用例包括正数、负数及非倍数情况,确保代码逻辑严谨。通关代码示例如下: ```cpp #include &quot;stdio.h&quot; int main(){ int a; scanf(&quot;%d&quot;, &a); if (a &lt;= 0){ printf(&quo
863 0
|
编译器 C语言 C++
【C语言程序设计——选择结构程序设计】求输入的日期是该年的第几天(头歌实践教学平台习题)【合集】
本任务要求编写程序,根据用户输入的年月日(以空格或回车分隔),计算并输出该天是该年的第几天,需注意判断闰年。主要内容包括: 1. **任务描述**:实现从键盘输入年月日,计算该天是当年的第几天。 2. **相关知识**: - `switch` 结构的基本语法及使用注意事项。 - 判断闰年的条件:能被4整除但不能被100整除,或能被400整除的年份为闰年。 3. **编程要求**:根据提示补充代码,确保程序正确处理输入并输出结果。 4. **测试说 示例代码展示了如何使用 `switch` 语句和闰年判断逻辑来完成任务。通过此练习,掌握 `switch` 语句的应用及闰年判断方法。
827 0