【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语言,读者可订阅专栏持续跟进。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏,祝你平安喜乐。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值