P3-1.【结构化程序设计】第一节——知识要点:算法、顺序结构程序设计、if语句的语法结构及各种用法

讲解视频:

P3-1.【结构化程序设计】第一节——知识要点:算法、顺序结构程序设计、if语句的语法结构及各种用法

知识要点:算法、顺序结构程序设计、if语句的语法结构及各种用法

一、算法、顺序结构程序设计任务分析

知识要点:算法、顺序结构程序设计

输入两个整数,求它们的商和余数。

1.可以程序运行时从键盘输入任意两个整数,也可以直接赋值;

2.根据C语言的语法规则两个整数相除的商是整数,事实上两个数相除的结果可能是实数,我们可以通过类型转换使其结果为实数。

本任务经过输入数据、计算、输出结果三步操作可以实现,这也是一个程序通常的执行过程。前一个项目中我们已经学习了C语言的输入和输出函数。对于简单的任务,输入数据,经过计算之后可以直接输出计算结果,但对于复杂的任务,往往需要先画出流程图,然后再编写程序。

二、必备知识与理论

1.算法

(1)算法概述

算法(Algorithm)一词源于算术(Alogrism)。简单说算术方法是一个由已知推求未知的运算过程。后来人们引申开来,把进行某一工作的方法和步骤称为算法。因此,算法反映了计算机的执行过程,是对解决特定问题操作步骤的一种描述。

【例3.1】求1×2×3×4×5(即5!)

步骤S1:先求1×2,得到结果2。

步骤S2:将步骤1得到的结果2乘以3,得到结果6。

步骤S3:将6再乘以4,得24。

步骤S4:将24再乘以5,得结果120。

这样的算法虽然正确,但太繁琐。改进的算法如下:

S1:使t=1;

S2:使i=2;

S3:使t×i,乘积仍然放在变量t中,可表示为:t×i→t;

S4:使i的值加1,即i+1→i;

S5:如果i≤5,则返回重新执行S3、S4和S5;否则,算法结束。

如果计算100!,只需将S5中的i≤5改成i≤100即可。

该算法对于计算机来说,是较好的方法,因为计算机的运算速度快,最适合做重复的工作。

算法的特性

①有穷性

②确定性

③有效性

④有零个或多个输入

⑤有一个或多个输出

(2)算法的表示

①用自然语言表示

②用传统流程图

用流程图表示的算法直观形象,比较清楚地显示出各个框之间的逻辑关系,因此得到广泛使用。下面给出3种基本结构及其对应的流程图。

③用N-S结构图表示

N-S结构图取消了流程线,不允许有随意的控制流,全部算法写在一个矩形框内,该矩形框以3种基本结构(顺序、选择、循环)描述符号为基础复合而成。

④用伪代码表示

用传统流程图、N-S图表示算法,直观易懂,但绘制比较麻烦。在设计一个算法时,可能要反复修改,而修改流程图是比较麻烦的,因此,流程图适合表示算法,但在设计过程中使用不是很理想。为了设计算法方便,常使用伪代码。

(3)结构化程序设计方法

“自顶向下,逐步细化”是对问题的解决过程逐步具体化的一种思想方法。例如:要在一组数中找出其中的最大数,首先,可以把问题的解决过程描述为:

①输入一组数。

②找出其中的最大数。

③输出最大数。

以上三条中,第①、③两步比较简单,对第②步可以进一步细化:

1)任取一数,假设它就是最大数。

2)将该数与其余各数逐一比较。

3)若发现有其他数大于假设的最大数,则取而代之。

现在对以上过程进一步具体化,得到如下算法:

①输入一组组数。

②设max =第一个数。

③将第二个数到最后一个数依次取出放入x。

④比较x与max的大小,如果x>max,则使max=x。

⑤输出 max。

2.C语句

C语句主要包括控制语句、表达式语句、赋值语句、函数调用语句、复合语句、空语句等,其中存在包含关系。

(1)控制语句

控制语句用于控制程序的流程,以实现程序中的各种结构。它们由特定的语句定义符组成 。C语言有9种控制语句,如下表所示。

