第3章 结构化程序设计
第3章 结构化程序设计
循环体
是 P2 否
图3.7直到型循环结构示意图 直到型循环结构示意图
3.3 表述算法
• 通常用自然语言、计算机语言(代码)、伪代码[1]、传统流程图、 通常用自然语言、计算机语言(代码)、伪代码 、传统流程图、 )、伪代码 N-S流程图、PAD图等不同的方法来描述算法。 流程图、 图等不同的方法来描述算法。 流程图 图等不同的方法来描述算法 • 在例 中,采用了自然语言来表示算法。自然语言就是人们日常使 在例3.1中 采用了自然语言来表示算法。 用的语言,可以是汉语、英语,或其他语言。 用的语言,可以是汉语、英语,或其他语言。用自然语言表示算法通 俗易懂,但文字冗长,容易出现歧义性。自然语言表示的含义往往不 俗易懂,但文字冗长,容易出现歧义性。 太严格,要根据上下文才能判断其正确含义。此外, 太严格,要根据上下文才能判断其正确含义。此外,用自然语言来描 述包含分支和循环的算法,很不方便。因此, 述包含分支和循环的算法,很不方便。因此,除了那些很简单的问题 以外,一般不用自然语言描述算法。 以外,一般不用自然语言描述算法。 • [1] 伪代码是介于自然语言与计算机语言之间的文字符号。一般借助 伪代码是介于自然语言与计算机语言之间的文字符号。 一种高级语言的控制结构,而中间的操作用自然语言描述。 一种高级语言的控制结构,而中间的操作用自然语言描述。
P1 是 循环体
否
• 图3.6当型循环结构示意图 当型循环结构示意图
(2)直到型循环的执行过程为: )直到型循环的执行过程为: • 先执行循环体一次,然后判断控制循环的条件。 先执行循环体一次,然后判断控制循环的条件。 • 条件 成立,则继续上述循环体,直到条件不成立时,结束循环。 条件P2成立,则继续上述循环体,直到条件不成立时,结束循环。 成立
第3章 顺序结构程序设计
3.2 实现顺序结构程序设计的基本语 句
• 赋值语句 语句
赋值语句由赋值表达式加上一个分号构成,一般形式为: 变量=表达式; 变量=表达式; 例如: radius=14.5; i++; x+=2; 赋值语句是将右边表达式的值赋给左边的变量中去。赋值 语句要先对表达式加以计算求得其值,而后再将求得的值赋给 左边的变量中去,因此可以说赋值语句兼有计算功能。
例3.1
例3.2
例3.3
• 输出项表 输出项表中可以有多个输出项,各项之间用逗号分隔。 • 注意事项: ①格式控制中的格式说明符必须按从左到右的顺序,与输出 项表中的每个数据一一对应。 ②除x,e,g外,其他类型转换字符必须用小写字母。 ③类型转换字符紧跟在“%”后面时作为类型转换字符,否则 上一页 将 作为普通字符处理。
• 标准输入输出
C语言本身并不提供输入输出语句,其输入输出操作是由标 准库函数来实现的,在使用标准库函数时,要用预编译命令: 首页 上一页 #include将“stdio.h”文件包括到用户源文件中。
– 格式输出函数—printf()
形式: printf(“格式控制”[,输出项表]); printf( 格式控制” 输出项表] • 格式控制 ①普通字符:即需要原样输出的的字符信息。 ②格式说明符:即用%开头后面跟有一个字母,它规定了输 出项的输出形式。常用格式说明符见表3.1和表3.2。 ③转义字符:以“\”开头的字符序列。常用转义字符见表3.3。
上一页
–单个字符的输入—getchar()函数
形式: c=getchar(); c=getchar(); 执行上面的调用时,变量c将得到用户从键盘输入的一 个字符值,这里的c可以是字符型或整型变量。
第3章 结构化程序设计语句
图3-16 程序运行界面
3.3.2 上机练习二:捉拿肇事司机 上机练习二:
【练习题目】 练习题目】 题目 一辆卡车违反交通规则,撞死行人, 一辆卡车违反交通规则,撞死行人,司机畏罪驾车逃 当时有三个人目击这一车祸的发生, 跑。当时有三个人目击这一车祸的发生,但都没有看清卡 车的牌照号码,只记住牌照号码的部分特征, 车的牌照号码,只记住牌照号码的部分特征,甲记住牌照 号码的前两位数字是相同的, 号码的前两位数字是相同的,乙记住牌照号码的后两位数 字是相同的,丙是一位数学家,他说“ 字是相同的,丙是一位数学家,他说“车牌号码肯定是四 位数,而且恰好是一个整数的平方。 位数,而且恰好是一个整数的平方。”,并且丙已推导出 符合该条件的号码只可能有一个。 符合该条件的号码只可能有一个。根据这些信息来判定车 牌号并捉拿肇事司机。要求编写控制台应用程序。 牌号并捉拿肇事司机。要求编写控制台应用程序。
3.1 循序渐进学理论
3.1.1 if语句 语句
1.用if语句实现单分支选择结构 . 语句实现单分支选择结构 [格式 :(表达式 语句 格式]: 表达式 语句; 表达式) 格式
图3-1 单分支选择结构执行流 程图
编写一个程序实现如下功能: 【 例 3-1】 编写一个程序实现如下功能 : 输入一个成绩, 如果成绩大于等于60 60则输出 输入一个成绩 , 如果成绩大于等于 60 则输出 恭喜您,您通过了这次考试! “恭喜您,您通过了这次考试!”,否则不输 出任何信息。要求编写成控制台应用程序。 出任何信息。要求编写成控制台应用程序。
[格式2]:randomObj.Next(N) 格式2]: 2] 例如,有下列语句: 例如,有下列语句: Random randomObj=new Random() i=randomObj.Next(10 10) i=randomObj.Next(10); 其作用是产生一个0~9之间的随机整数并赋值给变量i 0~9之间的随机整数并赋值给变量 其作用是产生一个0~9之间的随机整数并赋值给变量i。 格式3] 3]: [格式3]:randomObj.Next(N,M) 例如,有下列语句: 例如,有下列语句: Random randomObj=new Random() i=randomObj.Next(5 10) i=randomObj.Next(5,10); 其作用是产生一个5~9之间的随机整数并赋值给变量i 5~9之间的随机整数并赋值给变量 其作用是产生一个5~9之间的随机整数并赋值给变量i。
结构化程序设计
结构化程序设计
结构化程序设计
结构化程序设计是一种软件开发方法,旨在通过模块化和顺序化的方式来设计和编写程序。
它强调程序应该被组织成一系列可重复使用和可维护的模块,以便增强开发效率和代码的可读性。
在结构化程序设计中,程序被划分为多个小的、相对独立的模块。
每个模块执行一个特定的任务,并且可以与其他模块进行通信和交互。
这种模块化的设计使得程序变得更加可靠和易于理解,因为每个模块都是独立的,它的功能可以被单独测试和验证。
,结构化程序设计还鼓励使用顺序、选择和重复等基本的控制结构来组织程序的执行流程。
顺序控制指的是按照代码的顺序依次执行语句,选择控制指的是根据条件选择执行不同的语句块,而重复控制则是通过循环执行一段代码多次。
结构化程序设计的目标是提高程序的可理解性和可维护性。
通过模块化的设计,可以将一个复杂的问题分解成多个简单的子问题,从而减少开发过程中的错误和bug。
结构化程序设计还使得程序的
测试和调试变得更加容易,因为每个模块都是相对独立的,可以单独进行测试和调试。
在实践中,结构化程序设计可以通过使用编程语言中的函数、类和模块等概念来实现。
通过将程序划分为多个函数或者类,可以实现程序的模块化和重用。
而通过使用模块化的设计,可以将程序的不同部分放入不同的模块中,从而提高代码的可读性和可维护性。
,结构化程序设计是一种重要的软件开发方法,可以提高程序的可读性、可维护性和可重用性。
通过将程序划分为多个模块,并使用基本的控制结构来组织程序的执行流程,可以更好地管理和开发复杂的软件系统。
结构化程序设计是每个程序员都应该熟悉和掌握的软件开发技术。
结构化程序设计的三种基本结构
结构化程序设计共有以下3种基本结构: 顺序结构 分支结构 (选择结构 )
循环结构,
(1)顺序结构,如图3.1(a)所示,该结构先执行A,再 执行B,两者是顺序执行的关系
A B 流程图
A B
N-S结构图
(2)分支结构,也叫选择结构,如图3.1(b)所示, 该结构先判断条件是否成立,当条件成立时执 行A,否则执行B。该结构只能执行A或B其中之 一
例如: m和n是整形变量,则: scanf (“%d%d”,m,n );是错误的, 应将“m,n”改为“&m,&n” 。
②如果在“格式控制串”中除了格式标识符、修饰符和格式 说明符以外还有其他字符,则应在输入数据时输入与这些字 符相同的字符。例如: scanf ("%d,%d",&m,&n );
输入时两个整数之间应加入“,”: 234,123↙ 因为,在scanf函数中的“格式控制串”中使用了逗号分 隔,所以必须在234后面加一个逗号。
表3.2 scanf函数常用的格式说明符
格式说明符 d o x c s f
功能说明 表示输入带符号的十进制整数 表示输入无符号八进制整数 表示输入十六进制无符号整数 表示输入单个字符 表示输入多个字符,即一个字符串 表示输入实数,可以用小数形式输入
表3.2 scanf函数常用③从键盘输入的数据类型和个数必须与参数表中的数 据类型和个数相匹配。例如:
scanf (“%d,%d”,&m,&n ); 输入数据时的形式:
234,10.5↙ (错误,因为数据类型不匹配) 234,105,123↙ (错误,因为数据个数不匹配) 234,123↙ (正确) ④可以指定输入数据所占的列数,系统自动按指定列 数截取数据。例如:
C++_CHAP3
其语法形式: 其语法形式:
for(表达式 表达式 表达式 表达式1;表达式 表达式3) 表达式 表达式2;表达式 语句
C++与结构化程序设计 第3章 C++与结构化程序设计
表达式1 表达式
false
表达式2 表达式
true
语 句
表达式3 表达式
C++与结构化程序设计 第3章 C++与结构化程序设计
C++与结构化程序设计 第3章 C++与结构化程序设计
if(b) { cout<<n<<'\t'; counter++; if(counter%5==0) cout<<endl; } } }
C++与结构化程序设计 第3章 C++与结构化程序设计
C++与结构化程序设计 第3章 C++与结构化程序设计
if语句嵌套 3.4.2 if语句嵌套
C++语言中规定else始终与同 一层中上面最接近它的if语句 配对,而这个if语句又没有其 他的else与之匹配。最好用 大括号{}括起该层的if语句 来确定层次关系。
高级程序语言设计第3章
或
#include "stdio.h" 1.格式输入输出(printf函数,scanf函数) (1)scanf函数 scanf函数用于输入指定类型的多个数据,函数的一般形式为:
scanf(“格式控制字符串”,地址列表);
一定要注意,地址列表中直接给变量名将会出错,因为这是非
返回本章目录
第3章 高级语言程序设计概述
l 指定数据所占字符数(宽度)
scanf("%3d%2d",&a,&b); 输入:12345678↙ 系统将把123赋值给a,把45赋值给b,而678则被丢掉。 l scanf函数中没有精度控制 scanf("%3.2f",&a); 将是非法的,即使输入12345↙,也不会将变量a赋值 为123.45; l 跳过某输入数据 scanf("%d %*d %d",&a,&b); 输入:11 22 33↙
{
char c1='H',c2='E',c3='L',c4='O'; /*定义字符变量并赋值*/
putchar(c1);
/*输出字符变量的值*/
putchar(c2);putchar(c3);putchar(c3);putchar(c4);
putchar('\t');
/*输出Tab制表键*/
putchar(87);
/*输出字符W,87是其ASCII编码值
*/ putchar('!'); putchar('\n');
/*输出字符*/ /*输出回车换行符*/
C语言程序设计 第3章结构化程序设计的三种基本结构
其中输出函数printf( )只原样显示一个普通的字符串,用来 提示用户输入的数据是“成绩”。 ⑦如果是多个参数时,参数之间必须必须用逗号分隔,每 个参数要求是一个表达式(单独一个变量是表达式的特殊情 况),参数的个数和类型要与格式控制串中的格式说明符的 个数和类型相匹配。
③不可打印的特殊字符指的是该字符不能直接从输出设备输出, 也称为“转义字符”,转义字符用转义序列来表示。所谓转义 序列是用来表示字符的一种方法,即用该字符的ASCII值表示, 具体的格式为:\字母。其中: “\”表示转义字符序列的标识符,表示后面的字符是转义字符, 即是不可打印的字符; “字母”表示不可打印的转义字符,用来使输出设备输出某一 种格式,c语言中的常用转义字符如表3.4所示。
int a=4; float x=3.14; char c=’A’; 也可以对几个变量赋同一个初值,例如: int a=4,b=4,c=4; 也可以只对部分变量赋初值,例如: int a=4, b,c;
【例3.1】算术赋值运算符的使用。 #include <stdio.h> void main ( ) {
修饰符
功能说明
字母l
表示输入长整型整数,可加在格式说明符d、o、x 前面
m 表示输出数据的最小宽度 m.n 表示输出总宽度占m列,其中小数位占n位
- 表示输出的数字或字符在输出区域内向左靠
⑥如果是0个参数时,即该函数中只有格式控制串部分, 没有参数表部分,二者之间的逗号可以省略。这时格式控 制串部分是一个普通的字符串,该字符串将原样显示在屏 幕上,常常用来作为提示信息或字符串的输出。例如:
A
第3章 三种基本程序结构
左”。即上述表达式求解时,先计算并得到(b>c ? b : c)
的值,然后再将此值作为外层表达式的表达式3部分。 3、条件表达式一般使用在赋值语句中。虽然它快捷方
便,但功能上相比if语句还嫌不够。所以在实际应用中,
应视具体情况合理使用。
三、switch语句
switch语句的一般形式为:
switch(表达式){ case 常量表达式1: [语句1;] [break;] case 常量表达式2: [语句2;] [break;] …… case 常量表达式n: [语句n;] [break;] [default: 语句n+1;] }
2.格式控制符区分大小写; 如实数型量不能按%d形式输出,字符串量不能
first=3, second=4, third=2268
2.格式输入函数scanf 一般形式: scanf(格式控制,输入列表); 如:
scanf(“%d, %f”, &m, &n);
scanf函数是从标准输入设备(通常是键盘)读取输
/*两个%d之间没有空格*/
3 4↙
将3赋给a,4赋给b,也可以: 下面是体现“可取有效输入”含义的一个例子: 3↙ scanf(“%d%c%d”, &m, &ch, &n); 如果想输入123给m,字符’w’给ch,456给n,则以下3种 4↙
输入方式应采用哪一种呢? 123↙ 123w456↙ ① 123 w 456↙ ② w↙
和
(4)if子句是必须的,而else子句是可选的。但反过来
不成立,即else子句不能脱离if子句单独存在。流程图可以
变化如下:
是
下雨了?
不是
if(x>y) z=x; else
第3章 结构化程序设计
2019年12月10日星期二第Fra bibliotek章 结构化程序设计
第4页
上海师范大学 计算机系
3.2.1 C语言语句概述
1、表达式语句 表达式能构成语句是C语言的重要特色,故有人称C语言是 “表达式语言”,其一般形式为:表达式; 执行表达式语句就是计算表达式的值。例如:x=y+z;
2019年12月10日星期二
第3章 结构化程序设计
第12页
上海师范大学 计算机系
3.2.2 常用的输入和输出函数
注意:要求格式控制字符串中的格式说明项与变量在数量和 类型上应该一一对应。例如:
int a,b,c; printf("Input a、b、c:"); scanf("%d%d%d", &a,&b,&c); 输入为:7 8 9↙ /* ↙表示回车 */ 或 7↙
(2)“*”符:表示该输入项读入后不赋予相应的变量,即跳过该 输入值。例如:
scanf("%d%*d%d", &a,&b); 当输入为:7 8 9↙时,则把7被赋予a,8被跳过,9被赋予 b。 (3)宽度:用十进制整数指定输入的宽度(即字符数)。例如:
scanf("%4d%d", &a,&b); 当输入为:1234789↙时,则把1234被赋予a,789被赋予b。 (4)长度:长度格式符为l和h,l表示输入长整型数据(如:%ld) 和双精度浮点数(如:%lf),h表示输入短整型数据。
b=5944568,26532370,5ab4f8,5AB4F8
Visual Basic程序设计教程电子课件——程序设计基础
2.1.2 如何学习Visual Basic
2.编程实验对能力提高最重要
学习Visual Basic与学习下棋有很多相似,值得类比、 借鉴。
学下棋必须先学各棋子的移动规则,但记住了“马走日、 象走田”并不意味着你就会下棋了,必须要勤于对奕并潜 心钻研。学习Visual Basic必须先了解Visual Basic语 言的基本规则,而更重要的是在实际应用中逐步提高编程 能力。
有懂不懂的问题。有此认识,才能避免进入许多初 学者都易于陷入的误区,从而使我们的学习获得事 半功倍的效果。
时常有学生为没有用心去记因此没有记住这些 规则而苦恼,经常有学生用一句“一点都不懂”来 表达此时的心情,是非常有害的,使得学习 Visual Basic迟பைடு நூலகம்才得以入门,从而耽误了宝贵 的学习时间。
4
2.1.1 计算机高级语言与语言处理系 统
再譬如,可以在一行上写上这样的两条语句“x=5: y=x*7.3”,但决不允许写成“x=5, y=x*7.3”,因为 Visual Basic的规则是一行上的多条语句之间必须用冒号 间隔。
(2) 语言处理系统开发者必须根据这套规则去设计、 制作语言处理系统,对于用户严格按照相应语言的规定编 写的程序,该系统应能够处理它并最终生成该程序的可执 行文件。
关于Visual Basic语言我们只能了解并熟记,我们只 能遵守规则而不能去创造规则,我们学习的意义在于用高 级语言编写程序去解决实际问题。
5
2.1.2 如何学习Visual Basic
1.语言规则要熟记 学习Visual Basic首先要做到熟记Visual
Basic语言的规则。 对于规则,只有记得住与记不住的问题,而没
若计算圆柱体的体积并存入变量v,声明v为Single 类型,半径和圆周率也采用Single类型,则结果v具有6位 有效数字;如果要求计算结果具有更高的精确度,可以考 虑采用Double类型声明v与相关变量。
结构化程序设计
C语言第3章_
o,x
f
e g c
计算机基础教学部
17
二、printf格式符说明
■ 另外,还有其他格式符如:
■m
■l ■ 将在需要的时候用实例讲解。
计算机基础教学部
18
二、printf一般格式
■
%[标志][输出最小宽度][.精度][长度]格式字符
#include <stdio.h> #include <stdio.h> main() main() { { 输出结果:10,3.4 int a=10; 10 3.4 int a=10; 输出结果:103.4 float b=3.4; float b=3.4; printf(“%d%f\n”,a,b);/*a是int类型,用%d格 printf(“%d ,%f\n”,a,b); 式, b是float类型,用 %f格式*/ } printf(“%d%6.2f\n”,a,b) }
}
计算机基础教学部
23
四、格式输入函数scanf
输入数据赋给变量:
#include <stdio.h> #include <stdio.h> #include <stdio.h> #include <stdio.h> main() main() main() #include <stdio.h> main() { { { main() { int a,b; float h,w; int a;{ float b; scanf(“%d%d”,&a,&b); printf(“请输入身高(米):”); scanf(“%d”,&a); double c; scanf(“%f”,&b); scanf(“%f”,&h); } scanf(“%lf”,&c); } } printf(“请输入体重(千克):”); } scanf(“%f”,&w); printf(“肥胖指数为:%.2f\n”,w/h/h);
第三章 结构化程序设计控制结构
三. 多重判断IF-ELSE IF
IF (条件1) THEN …… 条件1成立时,执行这个模块程序 …… ELSE IF(条件2) THEN …… 条件2成立时,执行这个模块程序 …… ELSE IF(条件3) THEN …… 条件3成立时,执行这个模块程序 …… …… ELSE IF(条件4) THEN …… 条件4成立时,执行这个模块程序 …… ELSE ! ELSE这个模块可以省略 …… 每个条件都不成立时,才执行这个模块程序 …… END IF
PRINT *, "RAIN:" READ *, RAIN PRINT *, "WIND:" READ *, WINDSPEED IF ( RAIN>=500 .OR. WINDSPEED>=10) THEN PRINT *, "停止上班上课" ELSE PRINT *, "照常上班上课" END IF STOP END
* 逻辑运算符:
.NOT.;.AND.;.OR.;.EQV.;.NEQV.;.XOR.
优先级由高到低依次为:算术运算符,关系运算 符和逻辑运算符。
例3-3
PROGRAM EX0403 IMPLICIT NONE INTEGER RAIN, WINDSPEED
例3-8判断象限
PROGRAM EX0308 IMPLICIT NONE REAL X,Y INTEGER ANS WRITE (*,*) "INPUT (X , Y)" READ (*,*) X,Y
IF ( X>0 ) THEN IF (Y>0) THEN ! X>0,Y>0 ANS=1 ELSE IF (Y<0) THEN ! X>0, Y<0 ANS=4 ELSE ! X>0, Y=0 ANS=0 END IF ELSE IF (X<0) THEN IF (Y>0) THEN ! X<0, Y>0 ANS=2 ELSE IF (Y<0) THEN ! X<0, Y<0 ANS=3 ELSE !X<0, Y=0 ANS=0 END IF
结构化程序设计
结构化程序设计结构化程序设计结构化程序设计(Structured Programming)是一种编程方法学,旨在通过使用控制结构和模块化的方式来提高程序的可读性和可维护性。
它强调程序应该被分解为小而独立的、可重用的块,并且应该使用清晰的控制结构来组织代码。
结构化程序设计通过减少代码中的跳转和条件语句来降低程序的复杂性,使得程序更易于理解和调试。
1. 控制结构在结构化程序设计中,主要有三种基本的控制结构:1.1 顺序结构顺序结构是最简单的控制结构,程序按照顺序执行语句,没有任何条件或循环。
例如,下面是一个简单的顺序结构的伪代码示例:pythonStep 1: 读取输入Step 2: 处理数据Step 3: 输出结果1.2 选择结构选择结构用于根据特定条件选择不同的路径执行代码。
通常使用`if`语句或`switch`语句来实现选择结构。
例如,下面是一个使用`if`语句实现的选择结构的伪代码示例:pythonif 条件1:执行语句1elif 条件2:执行语句2else:执行语句31.3 循环结构循环结构用于重复执行一段代码,直到满足特定条件才停止。
通常使用`for`循环或`while`循环来实现循环结构。
例如,下面是一个使用`while`循环实现的循环结构的伪代码示例:pythonwhile 条件:执行语句2. 模块化设计模块化设计是结构化程序设计的另一个关键概念,它将程序分解为相互独立的模块,每个模块负责完成特定的任务。
模块化设计可以提高代码的可重用性和可维护性,并且使得程序更易于理解和测试。
在模块化设计中,每个模块应该具有清晰的输入和输出接口,尽量减少模块之间的依赖关系。
模块之间的通信可以通过参数传递、全局变量或回调函数等方式实现。
例如,一个计算矩形面积的模块可以设计如下:pythondef calculate_area(length, width):area = length widthreturn area在上述示例中,`calculate_area`是一个独立的模块,它接收矩形的长度和宽度作为参数,并返回计算的面积。
第3章_结构化程序设计
• 2. if-else语句
• 语法形式:
if (<条件>) <语句1> else <语句2>
如果“条件”为 “真”,则执行 “语句1”;否则 执行“语句2”
条件
假(0)
真(非0)
语句1 语句2
如图3-2所示
图3-2 if-else语句的执行过程
例如:
if(a+b>c && b+c >a && a+c>b)//判定合法性 { //求三角形面积 p = (a+b+c)/2; s = Math.sqrt(p*(p-a)*(p-b)*(p-c)); } else Console.WriteLine(“三角形的三边数据有 错!”);
//在条件表达式中实现改变循环控制变量之值
int digit=0;
while(digit++<=9) { Console.WriteLine(“{0}”,digit); } //在Console.WriteLine()语句中实现改变循环控制变量之值 int digit=0;
while(digit<=9)
• switch表达式必须是sbyte、byte、ushort、uint、 long、ulong、char和sting(或基于这些类型之一的 一个enum)类型(或隐式地转移到这些类型) • 必须对每个case语句提供一个跳转语句(break语句) ,包括最后的case语句 • 对每个switch语句来说,只能有一个default语句。 而当所有的case语句都不执行,且又没有default语 句时,则控制转移到switch语句的闭花括号之后的 第一行代码,即switch整个语句都不执行
第三章 顺序结构程序设计
步骤1:0 => s; 步骤2:1 => I; 步骤3:s+i => s; 步骤4:i+1 => I; 步骤5:如果i≤1000,转到步骤3,否则结束。 在上面的算法中,符号s、i表示变量,符号“=>” 表示给变量赋值。步骤1和步骤2表示给变量s和i 赋初始值为0和1;步骤3将变量i的当前值累加到 变量s中;步骤4使变量i在原值的基础上增加1; 步骤5判断i的值如果小于等于1000,重复做步骤 3和步骤4,构成一个循环,而当i的值不小于等于 1000时,循环结束,这时,变量s的值就是要求 的计算结果。
2.函数调用语句 函数调用语句由一次函数调用加一个分号(语句结 束标志)构成。例如: printf("This is a C Program."); 3.表达式语句 表达式语句由表达式后加一个分号构成。 表达式能构成语句是C语言的一大特色。最典型的 表达式语句是在赋值表达式后加一个分号构成的赋值 语 句 。 例 如 , “ num=5” 是 一 个 赋 值 表 达 式 , 而 “num=5;”却是一个赋值语句。
3.3 格式化输出函数printf()
程序运行中,有时候需要从外部设备(例如键盘)上得 到一些原始数据,程序计算结束后,通常要把计算结果发 送到外部设备(例如显示器)上,以便人们对结果进行分析。 我们把程序从外部设备上获得数据的操作称为“输入”, 而把程序发送数据到外部设备的操作称为“输出”。 不像其他的高级语言,C语言没有专门的输入/输出语 句,输入/输出的操作是通过调用C语言的库函数来实现的。 printf()函数是最常用的输出函数,它的作用是向计算机系 统默认的输出设备(一般指显示器)输出一个或多个任意指 定类型的数据。
3.1.2 算法的特征 通常,一个算法必须具备以下五个基本特征: (1) 有穷性。一个算法必须在它所涉及的每一种情 形下,都能在执行有限次的操作之后结束。 (2) 确定性。算法的每一步,其顺序和内容都必须 严格定义,而不能有任何的歧义。 (3) 有零个或多个输入。输入是算法实施前需要从 外界取得的信息,有些算法需要有多个输入,而有些 算法不需要输入,即零个输入。 (4) 有一个或多个输出。输出就是算法实施后得到 的结果,显然,没有输出的算法是没有意义的。 (5) 可行性。算法的每一步都必须是可行的,也就 是说,是能够由计算机执行的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2.1 C语言语句概述
5、空语句 只有分号“;”组成的语句称为空语句,空语句是什么也不做 的语句。在程序中空语句用在语法上需要有一条语句,但逻 辑上又没有什么要做的场合。 例如:while (getchar()!='\n') ;
2013年10月7日星期一 第3章 结构化程序设计 第12页 上海师范大学 计算机系
3.2.2 常用的输入和输出函数
注意:要求格式控制字符串中的格式说明项与变量在数量和 类型上应该一一对应。例如: int a,b,c; printf("Input a、b、c:"); scanf("%d%d%d", &a,&b,&c); 输入为:7 8 9↙ /* ↙表示回车 */ 或 7↙ 8↙ 9↙ 2) 格式说明项 一般形式为:%[*][输入数据宽度][长度]类型 其中有方括号[]中的项为可选项。各项的意义如下:
模块1 模块2 模块3
子模块11
2013年10月7日星期一
子模块12
子模块31
子模块32
第3页
子模块33
上海师范大学 计算机系
第3章 结构化程序设计
3.1 结构化程序设计概述
(2) 在详细设计阶段采用“基本结构,组合而成”的方法,就是 程序不论大小,简单还是复杂,程序的结构由三种基本结构 (即顺序结构、选择结构和循环结构)组合而成,程序各个 部分之间做到“一个入口,一个出口”,没有随意的跳转。 这样的程序结构清晰,易于发现错误。 (3) 在最后的编码阶段应做到“清晰第一,效率第二”,并采用 良好的程序设计风格,从而提高程序的可读性,便于调试时 改正错误,也便于程序的维护。
2013年10月7日星期一 第3章 结构化程序设计 第14页 上海师范大学 计算机系
3.2.2 常用的输入和输出函数
3) 注意事项 (1)与printf函数不同,scanf函数中double型变量必须用%lf输 入,short型变量必须用%hd输入。变量必须给出变量的地 址,例如:scanf("%d", a); 是非法的。 (2)scanf函数中对实数没有精度控制。例如:scanf(“%5.2f”, &a); 是非法的。 (3)在输入数值数据时,输入字符流中的前导空白符会被自动丢 弃,从空白符后的字符开始输入。遇到①空白符;②已读入 由宽度所指定的字符数;③非法字符(例如:对“%d”输入 “12A”时,A即为非法字符)三种情况即认为该数据输入完 毕。 所以,从键盘读入数据,若不指定输入的宽度,空白符可以 作为数与数之间的分隔符。
2013年10月7日星期一 第3章 结构化程序设计 第10页 上海师范大学 计算机系
3.2.2 常用的输入和输出函数
例3.1 printf函数中的格式控制字符示例。
#include <stdio.h> int main() { char c='k'; int a=5683; long b=5944568; float f=48.357621; double d=35648256.3645287; printf("a=%d,%6d,%3d\n", a,a,a); printf("b=%ld,%lo,%lx,%lX\n", b,b,b,b); printf("today=%4d-%02d-%02d\n", 2012,3,18); printf("f=%f,%8.3f,%-8.3f,%e\n", f,f,f,f); printf("d=%f,%8.4f,%8.10f,%E\n", d,d,d,d); printf("c=%c,%4c,string=%6.3s\n", c,c,"program"); return 0; } 运行结果: a=5683, 5683,5683 b=5944568,26532370,5ab4f8,5AB4F8 today=2012-03-18 f=48.357620, 48.358,48.358 ,4.835762e+001 d=35648256.364529,35648256.3645,35648256.3645287010,3.564826E+007 c=k, k,string= pro
2013年10月7日星期一 第3章 结构化程序设计 第11页 上海师范大学 计算机系
3.2.2 常用的输入和输出函数
3) 注意事项 使用printf函数时还要注意一个问题,那就是输出表列中的 求值顺序。不同的编译系统不一定相同,可以从左到右,也 可从右到左。Dev-C++ 4.9.9.0是按从右到左进行的。例如: int i=8; printf("%d %d\n", i,i--); /* 输出7 8,不是8 8 */ 但是必须注意,求值顺序虽是自右至左,但是输出顺序还是 从左至右,因此得到的结果是上述输出结果。 2、scanf()函数 1) scanf函数调用的一般形式 scanf("格式控制字符串", 地址列表) 其中格式控制字符串中的字符也有普通字符和格式说明项两 种,但不能显示普通字符,也就是不能显示提示字符串。
高级语言程序设计 (C语言描述)
陆黎明 朱媛媛 蒋 培 编著 科学出版社 2013.1
上海师范大学 计算机系
3.1 结构化程序设计概述
• 程序设计方法是影响程序设计成败以及程序设计质量的重要 因素之一。目前,程序设计的方法有两大类,一类是面向过 程的结构化程序设计方法,另一类是面向对象的程序设计方 法。这里主要介绍结构化程序设计方法,它是进行各类程序 设计的基础,有助于程序设计思想的形成和理解。 • 结构化程序设计方法强调程序设计风格和程序结构的规范化, 提倡清晰的结构。 • 早期的程序设计是非结构化的,所编写的程序中含有大量的 goto语句,其缺点是程序的流程非常混乱,不便于对程序的 阅读和理解,也不便于程序中错误的排除,更不便于程序的 维护和扩展。
2013年10月7日星期一
第3章 结构化程序设计
第5页
上海师范大学 计算机系
3.2.1 C语言语句概述
3、控制语句 控制语句用于控制程序的流程,以实现程序的各种结构方式。 C语言有九种控制语句,可分成以下三类: (1) 条件判断语句:if语句,switch语句 (2) 循环执行语句:while语句,do while语句,for语句 (3) 转向语句:break语句,continue语句,goto语句,return 语句 4、复合语句 把多个语句用花括号{}括起来组成的一个语句称为复合语句。 复合语句用在语法上只能有一条语句,但逻辑上需要多条语 句的场合。 例如:if (x>y) { t=x; x=y; y=t; }
2013年10月7日星期一
第3章 结构化程序设计
第7页
上海师范大学 计算机系
3.2.2 常用的输入和输出函数
• 所谓输入输出是以计算机主机为主体而言的,从计算机向输 出设备输出数据称为输出,从输入设备输入数据称为输入。 • C语言本身没有输入输出语句,输入输出是靠库函数来实现 的,C语言不提供输入输出语句的原因:编译系统简单、高 效、通用性强、可移植性好。 • 在C语言中使用输入输出库函数(包括printf、scanf等),要 用“#include <stdio.h>”命令。 1、printf()函数 1) printf函数调用的一般形式 printf("格式控制字符串", 输出项列表) 其中格式控制字符串用于指定输出格式。该字符串中的字符 有两种:
2013年10月7日星期一 第3章 结构化程序设计 第9页 上海师范大学 计算机系
3.2.2 常用的输入和输出函数
(1)类型:表示输出项数据的类型,其类型格式字符和意义如表 3.1所示。 (2)输出最小宽度:用十进制整数来表示输出的最少位数。若实 际位数多于定义的宽度,则按实际位数输出,若实际位数少 于定义的宽度则补以空格或0。 (3)精度:精度格式符以“.”开头,后跟十进制整数。本项的意 义是:如果输出的是实型数,则表示小数的位数;如果输出 的是字符串,则表示输出的字符个数;若字符串实际字符数 大于所定义的精度数,则截去超过的部分。 (4)长度:长度格式符为l,可加在d、o、x、u前,表示按长整 型量输出。 (5)标志:标志格式符用于控制输出项输出时的具体格式,最常 用的标志格式字符和意义如表3.2所示:
第3章 结构化程序设计 第8页 上海师范大学 计算机系
2013年10月7日星期一
3.2.2 常用的输入和输出函数
(1)普通字符:包括可打印的西文字符、汉字和转义字符,起到 提示的作用。 (2)格式说明项:由%与格式字符组成,其作用是将数据按指定 的格式输出 注意:要求格式控制字符串中的格式说明项与输出项(输出 项可以是表达式)在数量和类型上应该一一对应。若格式控 制字符串中没有格式说明项,则输出项也就不再需要。例如: int a=3,b=8; printf("a=%d b=%d\n", a,b); 2) 格式说明项 一般形式为:[标志][输出最小宽度][.精度][长度]类型 其中方括号[]中的项为可选项。各项的意义如下:
2013年10月7日星期一
第3章 结构化程序设计
第2页
上海师范大学 计算机系
3.1 结构化程序设计概述
• 1965年荷兰学者E.W.Dijkstraz在一次会议上指出:“可以 从高级语言中取消goto语句”,“程序的质量与程序中所包 含的goto语句的数量成反比”。1966年Boehm和Jacopini 证明:“只用三种基本的控制结构就能实现任何单入口、单 出口的程序”。Boehm和Jacopini的证明为结构化程序设 计技术奠定了理论基础。经过多年的实践,结构化程序设计 的理论和方法日益完善并已被广泛接受和使用,也总结出了 在总体设计、详细设计和编码阶段应该遵循的一些原则: (1) 在总体设计阶段采用“自顶向下,逐步求精”的模块化设计 方法 需要解决的问题