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.xdnf.cn/news/8720.html

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

相关文章

RAG三件套运行的新选择 - GPUStack

GPUStack 是一个开源的大模型即服务平台&#xff0c;可以高效整合并利用 Nvidia、Apple Metal、华为昇腾和摩尔线程等各种异构的 GPU/NPU 资源&#xff0c;提供本地私有部署大模型解决方案。 GPUStack 可以支持 RAG 系统中所需要的三种关键模型&#xff1a;Chat 对话模型&…

SSM物联网养殖管理系统-计算机毕业设计源码03998

目录 1 绪论 1.1 研究背景和意义 1.2国内外研究现状 1.3论文结构与章节安排 2 系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2经济可行性分析 2.1.3操作可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 系统流程分析…

使用Python进行健康监测和分析的案例研究

健康监测和分析是指系统地使用健康数据来跟踪和评估个人或人群在一段时间内的健康状况。它包含一系列活动&#xff0c;从实时生理数据收集&#xff08;如心率&#xff0c;血压和体温&#xff09;到分析更复杂的健康记录&#xff08;包括患者病史&#xff0c;生活方式选择和遗传…

RHCE 第四次作业

一.搭建dns服务器能够对自定义的正向或者反向域完成数据解析查询。 1.配置环境 [rootlocalhost ~]# yum install bind [rootlocalhost ~]#systemctl stop firewalld [rootlocalhost ~]#setenforce 0 2.配置DNS主服务器 [rootlocalhost ~]# vim /etc/named.conf options { …

打字机效果显示

文章目录 打字机效果显示一、效果图二、视频效果三、代码 打字机效果显示 一、效果图 二、视频效果 B站-打字机效果图 打字机效果 打字机效果 三、代码 框架&#xff1a; <div class"t_title"><span>我的能力</span> <!-- <span>使…

PyQt5实战——翻译的实现,成功爬取微软翻译(可长期使用)经验总结(九)

个人博客&#xff1a;苏三有春的博客 系类往期文章&#xff1a; PyQt5实战——多脚本集合包&#xff0c;前言与环境配置&#xff08;一&#xff09; PyQt5实战——多脚本集合包&#xff0c;UI以及工程布局&#xff08;二&#xff09; PyQt5实战——多脚本集合包&#xff0c;程序…

[含文档+PPT+源码等]精品基于Nodejs实现的物流管理系统的设计与实现

基于Node.js实现的物流管理系统的设计与实现背景&#xff0c;主要源于物流行业的快速发展以及信息技术在物流管理中的广泛应用。以下是对该背景的具体阐述&#xff1a; 一、物流行业的快速发展 随着全球经济一体化的加速和电子商务的蓬勃发展&#xff0c;物流行业作为连接生产…

JavaWeb开发9

ResponseBody 类型&#xff1a;方法注解、类注解 位置&#xff1a;Controller方法上/类上 作用&#xff1a;将方法返回值直接响应&#xff0c;如果返回值类型是实体对象/集合&#xff0c;将会转换为JSON格式响应 说明&#xff1a;RestControllerControllerResponseBody; 统…

直播美颜SDK开发指南:实时美颜技术的架构与优化策略

时下&#xff0c;为了满足市场需求&#xff0c;许多企业开始开发自己的美颜SDK&#xff0c;通过集成到直播或视频应用中&#xff0c;实现实时美颜效果。接下来&#xff0c;笔者将从美颜SDK的架构设计和优化策略出发&#xff0c;深入探讨如何打造一个智能化的视频美颜平台。 一…

Leecode热题100-104.二叉树中的最大路径和

二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root &#xff0c…

第六十三周周报 GCN-CNNGA

文章目录 week 63 GCN-CNNGA摘要Abstract1. 题目2. Abstract3. 文献解读3.1 Introduction3.2 创新点 4. 网络结构4.1 数据分析4.2 混合深度学习框架的发展4.3 Mul4.4 CNN block4.5 GCN block4.6 GRU block4.7 注意力机制4.8 模型评估标准 5. 实验结果5.1 不同邻接矩阵的性能评价…

学习笔记——MathType公式编号:右编号和随章节变化

1.如何在word文档中插入带有编号的公式&#xff1f; 步骤&#xff1a;(前提是已经安装mathtype) 2.MathType公式编号怎么随章节变化&#xff1f; 想要编号级数也随标题级数进行自动变化&#xff0c;则需要插入或修改文档的“分隔符” 步骤&#xff1a;

VS+QT开发 找不到宏$(Qt_INCLUDEPATH_) $(Qt_LIBS_)

问题&#xff1a;在VSQT开发环境&#xff0c;项目右键->属性->C/C->常规->附加包含目录->宏&#xff08;位置在右下角&#xff09;->右侧新弹出的属性框内搜索Qt_INCLUDEPATH_ 找不到的场景的解决办法。

STl学习-迭代器

1.迭代器种类 这五种迭代器的声明如下&#xff1a; truct output_iterator_tag {};//输出迭代器 truct input_iterator_tag{ };//输入迭代器 truct forward iterator tag : public input iterator tag {};//向前迭代器 truct bidirectional iterator tag :public forward iter…

亲测在Windows系统安装、使用、定制Ollama服务

一、前言 1.1 Ollama介绍 Ollama是一个专为在本地环境中运行和定制大型语言模型而设计的工具。它提供了一个简单而高效的接口&#xff0c;用于创建、运行和管理这些模型&#xff0c;同时还提供了一个丰富的预构建模型库&#xff0c;可以轻松集成到各种应用程序中。Ollama的目标…

aLoNg3x.2 | CrackMe

cm下载链接&#xff1a; https://n0zom1z0.lanzoup.com/iB4Gz2el88cb 密码:38sy crack目标是让register框去掉。不让patch&#xff0c;所以要真算出Code。 第一个难点&#xff1a; DELPHI。。。窗口文字与处理函数的定义在这种地方&#xff1a; 这个cancel处&#xff0c;只要…

STl学习-函数对象

1.含有状态的函数对象类 函数对象类除了 operator()之外也可以包含其他成员。函数对象类通常含有一些数据成员这些成员被用于定制调用运算符中的操作。举个例子&#xff0c;我们将定义一个打印 string 的类。默认情况下&#xff0c;会将内容写入到cout 中&#xff0c;每个stri…

U-Mail邮件网关有效防止企业邮箱系统被垃圾邮件轰炸

在现代社会&#xff0c;互联网企业为了提供更便捷的服务&#xff0c;常常会收集用户数据&#xff0c;构建自己的大数据资源库。然而&#xff0c;这种行为往往导致用户在不经意间泄露个人隐私&#xff0c;进而引发个人信息的非法交易和频繁的骚扰电话&#xff0c;这些问题已经引…

手把手教你搭建OpenScenario交通场景(上)

OpenScenario是一种专为自动驾驶系统仿真测试设计的场景描述语言&#xff0c;它基于XML格式&#xff0c;旨在提供一个标准化、模块化的框架&#xff0c;用于定义和重现复杂的道路交通场景。该语言不仅能够详细描绘车辆、行人、交通信号及其他动态交通参与者的行为模式&#xff…

专业140+总分430+复旦大学875信号与系统考研经验原957电子信息通信考研,真题,大纲,参考书。

专业140&#xff0c;总430&#xff0c;复旦大学875信号与系统&#xff08;电子信息&#xff09;原957经验贴分享&#xff0c;希望大家复习有帮助。 专业课&#xff08;875信号与系统含随机过程-原957&#xff09; 专业课这方面我是从7月开始&#xff0c;刚好数学第一遍搞好了大…