(2)表达式语句

表达式语句由表达式加上分号“;”组成。其一般形式为:

表达式;

执行表达式语句就是计算表达式的值。表达式语句可分赋值语句、函数调用语句和空语句3种基本类型。

①赋值语句

赋值语句是由赋值表达式加上分号构成的表达式语句。其一般形式为:

变量=表达式;如:y=(a+b)/2;

②函数调用语句

函数调用语句的一般格式为:函数名(实际参数表);

如:printf(This is a C program.);

③空语句

只有分号组成的语句称为空语句。

(3)复合语句

把多个语句用花括号{}括起来组成的语句称为复合语句。在程序中可以把复合语句看成一条语句。如下面的语句实现交换两个数的值。

{ t=a; a=b; b=t;}

三、任务实施

现在我们来完成开头提出的任务:输入两个整数,求它们的商和余数。

本任务比较简单,有基本的三个操作步骤:

(1)数据输入:用数据输入函数scanf()来完成给两个整型变量的赋值。

(2)计算:使用除(/)运算计算商(注意类型转换)、求余(%)运算计算余数。

(3)数据输出:用输出函数printf(),并使用合适的格式控制使输出结果保留2位小数。

程序代码如下:

#include <stdio.h>
main()
{ int a,b,c;
float d;
scanf("%d,%d",&a,&b);
c=a%b;
d=(float)a/b; /* 将a转换为实型,以便得出实数商 */
printf("c=%d,d=%5.2f\n",c,d);
} 
运行结果为:
-8,6↙
c=-1,d=-1.33

四、深入训练

1.输入某学生的三门课程考试成绩,计算出该学生的总成绩和平均成绩。试编写程序,并画出算法的N-S流程图。要求输出时平均成绩保留一位小数。

提示:设三门课程的成绩分别为n1,n2,n3,总成绩为sum,平均成绩为avg,可将这些变量均定义为float,输出结果保留一位小数。

五、知识要点:if语句的语法结构及各种用法任务分析

对于任意输入的3个数a,b,c,要按由小到大的顺序输出,需要对这3个数进行排序,也就是进行比较大小的操作,根据比较的结果而执行不同的操作,用前面所学知识显然不能满足需要,C语言的选择结构程序设计体现了程序的判断能力。

六、必备知识与理论

1.基本if 语句

if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)执行给出的两种操作之一。它的简单形式为:if(表达式) 语句

例如:if(x>y) printf("%d",x);

如果表达式的值为真(非0),则执行其后所跟的语句;如果表达式的值为假,直接转到下一条语句继续执行。这种形式的if语句又被称为单分支语句。

【例3.2】输入x,输出x的绝对值。代码如下:

#include <stdio.h>
main()
{ int n;printf("please input a number:");scanf("%d",&n);if(n<0)n=-n;printf("the absolute value of the number is:%d\n",n);
}

2.if…else语句

if语句更常用的形式是双分支语句,其格式如下:

if(表达式) 语句1;

else 语句2;

程序执行时,若x的值大于y的值,则会在屏幕上显示x的值,否则显示y的值。

【例3.3】将输入的小写字母转换成大写字母输出,大写字母原样输出。 

#include <stdio.h>
main()
{ char ch;printf("please input a letter:");scanf("%c",&ch);if(ch>='a' && ch<='z'){ ch=ch-32;  /* 小写字母的ASCII值-32即为大写字母*/printf("the large letter is:%c\n",ch); }elseprintf("the letter is:%c\n",ch);
}

3.条件运算符

若if语句中,在表达式为“真”和“假”时,且都只执行一个赋值语句给同一个变量赋值时,可以用简单的条件运算符来处理。

条件运算符的一般格式:表达式1 ? 表达式2 :表达式3

条件运算符是C语言中唯一的一个三目运算符。

七、任务实施

输入任意3个数a,b,c,按由小到大的顺序输出。

基本思想:先确定a中存放最小的数,c中放最大的数,b中放中间的数。

(1)首先找出最小的数放到a中。a分别与b和c比较,若存在比a小的数,就交换变量的值,使a中的数总是最小。

