• 【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 
    
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    值得注意的是,我们定义了一个名为 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   // 包含标准输入输出库的头文件
    #include    // 包含数学函数库的头文件
    
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    程序运行结果:

    在这里插入图片描述

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


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

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

    要求:(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    // 包含数学函数库的头文件
    #include   // 包含标准输入输出库的头文件
    
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

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

    程序运行结果:

    在这里插入图片描述

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


    5️⃣总结

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

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

  • 相关阅读:
    手动部署 OceanBase 集群
    基于SSM框架的大学生自主学习网站的设计与开发/在线学习系统
    高级IO(Linux)
    数字ID和字符串ID互相转化
    编程逻辑入门必备:演绎推理
    C语言结构体的一些鲜为人知的小秘密
    我有一篇Java Stream使用手册,学了就是你的了!
    [数据分析] 矩形树图(Treemap)
    【一些理解】搜广推:推荐、广告、搜索算法的区别、入坑?
    01 - 快速体验 Spring Security 5.7.2 | 权限管理基础
  • 原文地址:https://blog.csdn.net/2301_77485708/article/details/131612470