NO.3-2《C语言程序设计教案》备注第三讲:算法和顺序结构程序设计1.了解算法的含义、基本特征、类型、结构和描述工具目的2.掌握C语言输入输出函数的格式、功能和使用方法;要3.掌握顺序结构程序设计方法;1求学时划分3小时组织形式讲授+自学+独立作业+上机实作量1.C语言输入输出函数;点2.顺序程序设计的方法;难点[引题]前两次课,我们重点研究了C语言的基本数据类型,各种运算符和表达式。不难看出,研究基本数据类型的目的,实质上就是解决C语言环境下我们可以使用和处理的数据种类及在编程时的表示方法;而运算符和表达式则主要研究了如何通过运算符把要处理的数据连接起来以便得到我们想要的结果。从今天开始,我们就来研究如何编制C语言程序。就是书中的第三章要介绍的内容。第三章程序控制结构和结构化程序设计[引题]在前面介绍数据类型时,曾经给大家说过,数据结构是程序设计的重要概念,另一个重要概念就是算法,著名的计算机专家N.沃恩教授提出了:程序=数据结构+算法。在介绍程序设计之前,我们有义要了解有关算法的知识。这也就是书中第一节介绍的内容。3.1算法及其描述一、算法的基本概念说明sqrtO算法是处理问题的方法和步骤,具体地说,就是为解决特定为求方根的问题而要一步一步执行的有穷操作的描述。函数如:解一元二次方程(ax2+bx+c=0)的算法1.首先计算:p=b*b-4*a*c2.若p>=0,则执行3.,否则执行43.计算两实根:X1=(-b+sqrt(p))/2a
《C 语言程序设计教案》 NO.3-2 第三讲 算法和顺序结构程序设计 备 注 目 的 要 求 1. 了解算法的含义、基本特征、类型、结构和描述工具; 2. 掌握 C 语言输入输出函数的格式、功能和使用方法; 3. 掌握顺序结构程序设计方法; 学时划分 3 小时 组织形式 讲授+自学+独立作业+上机实作 重 点 难 点 1.C 语言输入输出函数; 2.顺序程序设计的方法; [引题]前两次课,我们重点研究了C语言的基本数据类型,各种运算 符和表达式。不难看出,研究基本数据类型的目的,实质上就是解决 C语言环境下我们可以使用和处理的数据种类及在编程时的表示方 法;而运算符和表达式则主要研究了如何通过运算符把要处理的数据 连接起来以便得到我们想要的结果。从今天开始,我们就来研究如何 编制C语言程序。就是书中的第三章要介绍的内容。 第三章 程序控制结构和结构化程序设计 [引题]在前面介绍数据类型时,曾经给大家说过,数据结构是程序设 计的重要概念,另一个重要概念就是算法,著名的计算机专家N.沃恩 教授提出了:程序=数据结构+算法。在介绍程序设计之前,我们有必 要了解有关算法的知识。这也就是书中第一节介绍的内容。 3.1 算法及其描述 一、算法的基本概念 算法是处理问题的方法和步骤,具体地说,就是为解决特定 的问题而要一步一步执行的有穷操作的描述。 如:解一元二次方程( 0 )的算法 2 cbxax =++ 1. 首先计算:p=b*b-4*a*c 2. 若 p>=0,则执行 3.,否则执行 4 3. 计算两实根: X1=(-b+sqrt(p))/2a 说明 sqrt() 为求方根 函数
NO.3-3第三讲控制结构和结构化程序设计x2=(-b-sqrt(p))/2a结束计算4.计算两复根xl=-b/2*a+isqrt(p)/2ax1=-b/2*a-isqrt(p)/2a结束计算如:判断N(N>2)是否为素数的算法1.输入N的值2.设置I=23.计算R=N%I4.若R=0,N不是素数,结束处理;若R!=0,则执行55. I=I+16.若I<=N-1,转至3执行,否则N是素数,结束处理[引题]由以上两个具体的例子我们不难看出,算法实质上就是对特定问题处理方法和步骤的描述。接下来,我们看一下它所具有的基本特征。二、基本特征1.有穷性2.确定性3.有效性(可操作性)4.有0个或多个输入5.有一个或多个输出三、算法的类型与结构(一)类型它是任何数值算法算法都离非数值算法不开的基本主体结(二)结构构1.顺序结构入口S3+出口S1S22.分支结构
第三讲 控制结构和结构化程序设计 NO.3-3 X2=(-b-sqrt(p))/2a 结束计算 4. 计算两复根 x1=-b/2*a+isqrt(p)/2a x1=-b/2*a-isqrt(p)/2a 结束计算 如:判断 N(N>2)是否为素数的算法 1. 输入 N 的值 2. 设置 I=2 3. 计算 R=N%I 4. 若 R=0,N 不是素数,结束处理;若 R!=0,则执行 5 5. I=I+1 6. 若 I<=N-1,转至 3 执行,否则 N 是素数,结束处理 [引题]由以上两个具体的例子我们不难看出,算法实质上就是对特定 问题处理方法和步骤的描述。接下来,我们看一下它所具有的基本特 征。 二、基本特征 1. 有穷性 2. 确定性 3. 有效性(可操作性) 4. 有 0 个或多个输入 5. 有一个或多个输出 三、算法的类型与结构 (一)类型 数值算法 非数值算法 (二)结构 1.顺序结构 2.分支结构 它是任何 算法都离 不开的基 本主体结 构 入口 S1 S2 S3 出口
NO.3-4《C语言程序设计教案》说明(3)循环结构分支结构Y也是基本真条件和常用的S1依据条件Y假取值来选条件择如何执S2S1真行假循环结构-对某一处4理块反复执行指定(分支结构)(循环结构)次数四、算法的描述工具流程图、N-S图、PAD图和PDL语言五、结构化程序设计1.实质将问题按“自上至下,逐步求精”的原则分解为若干小问题,对各个小问题进行编程,进而构出整个程序2.优点结构清晰、可读性强、可维护性强3.2结构化程序设计一、C语言语句概述(一)控制语句1.if语句2.for循环语句3.while循环语句4.dowhile循环语句5.continue语句6.break语句7.switch语句8.goto语句9.rerurn语句(二)表达式语句由分号(;)结尾的表达式如:x+5;x-y,x*y+3;
《C 语言程序设计教案》 NO.3-4 (3)循环结构 (分支结构) (循环结构) 四、算法的描述工具 流程图、N-S 图、PAD 图和 PDL 语言 五、结构化程序设计 1. 实质 将问题按“自上至下,逐步求精”的原则分解为若干小问题,对 各个小问题进行编程,进而构出整个程序 2. 优点 结构清晰、可读性强、可维护性强 3.2 结构化程序设计 一、C 语言语句概述 (一)控制语句 1. if 语句 2. for 循环语句 3. while 循环语句 4. do while 循环语句 5. continue 语句 6. break 语句 7. switch 语句 8. go to 语句 9. rerurn 语句 (二)表达式语句 由分号(;)结尾的表达式 如:x+5; x-y,x*y+3; 说明 分支结构 也是基本 和常用的 依据条件 取值来选 择如何执 行 循环结构 对某一处 理块反复 执行指定 次数 假 真 条件 S2 S1 条件 真 假 S1
NO.3-5第三讲控制结构和结构化程序设计(三)空语句只包含一个分号(;)的语句常用空语句作为控制的转移点(四)复合语句(分程序)用大括号【】括起来的一组语句一般格式:1Tz=x-y;说明部分;m=max(a,b,c) :可执行语句部分;printf(“%d%f",z,m);11二、顺序结构(最简单)的程序设计说明C语言没有(一)赋值语句专门的输以分号(;)结尾的赋值表达式入输出语句,在需要如:x=y*y+10;输入和输出时,就要x*=y+5;调用输入(二)数据的输入/输出(P266)输出函数1.格式化输出函数printfO(1)格式printf(“输出格式描述串”,输出项表列);(2)功用按指定格式,将输出项输出到标准输出设备(屏幕)(3)输出格式格式转换说明:%[+][-]Om[.n]1<形式字母>①起始标识%②指定输出位置[+1[-]+或缺省:靠右端char str-"ABC",结果为:-:靠左端printf(%-5s",str),ABCU③指定输出长度ml.n]Uprintf(% +5s",str),ABC实数:m是总长度,n是小数位字符串:m是总长度,n输出个数
第三讲 控制结构和结构化程序设计 NO.3-5 (三)空语句 只包含一个分号(;)的语句 常用空语句作为控制的转移点 (四)复合语句(分程序) 用大括号{ }括起来的一组语句 一般格式: { 说明部分; 可执行语句部分; } 二、顺序结构(最简单)的程序设计 (一)赋值语句 以分号(;)结尾的赋值表达式 如:x=y*y+10; x*=y+5; (二)数据的输入/输出(P266) 1.格式化输出函数printf() (1)格式 printf(“输出格式描述串”,输出项表列); (2)功用 按指定格式,将输出项输出到标准输出设备(屏幕) (3)输出格式 格式转换说明: %[+][-]0m[.n]l<形式字母> ① 起始标识% ② 指定输出位置[+][-] +或缺省:靠右端 -:靠左端 ③ 指定输出长度 m[.n] 实数: m 是总长度, n 是小数位 字符串: m 是总长度, n 输出个数 说明 C 语言没有 专门的输 入输出语 句,在需要 输入和输 出时,就要 调用输入 输出函数 { z=x-y; m=max(a,b,c); printf(“%d %f”,z,m); } char str[]=”ABC”; 结果为: ABC ⌴ ⌴ printf(“% -5s”,str); printf(“% +5s”,str); ABC
NO.3-6《C语言程序设计教案》说明④指定填01.指定填0③指定输出精度char str-"ABCDE"只对数值结果为:输出printf(%-5.3s",str);③形式字母(P270)2.形式字ABCUprintf("% +5.3s",str);母含义及Ud:十进制整数ARC使用详见x:十六进制整数P270表3.输出格Q:八进制整数式中的其int d=-2;结果为:它字符原u:无符号十进制整数printf(**d=%d In",d);*d=-2盘输出*d=177776c:单个字符printf(*d=%o",d);,*d=65534printf(**d=%u",d);s:字符串f:小数形浮点数main()(4)输出项表结果为:1output_result:①指定要输出的数据x=10,y=15,2=25int x,y,z,x+y=25②数据间用逗号隔开x=10,y=15,z=25;X+y+z=50printf("output_result:In");③可以是变量,也可以是表达式printf(*x=%d, y=%d, z=%din",x,y,2),个数应于格式说明一致printf(*x+y=%din x+y+z=%din,x+y,x+y+z);12.格式化输入函数scanfO(1)一般格式scanf(“输入格式描述串”,输入项列表);(2)功用按指定格式从标准输入设备(键盘)读取数据(3)输入格式描述串main()结果为:1输入分隔符:please input x,y,z:75,85,95<CR>int x,y,z,空格:口x=75 y=85 z=95float average;average=85.0其它字符:如“:”“!”“#(4)输入项列表printf( please input x,y,zin"),scanf("%d, %d, %d",&x,&y,&z);①指定输入的项average=(x+y+z)/3;②必须以地址形式给出(&变量)printf("x=%d y=%d z=%dinaverage=%fln,&x&y,&z,&average)
《C 语言程序设计教案》 NO.3-6 ④ 指定填 0 ⑤ 指定输出精度 ⑥ 形式字母(P270) d:十进制整数 x:十六进制整数 o:八进制整数 u:无符号十进制整数 c:单个字符 s:字符串 f:小数形浮点数 (4)输出项表 ①指定要输出的数据 ②数据间用逗号隔开 ③可以是变量,也可以是表达式 ④个数应于格式说明一致 2.格式化输入函数scanf() (1)一般格式 scanf(“输入格式描述串”,输入项列表); (2)功用 按指定格式从标准输入设备(键盘)读取数据 (3) 输入格式描述串 输入分隔符: 空格: ⌴ 其它字符:如“:”“!”“#” (4) 输入项列表 ①指定输入的项 ②必须以地址形式给出(&变量) 说明 1.指定填 0 只对数值 输出 2. 形 式 字 母含义及 使用详见 P270 表 3. 输 出 格 式中的其 它字符原 盘输出 char str[]=”ABCDE”; printf(“% -5.3s”,str); printf(“% +5.3s”,str); 结果为: ABC ⌴ ⌴ ABC int d=-2; printf(“*d=%d \n”,d); printf(“*d=%o”,d); printf(“*d=%u”,d); 结果为: *d=-2 *d=177776 *d=65534 main() scanf(“%d, %d, %d”,&x,&y,&z); average=(x+y+z)/3; printf(“x=%d y=%d z=%d\naverage= %f\n”, &x,&y,&z, &average); } { int x,y,z; float average; printf(“ please input x,y,z:\n”); 结果为: please input x,y,z: 75,85,95<CR> x=75 y=85 z=95 average=85.0 main() { int x,y,z; x=10,y=15,z=25; printf(“output_result:\n”); printf(“x=%d, y=%d, z=%d\n”,x,y,z); printf(“x+y=%d\n x+y+z=%d\n”,x+y,x+y+z); } 结果为: output_result: x=10,y=15,z=25 x+y=25 x+y+z=50