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

引言

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、cd = b * b - 4 * a * c;  // 计算方程的判别式,保存在变量d中x1 = (-b + sqrt(d)) / (2 * a);  // 根据一元二次方程的求根公式,计算并保存方程的第一个根x1x2 = (-b - sqrt(d)) / (2 * a);  // 根据一元二次方程的求根公式,计算并保存方程的第二个根x2printf("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、cp =  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.mzph.cn/news/112096.shtml

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

相关文章

[人工智能-综述-12]:第九届全球软件大会(南京)有感 -1-程序员通过大模型增强自身软件研发效率的同时,也在砸自己的饭碗

目录 前言&#xff1a; 一、什么是软件工程 1.1 什么软件工程 1.2 影响软件开发效能的三大因素 1.3 AI大模型是如何提升软件工程全过程效率的 二、AI大模型如何提升软件项目管理效率 2.1 概述 2.2 案例或工具 三、AI大模型如何提升软件开发工具的效率 3.1 概述 3.2 …

Git GUI使用笔记

看这个视频 Git GUI基本使用_哔哩哔哩_bilibili 1 下载 Git-2.42.0.2-64Window64位安装包-最新版资源-CSDN文库 安装软件就一路next就可以 2 配置 空白处右键&#xff0c;选择Open Git Bash here &#xff0c;输入下面两行配置信息 git config --global user.name "Y…

小程序之自定义组件 结合案例(会议OA的会议/投票管理及个人中心的搭建)详解 (4)

⭐⭐ 小程序专栏&#xff1a;小程序开发专栏 ⭐⭐ 个人主页&#xff1a;个人主页 目录 一.前言 二.小程序自定义组件及其使用 2.1 自定义组件的使用 三.使用自定义组件完成会议功能界面的实现 3.1 导航栏的实现 3.2 会议界面内容的实现 四.投票管理界面 五.个人中心 今天…

uview组件使用笔记

图标样式 修改图标的样式 通过color参数修改图标的颜色通过size参数修改图标的大小&#xff0c;单位为rpx 效果图 <u-icon name"photo" color"#2979ff" size"28"></u-icon>图片图标 1.3.0 这里说的图片图标&#xff0c;指的是小…

7、Linux驱动开发:设备-自动创建设备节点

目录 &#x1f345;点击这里查看所有博文 随着自己工作的进行&#xff0c;接触到的技术栈也越来越多。给我一个很直观的感受就是&#xff0c;某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了&#xff0c;只有经常会用到的东西才有可能真正记…

【力扣刷题】回文链表、环形链表、合并两个有序链表

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 刷题篇 一、回文链表1.1 题目描述1.2 思路分…

msvcr120.dll缺失怎么修复,快速修复msvcr120.dll丢失的三个有效方法

随着计算机技术的不断发展&#xff0c;我们在使用软件或游戏时经常会遇到各种错误提示&#xff0c;其中找不到msvcr120.dll就是一种常见的错误。那么&#xff0c;msvcr120.dll是什么&#xff1f;它的作用是什么&#xff1f;如何修复这一错误呢&#xff1f;本文将为您详细介绍几…

7.7亿参数,超越5400亿PaLM!UW谷歌提出「分步蒸馏」,只需80%训练数据|ACL 2023

LLM不实用&#xff0c;小模型蒸馏才是「现实」的大模型应用路线&#xff0c;全面领先微调技术&#xff01;土豪请无视。。。 大型语言模型虽然性能优异&#xff0c;可以用零样本或少样本提示解决新任务&#xff0c;但LLM在实际应用部署时却很不实用&#xff0c;内存利用效率低…

基于Java的汽车维修预约管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

群晖synology DSM 7.2设置钉钉Webhooks通知

现在越来越多的小伙伴都有了自己的Nas系统&#xff0c;为了更加方便的接收Nas的消息&#xff0c;这篇文章带着大家一起配置一个钉钉&#xff08;机器人&#xff09;即时消息通知 首先登录钉钉的开放平台&#xff1a;开发者后台统一登录 - 钉钉统一身份认证 1.创建一个机器人&…

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

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

基于Java的勤工助学管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

CEC2013(MATLAB):白鲨优化算法(White Shark Optimizer,WSO)求解CEC2013(提供MATLAB代码及参考文献)

一、白鲨优化算法原理 白鲨优化算法&#xff08;White Shark Optimizer&#xff0c;WSO&#xff09;由Malik Braik等人于2022年提出&#xff0c;该算法受大白鲨导航和觅食时具有的非凡听觉和嗅觉启发。该算法思路新颖&#xff0c;策略高效。【精选】单目标应用&#xff1a;白鲨…

微信小程序修改van-popup的背景颜色

效果图&#xff1a; van-popup背景颜色渐变 使用深度修改样式不生效&#xff0c;直接在 custom-style里面修改即可&#xff1b; <van-popup position"bottom"custom-style"height:25%;background:linear-gradient(95deg, #F8FCFF -0.03%, #EDF5FF 64.44…

01_introduction_to_diffusers_CN

&#x1f917; Diffusers 介绍 来源&#xff1a;https://github.com/huggingface/diffusion-models-class/blob/main/unit1/01_introduction_to_diffusers.ipynb 预备知识 在进入 Notebook 之前&#xff0c;你需要: &#x1f4d6; 阅读第一单元的材料&#x1f917; 在 Hugg…

第十四章lambda表达式与流处理

14.1 Iambda表达式 Iambda表达式简介 lambda表达式可以用非常少的代码实现抽象方法。 lambda表达式不能独立执行&#xff0c;因此必须实现函数式接口&#xff0c;并且会返回一个函数式接口的对象。 lambdab表达式的语法非常特殊 语法格式&#xff1a; &#xff08;&#xff0…

虚拟机如何联网【NAT】

查看VMWARE的IP地址 #进入root用户 su -#更改虚拟网卡设置界面 vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改ONBOOT为yes BOOTPROTO为static IPADDR为前面的网段 192.168.211.xx (xx为自己设置的&#xff0c;可以随意设置&#xff0c;前面的为前面查看的IP地址的前…

Vue2之防抖_debounce封装函数v-debounce自定义指令(传参/不传)

目录 1、防抖 2、debounce - 封装函数 3、v-debounce 全局自定义指令 1、防抖 推荐文章 &#xff1a; https://blog.csdn.net/weixin_58099903/article/details/119902796 2、debounce - 封装函数 utils / tools.js /*** 函数防抖 是n秒后延迟执行&#xff0c;多用于页面scr…

MATLAB——神经网络参考代码

欢迎关注“电击小子程高兴的MATLAB小屋” %% I. 清空环境变量 clear all clc %% II. 训练集/测试集产生 %% % 1. 导入数据 load spectra_data.mat %% % 2. 随机产生训练集和测试集 temp randperm(size(NIR,1)); %打乱60个样本排序 % 训练集——50个样本 P_train NIR(…

YOLOv8改进实战 | 更换主干网络Backbone之轻量化模型Efficientvit

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…