【C语言必知必会 | 第四篇】一文带你精通顺序结构

简介: 【C语言必知必会 | 第四篇】一文带你精通顺序结构

引言

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

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



1️⃣ 前言

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

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


2️⃣专项练习

对于C语言顺序结构,一个通用的解题思路是画出顺序的流程图,或者逐行写出代码的顺序,再进行代码的实现。

简而言之,就是一步一步来。

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


第一题:输入一个3位正整数,分别输出其个位、十位和百位上的数字之和。

例如:请输入一个3位正整数:135

结果为:数字135的各位上的数字之和为9

请输入一个3位正整数:120

结果为:数字120的各位上的数字之和为3

解题思路如下

1.首先,通过 scanf 函数接收用户输入的一个三位正整数,将其存储在一个变量中。

2.然后,我们需要分别获取该三位正整数的个位、十位和百位上的数字。可以使用取余(%)和整除(/)操作来实现。

  • 个位数:使用取余操作,将输入的数对10取余即可获得。
  • num % 10
  • 十位数:使用整除10再取余的操作,将输入的数除以10得到一个两位数,再对10取余即可获得。
  • (num / 10) % 10
  • 百位数:使用整除100的操作,将输入的数除以100即可获得。
  • num / 100;

3.接下来,将获取到的个位、十位和百位上的数字相加,得到它们的和。

4.最后,使用 printf 函数输出结果,给出和的值。

下面是具体的代码实现:

#include <stdio.h>
int main() {
    int num; // 存储用户输入的三位正整数
    int digit_sum = 0; // 各位数字之和
    printf("请输入一个3位正整数:");
    scanf("%d", &num);
    // 计算个位、十位和百位上的数字之和
    digit_sum += num % 10;       // 个位数
    digit_sum += (num / 10) % 10;  // 十位数
    digit_sum += num / 100;      // 百位数
    printf("数字%d的各位上的数字之和为:%d\n", num, digit_sum);
    return 0;
}

值得注意的是,我们定义了一个名为 digit_sum 的整数变量,并初始化为0。该变量用于保存各位数字之和。

程序运行结果如下:

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


第二题:编写求一元二次方程ax2+bx+c=0的2实数根的程序。

要求:(1)a,b,c由键盘输入(假设a>0且b2-4ac>=0);

(2)请将a,b,c,x1,x2均定义成双精度型变量;

(3)在scanf后立即输出a,b,c的值(显示输入值时请保留3位小数)

(4)显示求出的实数时,请保留2位小数。

解题思路

1.首先,程序提示用户输入方程的系数,通过 printf() 函数输出 "请输入 a b c: "

2.接下来,程序使用 scanf() 函数读取用户输入的系数,按照 %lf 格式将输入的值赋给变量 abc

3.然后,程序计算方程的判别式,保存在变量 d 中。计算方法是使用公式 d = b*b - 4*a*c

4.接着,程序计算方程的两个根 x1x2。根的计算方法是使用一元二次方程的求根公式,其中 sqrt() 函数用于计算平方根。

  • 第一个根 x1 的计算公式为 (-b + sqrt(d))/(2*a)
  • 第二个根 x2 的计算公式为 (-b - sqrt(d))/(2*a)

5.最后,程序使用 printf() 函数按照指定格式输出方程的两个根。格式为 "x1=%.2f, x2=%.2f",其中 %.2f 表示保留两位小数。

代码实现:

#include <stdio.h>  // 包含标准输入输出库的头文件
#include <math.h>   // 包含数学函数库的头文件
int main() {   // 主函数入口
    double a, b, c, d, x1, x2;  // 声明双精度浮点数类型的变量,用于存储方程的系数、判别式和两个根
    printf("请输入 a b c: ");  // 提示用户输入方程的系数
    scanf("%lf %lf %lf", &a, &b, &c);  // 读取用户输入的三个系数,并赋值给变量a、b、c
    d = b * b - 4 * a * c;  // 计算方程的判别式,保存在变量d中
    x1 = (-b + sqrt(d)) / (2 * a);  // 根据一元二次方程的求根公式,计算并保存方程的第一个根x1
    x2 = (-b - sqrt(d)) / (2 * a);  // 根据一元二次方程的求根公式,计算并保存方程的第二个根x2
    printf("x1=%.2f, x2=%.2f", x1, x2);  // 按照指定格式输出方程的两个根,保留两位小数
    return 0;  // 返回0表示程序正常结束
}

程序运行结果:

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


第三题:编写已知三边求三角形的面积的程序(计算公式如下所示。假设输入的三边一定能构成三角形。)

要求:(1)三边a,b,c请定义成整型变量;

(2)p和s请使用双精度型变量;

(3)s输出时请显示2位小数。

解题思路

1.首先,声明整数类型的变量a、b、c,用于存储三角形的三条边的长度。

2.然后,声明双精度浮点数类型的变量p和s,用于存储半周长和三角形的面积。

3.通过printf函数提示用户输入三角形的三条边的长度。

4.使用scanf函数读取用户输入的三个边长,并分别赋值给变量a、b、c。

5.计算半周长p,使用浮点数运算避免整数除法的问题,计算公式为1.0/2*(a + b + c)

6.计算三角形的面积s,使用sqrt函数计算平方根,计算公式为sqrt(p * (p - a) * (p - b) * (p - c))。

7.使用printf函数输出计算得到的三角形的面积s,保留两位小数。

8.最后,使用return 0表示程序正常结束。

代码实现

#include <math.h>   // 包含数学函数库的头文件
#include <stdio.h>  // 包含标准输入输出库的头文件
int main() {   // 主函数入口
    int a, b, c;       // 声明整数类型的变量,用于存储三条边的长度
    double p, s;       // 声明双精度浮点数类型的变量,用于存储半周长和三角形的面积
    printf("请输入三边的长:");  // 提示用户输入三角形的三条边的长度
    scanf("%d %d %d", &a, &b, &c);  // 读取用户输入的三个边长,并赋值给变量a、b、c
    p =  1.0/2*(a + b + c);  // 计算半周长,使用浮点数运算,避免整数除法的问题
    s = sqrt(p * (p - a) * (p - b) * (p - c));  // 计算三角形的面积,使用sqrt函数计算平方根
    printf("三角形的面积为%.2f", s);  // 输出计算得到的三角形的面积,保留两位小数
    return 0;
}

注意:p的运算表达式中出现了1.0/2,是因为1/2等于0,影响正确的计算了!1.0/2才能继续运算!

程序运行结果:

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


5️⃣总结

此文为 【C语言必知必会】系列第四篇 ,通过以题代练的形式带领读者掌握C语言的顺序结构,带领读者从0开始,深度掌握知识点。

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

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

热门文章

最新文章