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