当前位置: 首页 > news >正文

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.mrgr.cn/news/64381.html

相关文章:

  • Linux 安装MySQL(Cenots版本)
  • HarmonyOS:UIAbility组件概述
  • windows 11 配置 kafka 使用SASL SCRAM-SHA-256 认证
  • Python WordCloud库与jieba分词生成词云图的完整指南
  • 奥数与C++小学四年级(第十八题 小球重量)
  • 【CUDA代码实践03】m维网格n维线程块对二维矩阵的索引
  • 带你了解 Spring Cloud Config
  • [进阶]集合的进阶(1)泛型
  • python NLTK快速入门
  • Uniapp打包发布App Store时(90894)错误
  • “七巨头”(The Magnificent 7)科技公司财报喜忧参半看AI
  • 解读JobScheduler的jobs.xml
  • 在centos中安装cmake
  • MySQL基础(三)
  • Java入门(5)--多线程编程
  • MybatisPlus入门(六)MybatisPlus-空值处理
  • AI GPU系统调试能力与实践
  • 浙江深大智能科技有限公司管控平台服务端存在任意文件上传漏洞
  • 【ROS2】文档、教程、源码汇总
  • 【MyBatis源码】CacheKey缓存键的原理分析
  • LeetCode 104.二叉树的最大深度
  • 1Panel安装部署FileCodeBox
  • 搜狗输入法 14.10.0 | 直装去弹窗广告特别修改版,支持同步
  • python之函数总结
  • 逼着自己深度思考
  • python对数据平滑处理