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

news2024/11/6 23:35:02

引言

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。它在编程语言中具有举足轻重的地位。
此文为【C语言必知必会】系列第四篇,进行C语言顺序结构的专项练习,结合专题优质题目,带领读者从0开始,深度掌握知识点。

在这里插入图片描述

文章目录

    • 1️⃣ 前言
    • 2️⃣专项练习
    • 5️⃣总结


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语言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1115078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Halcon手眼标定

手眼标定&#xff08;参考&#xff1a;B站王佳琪老师) 这里说的手眼标定中的手指的是机械手或者电机运动的轴&#xff0c;眼表示摄像头 就是两个空间坐标系的转换&#xff0c;这个转换需要一个转换矩阵&#xff0c;那么转换矩阵需要根据两个坐标系的对应的九个点来通过vec_to…

如何用记事本制作一个简陋的小网页(3)——注册信息表

目录 前提须知&#xff1a; 一、表格建立之前&#xff1a; 二、表格的建立&#xff1a; 三、信息表的内容填充&#xff1a; 1.昵称 和 电话 &#xff1a; 2.密码&#xff1a; 3.性别&#xff1a; 4. 爱好&#xff1a; 5.民族&#xff1a; 6. 出生日期&#xff1a; 7.…

Python用selenium实现自动登录和下单的项目实战

本文主要介绍了Python用selenium实现自动登录和下单的项目实战&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧− 前言 学python对selenium应该不陌生吧 Selenium…

什么是低代码开发平台?有什么优势?

目录 一、低代码平台演进 1. 低代码概念 2. 低代码衍生历程 二、为什么要用低代码&#xff1f; &#xff08;1&#xff09;降本提效&#xff0c;便捷开发 &#xff08;2&#xff09;降低开发门槛&#xff0c;扩大应用开发劳动力 &#xff08;3&#xff09;加快数字化转型建设 三…

“第四十五天” 数据结构基本概念

目前看的有关数据结构的课&#xff0c;估计这周就看完了&#xff0c;但感觉差很多&#xff0c;还是和c一样&#xff0c;这样过一下吧。但可能比较急&#xff0c;目前是打算争取寒假回家之前把四大件都先大致过一遍。 数据结构里面有很多新的定义和概念&#xff0c;学到现在&am…

054协同过滤算法的电影推荐系统

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

vue el-dialog弹出框自定义指令实现拖拽改变位置-宽度-高度

前言 在实际开发中我们经常使用el-dialog弹出框做表单&#xff0c;一般情况都是居中。遮挡到了一部分数据 当我们想要查看弹出框下面的数据时&#xff0c;就只能先把弹出框关闭&#xff0c;查看完数据之后在打开弹框 我们通过动态样式&#xff0c;和鼠标事件就可以实现。但自…

OpenLDAP LDIF详解

手把手一步步搭建LDAP服务器并加域 有必要理解的概念LDAPWindows Active Directory 服务器配置安装 OpenLDAP自定义安装修改对象&#xff08;用户和分组等&#xff09;修改olcSuffix 和 olcRootDN 属性增加olcRootPW 属性修改olcAccess属性验证新属性值 添加对象&#xff08;用…

Neo4j入门教程2(看不懂评论区随便骂)

1. ORDER BY create (s4:student{age:21,num:98}),(s5:student{age:22,num:86}),(s6:student{age:23,num:99})承接上文&#xff0c;创建三个学生节点&#xff0c;标签为student1、student2、student3&#xff0c;分别拥有age属性和num属性 match(s:student) return s查看我们…

驱动day2:LED灯实现三盏灯的亮灭

head.h #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_PE_MODER 0x50006000 #define PHY_PF_MODER 0x50007000 #define PHY_PE_ODR 0x50006014 #define PHY_PF_ODR 0x50007014 #define PHY_RCC 0x50000A28#endif 应用程序 #include <stdio.h> #include <sys/…

【C语言必知必会 | 第二篇】编译器的安装与使用

引言 C语言是一门面向过程的、抽象化的通用程序设计语言&#xff0c;广泛应用于底层开发。它在编程语言中具有举足轻重的地位。 此文为【C语言必知必会】系列第二篇&#xff0c;介绍C语言编译器的安装与使用&#xff0c;为之后的学习安装环境基础 文章目录 1️⃣ Dev-C的安装与…

【2024秋招】用友项目管理部门java后端二面2023.9.12

1 rpc框架 1.1 深入讲讲你做的这个rpc框架 答&#xff1a; 1.2 你这个注册中心有实现相关的监控吗 1.2.1 如何实现注册中心有实现相关的监控 是的&#xff0c;我可以为你提供关于RPC注册中心及其监控的相关信息。RPC注册中心是用于管理微服务之间调用关系的中心化服务&…

数学建模入门

一 数学建模简介 数学建模创办于1992年&#xff0c;每年一届&#xff0c;是首批列入“高校学科竞赛排行榜”的19项竞赛之一。2022年&#xff0c;来自全国及英国、马来西亚的1606所院校/校区、54257队(本科49424队、专科4833队)、超过16万人报名参赛。是目前奖项最具有含金量的…

基于材料生成优化的BP神经网络(分类应用) - 附代码

基于材料生成优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于材料生成优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.材料生成优化BP神经网络3.1 BP神经网络参数设置3.2 材料生成算法应用 4.测试结果…

Spring Boot + EasyUI 创建第一个项目(一)

创建一个Spring Boot和EasyUI相结合的项目。 一、构建一个Spring Boot项目 Spring Boot之创建一个Spring Boot项目&#xff08;一&#xff09;-CSDN博客 二、配置Thymeleaf Spring Boot Thymeleaf&#xff08;十一&#xff09;_thymeleaf 设置字体_人……杰的博客-CSDN博客…

轴承寿命相关细节的研究

数据集PHM2012 介绍一下IEEE PHM2012数据集_phm2012轴承数据集-CSDN博客 标签如何设置的? 剩余寿命预测的标签设置_rul 标签_兔子牙丫丫的博客-CSDN博客 参考自刘硕师兄的毕业答辩PPT 图 4.9 训练数据的切分方法 数据段的重叠切分&#xff0c;不仅可以覆盖更多的标签数据…

分布式锁之环境准备

文章目录 分布式锁1. 传统锁回顾1.1. 从减库存聊起1.2. 环境准备 分布式锁 在应用开发中&#xff0c;特别是web工程开发&#xff0c;通常都是并发编程&#xff0c;不是多进程就是多线程。这种场景下极易出现线程并发性安全问题&#xff0c;此时不得不使用锁来解决问题。在多线…

YZ系列工具:YZ11:VBA_窗体缩放

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套一部VBA手册&#xff0c;教程分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的…

京东敏捷实践指南

ISBN: 978-7-121-38257-4 编著&#xff1a;赵卫、王立杰 页数&#xff1a;211页 阅读时间&#xff1a;2023-09-02 推荐指数&#xff1a;★★★★★ 本文主要讲解的是敏捷开发&#xff0c;介绍了敏捷转型的必要性和收益。 介绍的方法有&#xff1a;Scrum、Kanban&#xff08;看板…