(2)将剩余的两个数b与c比较一次,如果b大于c,则交换变量的值,那么c中的数最大,b中的就是中间数,排序完成。

(3)使用中间变量t存放临时数据。

程序代码如下:

#include <stdio.h>
main()
{ float a,b,c,t;printf("please input three number:");scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;} if(b>c){t=b;b=c;c=t;}	   printf("from samll to large:%.2f,%.2f,%.2f\n",a,b,c);
}
注意:{ }内的最后一个语句要有分号,{ }外没有分号。

八、深入训练  

1.输入任一年份,判断是否为闰年。

提示:以变量leap代表是否闰年的信息。若闰年,令leap=1,非闰年,leap=0。最后判断leap是否为1(真),若是,则输出闰年信息。

2.输入任意一个整数,判断它的奇偶性并输出判断结果。

提示:设m为任一整数,if(m%2==0) 则m为偶数否则为奇数。

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

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

相关文章

18、论文阅读:AOD-Net:一体化除雾网络

AOD-Net: All-in-One Dehazing Network 前言介绍相关工作物理模型传统方法深度学习方法 建模与扩展变换后的公式网络设计与高级特征任务相结合 除雾评价数据集和实现 前言 该论文提出了一种基于卷积神经网络&#xff08;CNN&#xff09;的图像去雾模型&#xff0c;称为 All-in…

Golang | Leetcode Golang题解之第538题把二叉搜索树转换为累加树

题目&#xff1a; 题解&#xff1a; func getSuccessor(node *TreeNode) *TreeNode {succ : node.Rightfor succ.Left ! nil && succ.Left ! node {succ succ.Left}return succ }func convertBST(root *TreeNode) *TreeNode {sum : 0node : rootfor node ! nil {if n…

docker+nacos

安装数据库 以docker安装为例&#xff08;实际建议实体&#xff09; 初始化数据库 /******************************************/ /* 数据库全名 nacos_config */ /* 表名称 config_info */ /******************************************/ CREATE TABLE config_i…

react18中redux-promise搭配redux-thunk完美简化异步数据操作

用过redux-thunk的应该知道&#xff0c;操作相对繁琐一点&#xff0c;dispatch本只可以出发plain object。redux-thunk让dispatch可以返回一个函数。而redux-promise在此基础上大大简化了操作。 实现效果 关键逻辑代码 store/index.js import { createStore, applyMiddlewar…

python批量合并excel文件

当工作中发现有多个excel表需要进行相同的操作或者需要汇总在一起&#xff0c;一个一个处理太费时间&#xff0c;以下的python代码能够帮你解决这个问题~ import pandas as pd import os# 设置Excel文件所在的文件夹路径和合并文件的输出路径 folder_path D:\\Desktop\\dat…

Qt中弹出窗口的实现与鼠标事件处理

在 Qt 开发中&#xff0c;弹出窗口&#xff08;Popup Window&#xff09;是一个常见的需求&#xff0c;例如下拉菜单、工具提示等。在实现弹出窗口时&#xff0c;我们通常会考虑使用 Qt::Popup 窗口类型&#xff0c;因为它可以自动处理许多细节&#xff0c;例如窗口的显示和关闭…

汇编语言与接口技术--算术运算程序设计

一、 实验要求 编程实现两个数&#xff1a;#998877H 和 #778899H 的加法运算。编程实现两个数&#xff1a;#998877H 和 #778899H 的减法运算。 二、 实验设计 1.整体思路 无符号角度&#xff1a; &#xff08;1&#xff09;加法 1.初始化&#xff1a;设置两个数 998877H 和…

(蓝桥杯C/C++)——基础算法(上)

目录 一、二分法 1.二分法简介 二分法简介-解题步骤 2.整数二分-简介 整数二分-模板 3.浮点二分-简介 浮点二分-模板 4.二分答案-简介 二分答案-模板​​​​​​​ 二、位运算 1.位运算简介 2.常见的位运算 按位与AND(&) 按位或OR( | ) 按位异或…

1-petalinux 问题记录-根文件系统分区问题

在MPSOC上使用SD第二分区配置根文件系统的时候&#xff0c;需要选择对应的bootargs&#xff0c;但是板子上有emmc和sd两个区域&#xff0c;至于配置哪一种mmcblk0就出现了问题&#xff0c;从vivado中的BlockDesign和MLK XCZU2CG原理图来看的话&#xff0c;我使用的SD卡应该属于…

CSS中的背景色和前景色

目录 1 对比度的计算1.1 亮度计算1.2 对比度比率 2 在线计算对比度 在我们的样式设计中&#xff0c;通常会有背景色和前景色的概念。前景色我们通常用来设置文本的颜色&#xff0c;而背景色通常是文本的所在容器的颜色。比如如果我们把文本放在普通容器里&#xff0c;那普通容器…

mac上的一些实用工具

一、录屏工具 快捷键&#xff1a;commandshift5 退出时候重复上面的快捷键即可看到操作键。 二、如何启用虚拟化技术&#xff08;VT) 1、检查VT支持情况 终端输入sysctl -a|grep machdep.cpu.features,如果输出结果包含VMX,则说明你的Mac支持VT 2、检查Hypervisor.frramew…

docker复现pytorch_cyclegan

1、安装docker 配置docker镜像 添加镜像源至docker engine 2、wsl2安装nvidia-docker 要在Ubuntu中安装NVIDIA Docker&#xff0c;需要满足以下条件&#xff1a; 确保主机已安装NVIDIA的CUDA驱动程序&#xff0c;并使用适用于您操作系统的正确版本。 wsl --update在Ubuntu…

全面解析:区块链技术及其应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 全面解析&#xff1a;区块链技术及其应用 全面解析&#xff1a;区块链技术及其应用 全面解析&#xff1a;区块链技术及其应用 区…

[Redis] Redis主从复制模式

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

独孤思维:图书电商远程诊断,差点晕倒

01 刚才一个图书学员想让我远程诊断下。 主要问题是&#xff0c;他用批量工具遇到问题&#xff0c;无法获取批量数据。 我远程一看&#xff0c;差点晕倒。 连工具都用错了&#xff0c;当然无法批量获取。 我说你仔细再看下专栏内容。 真的服了。 所以为什么有些人做不起…

十四届蓝桥杯STEMA考试Python真题试卷第二套第二题

来源&#xff1a;十四届蓝桥杯STEMA考试Python真题试卷第二套编程第二题。虽然不建议&#xff0c;但是我们还是给出一行代码的实现&#xff0c;以展现Python的简洁。 题目描述&#xff1a; 空调遥控器上的模式按钮可控制四种模式的切换。空调的初始模式为制热模式&#xff0c;…

C02S10-Linux的进程和计划任务管理

一、进程 1. 相关概念 程序&#xff1a;没有运行的代码&#xff0c;是指令和规则的集合&#xff0c;定义了要执行和操作的任务。进程&#xff1a;正在运行的代码&#xff0c;是程序的执行实例。线程&#xff1a;是计算机进行运算的最小单位&#xff0c;是进程中实际允许的单位…

初始JavaEE篇——多线程(8):JUC的组件

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 Callable接口 ReentrantLock synchronized 与 ReentrantLock的区别 信号量&#xff08;Semaphore&#xff09; CountDown…

C++ <string> 标头文件详解

目录 1. <string> 的基本介绍2. 创建和初始化字符串3. 字符串的基本操作3.1 连接字符串3.2 获取字符串长度3.3 访问和修改字符3.4 字符串比较 4. 常用字符串成员函数4.1 append()4.2 insert()4.3 erase()4.4 substr()4.5 find() 和 rfind()4.6 replace() 5. 字符串转换5.…

Java实现JWT登录认证

文章目录 什么是JWT?为什么需要令牌?如何实现?添加依赖&#xff1a;JwtUtils.java&#xff08;生成、解析Token的工具类&#xff09;jwt配置&#xff1a;登录业务逻辑&#xff1a;其他关联代码&#xff1a;测试&#xff1a; 什么是JWT? JWT&#xff08;Json Web Token&…