C语言程序课件ppt-第3章算法、输入输出函数、顺序结构.ppt

上传人:君**** 文档编号:77877190 上传时间:2023-03-16 格式:PPT 页数:63 大小:838.50KB
返回 下载 相关 举报
C语言程序课件ppt-第3章算法、输入输出函数、顺序结构.ppt_第1页
第1页 / 共63页
C语言程序课件ppt-第3章算法、输入输出函数、顺序结构.ppt_第2页
第2页 / 共63页
点击查看更多>>
资源描述

《C语言程序课件ppt-第3章算法、输入输出函数、顺序结构.ppt》由会员分享,可在线阅读,更多相关《C语言程序课件ppt-第3章算法、输入输出函数、顺序结构.ppt(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第3 3章章 算法、输入输出函数、顺序结构算法、输入输出函数、顺序结构 算法及其算法的表示方法算法及其算法的表示方法 C C语句概述语句概述 基本的数据输入基本的数据输入/输出函数输出函数 简单的简单的C C程序设计程序设计 著名计算机科学家沃思(著名计算机科学家沃思(Niklaus Wirth)Niklaus Wirth)提出提出 程序程序 =数据结构数据结构 +算法算法描述数据的类描述数据的类型、组织形式型、组织形式描述对数据描述对数据的操作步骤的操作步骤3.1算法的概念及常用的描述方法算法的概念及常用的描述方法3.1.1算法的概念算法的概念做事情都有做事情都有方法方法、步骤步骤(顺序)

2、(顺序)决定事情成败决定事情成败1、算法:计算机求解某一问题而采用的具体方法、步骤、算法:计算机求解某一问题而采用的具体方法、步骤2、两大类计算机算法:数值运算算法(求数值解、两大类计算机算法:数值运算算法(求数值解-成熟)成熟)非数值运算算法非数值运算算法(事务管理事务管理-广泛)广泛)3、算法的特性:有穷性、确定性、有效性等、算法的特性:有穷性、确定性、有效性等4、算法的描述:描述算法的方法有多,归纳为两大类:、算法的描述:描述算法的方法有多,归纳为两大类:(1)文字)文字(2)图形(符号)图形(符号)3.1.2 算法的常用描述方法算法的常用描述方法1、带序号的自然语言描述、带序号的自然语

3、言描述-易懂却不直观,不严格。易懂却不直观,不严格。2、流程图:灵活、自由、形象、直观,可表示任何算法。、流程图:灵活、自由、形象、直观,可表示任何算法。输入输入/输出输出 处理处理 判断判断 起止起止 连接点连接点 流程线流程线N-S流程图流程图4、伪代码:用介于自然语言与计算机语言之间的文字及符号来、伪代码:用介于自然语言与计算机语言之间的文字及符号来描述算法(方便、易懂、便于向计算机语言过渡)描述算法(方便、易懂、便于向计算机语言过渡)3、N-S图(盒图)特点:完全去掉了带箭头的流程线,算法的图(盒图)特点:完全去掉了带箭头的流程线,算法的所有步骤都写在大矩形框(表示简单、符合结构化思想

4、)。所有步骤都写在大矩形框(表示简单、符合结构化思想)。ABP真真假假ABA当当P成立成立A直到直到P成立成立(a)顺序结构)顺序结构(b)选择结构)选择结构(c)当型循环)当型循环(d)直到型循环)直到型循环自然语言描述:自然语言描述:1、0 s单元单元2、1 n单元单元3、s+n s4、n+1 n5、判断、判断n100?是,转是,转3;否,则转;否,则转66、输出、输出s的值的值流程图描述:流程图描述:开始开始0 0 S1 nS+n Sn+1 nn100输出输出输出输出s sN-S图描述:图描述:0 s1 n n100?s+n s n+1 n 输出输出s的值的值伪代码描述:伪代码描述:0

5、s1 nif n100 s+n s n+1 nprint s 3.1.33.1.3结构化程序设计方法结构化程序设计方法一、结构化程序的三种基本结构一、结构化程序的三种基本结构19661966年提出三种基本结构,用这三种基本结构作为表示年提出三种基本结构,用这三种基本结构作为表示一种良好算法的基本单元:顺序、选择、循环。一种良好算法的基本单元:顺序、选择、循环。ABP真真假假ABA当当P成立成立A直到直到P成立成立(a)顺序结构顺序结构(b)选择结构选择结构(c)当型循环当型循环(d)直到型循环)直到型循环二、三种基本结构的共同特点二、三种基本结构的共同特点(1)单入口单出口)单入口单出口(2)

6、结构内的每一部分都有机会被执行)结构内的每一部分都有机会被执行(3)不存在)不存在“死循环死循环”三、结构化程序设计的优点三、结构化程序设计的优点用三种基本结构组成的程序是结构化程序用三种基本结构组成的程序是结构化程序优点:易编、易读、易懂、易维护优点:易编、易读、易懂、易维护强调强调程序设计风格程序设计风格和和程序结构的规范化程序结构的规范化核心思想:自顶向下,逐步细化,模块化设计,结构化编核心思想:自顶向下,逐步细化,模块化设计,结构化编码码 四、结构化程序设计过程四、结构化程序设计过程1、确定算法:分析问题(建立数学模型)写出算法描述、确定算法:分析问题(建立数学模型)写出算法描述2、编

7、写程序:用计算机语言写出实现算法的程序、编写程序:用计算机语言写出实现算法的程序3、上机调试:、上机调试:举例:张丘建举例:张丘建算经算经中提出中提出“百鸡问题百鸡问题”:鸡翁一值钱:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?鸡翁、母、雏各几何?(1)分析:)分析:cocks+hens+chicks=100 5*cocks+3*hens+chicks/3=100其中:其中:0cocks 19,0 hens 33,0 chicks 100思路思路:依次取:依次取cocks的值域中的值,然后求其余两数,看的值域中的值,

8、然后求其余两数,看是否合乎题意。是否合乎题意。算法描述算法描述:cocks=0cocks=0当当cocks cocks 19 19时时 找满足题意的找满足题意的hens,chickshens,chicks数数;cocks cocks 加加1 1 细化细化cocks=0cocks=0当当cocks cocks 19 19时时 hens=0 hens=0 当当hens hens 33 33时时 找满足题意的找满足题意的chickschicks数;数;hens hens 加加1 1 cocks cocks加加1 1 细化细化cocks=0cocks=0当当cocks cocks 19 19时时 he

9、ns=0 hens=0 当当hens hens 33 33时时 chicks=100-cocks-hens chicks=100-cocks-hens 如果如果5*cocks+3*hens+chicks/3=100,5*cocks+3*hens+chicks/3=100,5*cocks+3*hens+chicks/3=100,5*cocks+3*hens+chicks/3=100,则输出则输出则输出则输出 hens hens 加加1 1 cocks cocks加加1 1(2)用计算机语言写出程序)用计算机语言写出程序#include stdio.hvoid main()int cocks=0,

10、hens,chicks;while(cocks=19)hens=0;while(hens=33)chicks=100-cocks-hens;if(5.0*cocks+3.0*hens+chicks/3.0)=100.0)printf(%d%d%dn,cocks,hens,chicks);hens+;cocks+;(3)调试程序)调试程序变量定义与初始化变量定义与初始化赋值语句赋值语句选选择择结结构构复合语句复合语句循环语句循环语句025754187881181124843.2 C语言的基本语句语言的基本语句一、语句一、语句用来对数据进行加工用来对数据进行加工(完成操作任务完成操作任务),是构成

11、程序的基,是构成程序的基本单位,通常一个本单位,通常一个C C程序由若干个函数程序由若干个函数(系统系统/用户用户)组成,组成,每一函数由若干条语句组成。每条语句总是以每一函数由若干条语句组成。每条语句总是以”;”结束。结束。二、二、C C语句的分类语句的分类可分为三大类:可分为三大类:简单语句、复合语句、空语句简单语句、复合语句、空语句(一)简单语句(一)简单语句(1 1)表达式语句:由一个表达式后跟)表达式语句:由一个表达式后跟“;”组成组成赋值语句:赋值表达式加一个赋值语句:赋值表达式加一个;号号 如:如:s=3.14159*r*r;i+;s=3.14159*r*r;i+;函数调用语句:

12、函数调用表达式加一个;号函数调用语句:函数调用表达式加一个;号 如:如:printf(printf(“Hello,worldnHello,worldn”););函数调用语句函数调用语句表达式语句表达式语句(2(2)结构控制语句:控制程序的流程)结构控制语句:控制程序的流程(二)复合语句:将一组语句括在一对(二)复合语句:将一组语句括在一对中,如中,如复合语句复合语句、复合语句的、复合语句的之后不能有之后不能有;复合语句中可以是简单语句、复合语句、空语句复合语句中可以是简单语句、复合语句、空语句(三)空语句:;(三)空语句:;/*/*仅有一个;仅有一个;*/空语句什么也不做。有时用做被转向点,或

13、为循环语句提供空体。空语句什么也不做。有时用做被转向点,或为循环语句提供空体。空语句空语句控制语句控制语句 3.3 数据输入与输出数据输入与输出l输入和输出是以计算机主机为主体而言。输入和输出是以计算机主机为主体而言。输出外部输出外部设备:显示屏,打印机,磁盘。输入设备:设备:显示屏,打印机,磁盘。输入设备:键盘,键盘,扫描仪等。扫描仪等。默认输入设备是默认输入设备是键盘键盘,输出设备是,输出设备是显示显示器器lC 语言不提供输入输出语句语言不提供输入输出语句,输入输出操作是由函数输入输出操作是由函数来完成的。如前面提到的来完成的。如前面提到的printf和和scanf。它们是函。它们是函数名

14、不是数名不是C 语言的关键字。语言的关键字。l要用要用预编译命令预编译命令将库函数文件包括到用户源文件中。将库函数文件包括到用户源文件中。如:如:#include “stdio.h”或或#include 3.3.1 格式输出函数格式输出函数 printf()作用作用:向终端向终端(或系统隐含指定的输出设备或系统隐含指定的输出设备)输出输出若干个任意类型的数据若干个任意类型的数据。1.一般格式:一般格式:printf(“格式控制格式控制符符”,输出列表),输出列表)例如:例如:printf(“%d%d”,a,b););格式控制格式控制 输出列表输出列表printf(“%d b=%dn”,a,b)

15、格式说明格式说明 普通字符普通字符 转义字符转义字符 输出列表输出列表 结果结果 3 b=4完整的格式完整的格式:%:%标志标志输出最小宽度输出最小宽度.精度精度长度长度类型类型%-0 0 m.n m.n l/hl/h 格式字符格式字符 指定输出的数据类型指定输出的数据类型 输出长度的修正输出长度的修正 指定输出域宽和精度指定输出域宽和精度 指定空位填指定空位填0 0 指定左对齐输出指定左对齐输出 格式说明的引导符格式说明的引导符2 2、长度修正符、长度修正符L L:对整型数指定长整型:对整型数指定长整型longlong 例例:%ld,%lx,%lo,%lu:%ld,%lx,%lo,%lu :

16、对实型指双精度对实型指双精度double.double.如:如:%lf%lfh:h:只用于整型的格式字符修正为只用于整型的格式字符修正为shortshort 例:例:%hd,%hx,%ho,%hu%hd,%hx,%ho,%hu3 3、域宽和精度的描述、域宽和精度的描述m:m:域宽,即对应的输出项在输出设备上所占的字符数。域宽,即对应的输出项在输出设备上所占的字符数。若实际数宽度若实际数宽度mm,按实际数据宽度输出,按实际数据宽度输出若实际数宽度若实际数宽度mm,左边补空,左边补空n n:精度,说明输出的实型数的小数位数精度,说明输出的实型数的小数位数例例3.33.3#include#inclu

17、de void main()void main()int i=5;int i=5;float f=32.345;float f=32.345;printf(i=%3df=%5.1fn,i,f);printf(i=%3df=%5.1fn,i,f);printf(End.n);printf(End.n);格式控制字符串格式控制字符串:i=%3df=%5.1fn%5 .1 f引导符引导符 宽度宽度 小数位数小数位数(精度精度)类型符类型符结果:结果:i=5f=32.3i=5f=32.3 End.End.4.格式字符格式字符(1 1)d)d或或i i格式符。用来输出十进制格式符。用来输出十进制带符号带

18、符号整数整数。(2)o(2)o格式符。用来输出格式符。用来输出无符号无符号8 8进制整数进制整数。(3)x(3)x格式符。用来输出格式符。用来输出无符号无符号1616进制整数。进制整数。(4)u(4)u格式符格式符。用来输出十进制无符号整数用来输出十进制无符号整数例例3.43.4:#include#include void main()void main()unsigned short int a=65535u;unsigned short int a=65535u;short int b=-2;short int b=-2;printf(a=%hdprintf(a=%hd,%#ho%#ho,

19、%hx%hx,%hun,a,a,a,a);%hun,a,a,a,a);printf(b=%hdprintf(b=%hd,%ho%ho,%#hx%#hx,%hun,b,b,b,b);%hun,b,b,b,b);运行结果为:运行结果为:a=-1a=-1,01777770177777,ffffffff,6553565535 b=-2 b=-2,177776177776,0 xfffe0 xfffe,6553465534(5)c格式符。用来输出一个字符。格式符。用来输出一个字符。(6)s格式符。用来输出一个字符串格式符。用来输出一个字符串。(7)f格式符用来输出实数,以小数形式输出格式符用来输出实数,

20、以小数形式输出。(8)e格式符。以指数形式输出实数格式符。以指数形式输出实数。(9)g格式符。用来输出实数格式符。用来输出实数,自动选用,自动选用%f或或%e格式中格式较格式中格式较短的一种格式,不输出无意义的零。短的一种格式,不输出无意义的零。(10).%输出输出%例例3.53.5#include#include void main()void main()float a,b;float a,b;char c=a;char c=a;int i=97;int i=97;a=31.1111;a=31.1111;b=28.333;b=28.333;printf(%f,%7.4fn,a+b,a-b)

21、;printf(%f,%7.4fn,a+b,a-b);printf(%c,%dn,c,c);printf(%c,%dn,c,c);printf(%c,%dn,i,i);printf(%c,%dn,i,i);printf(printf(“%s,%n%s,%n”,“chinachina”););结果:结果:59.444099,2.778159.444099,2.7781 a,97 a,97 a,97 a,97 china,%china,%5 5、printf()printf()函数使用注意事项函数使用注意事项n 编译程序只是检查编译程序只是检查printf函数的调用形式,不分析格式控函数的调用形式

22、,不分析格式控制字符串,如果格式字符与输出项的类型不匹配,不进行制字符串,如果格式字符与输出项的类型不匹配,不进行类型转换类型转换;n格式控制字符串中可以包括转义字符格式控制字符串中可以包括转义字符;n格式字符要用小写字母格式字符要用小写字母;n格式控制字符串中的普通字符原样输出格式控制字符串中的普通字符原样输出;n输出项的参数除了常量、变量外,还可以是表达式,函数输出项的参数除了常量、变量外,还可以是表达式,函数调用,如:调用,如:printf(printf(“max=%dti=%dnmax=%dti=%dn”,imax(a,b),i+);,imax(a,b),i+);例例3.63.6#in

23、clude#include void main()void main()int i=321;int i=321;float f=123.456;float f=123.456;printf(%5d:,i);printf(%5d:,i);printf(%5.2fn,i);printf(%5.2fn,i);printf(%5d:,f);printf(%5d:,f);printf(%5.2fn,f);printf(%5.2fn,f);结果结果:321:0.00:321:0.00 5368709102:123.46 5368709102:123.463.3.2 格式输入函数格式输入函数scanf()格

24、式格式:scanf(“格式控制格式控制符符”,变量变量地址列表地址列表)作用:按格式控制符的要求将数据从终端传送到变量地址所作用:按格式控制符的要求将数据从终端传送到变量地址所指定的内存空间。指定的内存空间。1、变量地址、变量地址变量的地址通过对变量名变量的地址通过对变量名“求地址求地址”运算得到运算得到形式:形式:&变量名变量名例:例:3.7#include void main()int a;float b;scanf(%d%f,&a,&b);printf(%d%fn,a,b);2 2、格式控制符、格式控制符(1 1)、格式说明项(与)、格式说明项(与printfprintf基本相同)基本相

25、同)(2 2)、输入数据的分隔)、输入数据的分隔采用隐含的分隔符:空格、回车键、采用隐含的分隔符:空格、回车键、TabTab键键;根据格式中指定的域宽分隔数据项(不提倡)根据格式中指定的域宽分隔数据项(不提倡);采用用户指定的分隔符(不提倡)采用用户指定的分隔符(不提倡);例:例:3.8#include#include void main()void main()int a;int a;float b,c;float b,c;scanf(%2d%3f%2f,&a,&b,&c);scanf(%2d%3f%2f,&a,&b,&c);printf(a=%d,b=%f,c=%fn,a,b,c);pri

26、ntf(a=%d,b=%f,c=%fn,a,b,c);scanf(“%d,%f,%f”,&a,&b,&c);scanf(“a=%d,b=%f,c=%f”,&a,&b,&c);3.应用应用scanf函数应注意函数应注意:(1 1).格式控制后面是变量地址格式控制后面是变量地址,而不是变量名而不是变量名如:如:scanf(scanf(“%d,%d%d,%d”,a,b);,a,b);是不对的是不对的(2 2).格式控制字符串中除了格式说明符以外的其它字符格式控制字符串中除了格式说明符以外的其它字符,在输在输入时要原样输入入时要原样输入,如如:scanf(scanf(“%d:%d:%d%d:%d:%d

27、”,&a,&b,&c);,&a,&b,&c);scanf(scanf(“a=%d,b=%d,c=%da=%d,b=%d,c=%d”,&a,&b,&c);,&a,&b,&c);(3).3).在用在用“%c%c”格式输入字符时格式输入字符时,空格字符和空格字符和“转义字符转义字符”都都作为有效字符作为有效字符,如如:scanf(scanf(“%c%c%c%c%c%c”,&a,&b,&c);,&a,&b,&c);输入输入:a b ca b c(4).(4).输入数据时输入数据时,遇空格、回车、跳格、宽度结束、非法输入遇空格、回车、跳格、宽度结束、非法输入,该数据认为结束该数据认为结束(5).scan

28、f(5).scanf中不使用中不使用u u说明符,对说明符,对unsignedunsigned型数据用型数据用d,o,x d,o,x 说明说明(6).(6).输入数据时,不能规定数据的精度。输入数据时,不能规定数据的精度。3.3.33.3.3字符输出函数字符输出函数1.使用格式使用格式形式:形式:putchar(ch)作用作用:向终端输出一个字符,向终端输出一个字符,如如putchar(ch););输出字符变量输出字符变量ch的值的值,其中其中ch可以是字符型可以是字符型和和整型整型常量、常量、变量变量、表达式、表达式.例例3.9:#include stdio.h void main()cha

29、r c1,c2;c1=b;c2=98;putchar(c1);putchar(c2);putchar(b);putchar(98);运行结果运行结果:bbbb (注意:不换行)注意:不换行)也可以输出其它转义字符也可以输出其它转义字符例例3.103.10:#include stdio.h#include stdio.hvoid main()void main()putchar(101);putchar(101);putchar(n);putchar(n);putchar();putchar();结果:结果:A A 2、putchar()函数的使用说明函数的使用说明(1 1)该函数只能用于单字符

30、的输出,且一次只能)该函数只能用于单字符的输出,且一次只能输出一个字符。输出一个字符。(2 2)从功能角度来看,)从功能角度来看,printf()printf()函数可以完全代函数可以完全代替替putchar()putchar()函数。函数。(3 3)在程序中使用)在程序中使用putchar()putchar()函数,要记得在程序函数,要记得在程序的开头加上编译预处理头文件。的开头加上编译预处理头文件。3.3.4 字符输入函数字符输入函数getchar()作用作用:从键盘缓冲区读入一个字符,从键盘缓冲区读入一个字符,格式格式:getchar()函数的返回值为字符的值。函数的返回值为字符的值。例

31、例3.11.11#include void main()char c;c=getchar();putchar(c);putchar(getchar();printf(“%c”,getchar();不要忘记不要忘记#include 可以用可以用getchar()暂停程序执行;暂停程序执行;读入控制字符读入控制字符例如例如注意注意:当输入多个字符时当输入多个字符时,多余字符作废多余字符作废(按回车后才开始接收字符按回车后才开始接收字符)用用getchar()getchar()得到的字符可以赋给字符型变量得到的字符可以赋给字符型变量/整型变量或作整型变量或作为表达式的一部分为表达式的一部分如如:c=

32、getchar()+32;:c=getchar()+32;例例3.12 3.12#include stdio.h#include stdio.hvoid main()void main()putchar(getchar()-32);putchar(getchar()-32);输入:输入:a a输出:输出:A A3.4顺序结构程序设计顺序结构程序设计例例3.133.13:输入一个小写字母,打印其大写字母及其前导字母:输入一个小写字母,打印其大写字母及其前导字母和后续字母和后续字母分析:小写字母的分析:小写字母的ASCIIASCII码比对应的大写字母大码比对应的大写字母大3232,前导字,前导字母

33、的母的ASCIIASCII码小码小1 1,后续字母的,后续字母的ASCIIASCII码大码大1 1。#include stdio.h#include stdio.hvoid main()void main()char c;char c;printf(printf(请输入任意一小写字母:请输入任意一小写字母:););c=getchar();c=getchar();printf(%c,%c,%cn,c,c-1,c+1);printf(%c,%c,%cn,c,c-1,c+1);printf(%c,%c,%cn,c-32,c-33,c-31);printf(%c,%c,%cn,c-32,c-33,c-

34、31);例例3.143.14:输入三角形的三边长,求三角形的面积:输入三角形的三边长,求三角形的面积#include stdio.h#include stdio.h”#include#include “math.hmath.h”void main()void main()int a,b,c;int a,b,c;float s,area;float s,area;printf(printf(“请输入三条边长:请输入三条边长:”););scanf(scanf(“%d,%d,%d%d,%d,%d”,&a,&b,&c);,&a,&b,&c);s=(a+b+c)/2;s=(a+b+c)/2;area=s

35、qrt(s*(s-a)*(s-b)*(s-c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(printf(“面积:面积:area=%.2fnarea=%.2fn”,area);,area);例例3.15 编写程序实现交换两个数的值。编写程序实现交换两个数的值。#include#include void main()void main()int a,b,temp;int a,b,temp;scanf(scanf(“%d,%d%d,%d”,&a,&b);,&a,&b);printf(printf(“交换之前交换之前a=%d,b=%dna=%d,b=%dn”,a,b);

36、,a,b);t=a;a=b;b=t;t=a;a=b;b=t;printf(printf(“交换之后交换之后a=%d,b=%dna=%d,b=%dn”,a,b);,a,b);作业作业1:张丘建:张丘建算经算经中提出中提出”百鸡问题百鸡问题“:鸡翁一值:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?用流程图或鸡翁、母、雏各几何?用流程图或N-S图对算法进行描述。图对算法进行描述。作业作业2:输入一个华氏温度:输入一个华氏温度f,要求输出摄氏温度,要求输出摄氏温度c,公式,公式为为c=5/9(f-32),输出要求有文字说明

37、,输出输出要求有文字说明,输出2位小数。位小数。作业作业3:认真完成课后习题。:认真完成课后习题。N-S流程图描述百钱百鸡问题流程图描述百钱百鸡问题计数器计数器(解的组数解的组数)j=0for(x=0;x=100;x+)for(y=0;y=100;y+)for(z=0;z=100;z+=3)TFx+y+z=100且5x+3y+z/3=100?j+;输出该组结果百钱百鸡问题百钱百鸡问题源程序源程序#include void main()int x,y,z;for(x=0;x=100;x+)for(y=0;y=100;y+)for(z=0;z=100;z+=3)if(x+y+z=100&5*x+3

38、*y+z/3=100)printf(cock=%2d hen=%2d chicken=%2dn,x,y,z);百钱百鸡问题算法的进一步优化百钱百鸡问题算法的进一步优化作为多层循环,优化主要集中在作为多层循环,优化主要集中在减少循环层数减少循环层数减少循环层数减少循环层数以及以及缩小变缩小变缩小变缩小变量的穷举范围量的穷举范围量的穷举范围量的穷举范围上:上:1、穷举变量、穷举变量x的取值范围其实只能在的取值范围其实只能在020之间;之间;2、并且,此时、并且,此时y的穷举范围由方程的穷举范围由方程1可以减少为可以减少为0100-x,由方程,由方程2可以减少为可以减少为0(100-5x)/3,取较

39、小的范围,取较小的范围应该是:应该是:0(100-5x)/3;3、进一步:、进一步:x和和y取值后,取值后,z的值唯一的值唯一(z=100-x-y),可,可以减少一层循环。以减少一层循环。优化后的百钱百鸡问题源程序优化后的百钱百鸡问题源程序#include main()int x,y,z,j=0;for(x=0;x=20;x+)for(y=0;y=(100-5*x)/3;y+)z=100-x-y;if(z%3=0&5*x+3*y+z/3=100)printf(%2d:cock=%2d hen=%2d chicken=%2dn,+j,x,y,z);穷举法解排列问题穷举法解排列问题小明有小明有5本

40、新书,要借给本新书,要借给a、b、c三位小朋友,若每人三位小朋友,若每人每次只能借一本,则可有多少种不同的借法?每次只能借一本,则可有多少种不同的借法?问题分析问题分析对对5本书从本书从1至至5进行编号。进行编号。当当a=i时,表示时,表示a借了编号为借了编号为i的书。的书。当当当当3 3个人所借的书的编号都不相同时,就是满足题意的个人所借的书的编号都不相同时,就是满足题意的个人所借的书的编号都不相同时,就是满足题意的个人所借的书的编号都不相同时,就是满足题意的一种借阅方法一种借阅方法一种借阅方法一种借阅方法。则:则:a、b、c取值范围:取值范围:1=a、b、c=5且当:且当:a!=b&a!=

41、c&b!=ca!=b&a!=c&b!=c 时,即为一种可能时,即为一种可能的借书方法。的借书方法。N-S流程图描述借书问题流程图描述借书问题计数器计数器(解的组数解的组数)count=0for(a=1;a=5;a+)for(b=1;b=5;b+)for(c=1;a!=b&c=5;z+)TF c!=a 且且 c!=b?count+;输出该组结果输出该组结果借书问题源程序借书问题源程序#include main()int a,b,c,count=0;for(a=1;a=5;a+)for(b=1;b=5;b+)for(c=1;a!=b&c=5;c+)if(c!=a&c!=b)printf(%d:%d

42、,%d,%dn,+count,a,b,c);#includevoid main()while(1)printf(你好,这是一个华氏度转摄氏度的例程。你好,这是一个华氏度转摄氏度的例程。nn);printf(现在,请输入一个华氏温度:现在,请输入一个华氏温度:);float t;scanf(%f,&t);float c;c=9.0/5*(t-32);printf(您所要求的摄氏温度为:您所要求的摄氏温度为:%fnn,c);printf(现在,您可以选择:现在,您可以选择:1、继续本程序;、继续本程序;2、退出、退出n);printf(现在,您可以选择:现在,您可以选择:1、继续本程序;、继续本程

43、序;2、退出、退出n);A:printf(请输入您的选择:请输入您的选择:);int x;scanf(%d,&x);if(x=1)printf(n现在,程序继续现在,程序继续n);else if(x=2)printf(n谢谢您的使用谢谢您的使用n);break;else printf(n请输入正确的选择:请输入正确的选择:1、继续本程序;、继续本程序;2、退出、退出n);goto A;a a,b b,c c由键盘输入,设由键盘输入,设 。众所周知,一元二次方程式的根为:众所周知,一元二次方程式的根为:x1=x2=x1=x2=可以将上面的分式分为两项:可以将上面的分式分为两项:p=p=,q=x1

44、=p+qq=x1=p+q,x2=p-qx2=p-q例例3.16 3.16 求求x x2 2方程的根。方程的根。#include#include#include#include void main()void main()float a,b,c,disc,x1,x2,p,q;float a,b,c,disc,x1,x2,p,q;scanf(a=%f,b=%f,c=%f,&a,&b,&c);scanf(a=%f,b=%f,c=%f,&a,&b,&c);disc=b*b-4*a*c;disc=b*b-4*a*c;p=-b/(2*a);p=-b/(2*a);q=sqrt(disc)/(2*a);q=s

45、qrt(disc)/(2*a);x1=p+q;x1=p+q;x2=p-q;x2=p-q;printf(nnx1=%5.2fnx2=%5.2fn,x1,x2);printf(nnx1=%5.2fnx2=%5.2fn,x1,x2);运行情况:运行情况:,#include main()char c1,c2,c3,c4,c5,c6;scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4);c5=getcahr();c6=getchar();putchar(c1);putchar(c2);printf(“%c%cn”,c5,c6);若输入为:若输入为:123 45678则输出:则输出:A)12

46、67B)1256C)1278D)12451 c语言中的语句有哪几类?语言中的语句有哪几类?2 怎样区分表达式和表达式语句?怎样区分表达式和表达式语句?3 c语言为什么要把输入输出功能作为函数,而不作为语言的基语言为什么要把输入输出功能作为函数,而不作为语言的基本部分?本部分?控制语句;函数调用语句;表达式语句;空语句;复合语句。控制语句;函数调用语句;表达式语句;空语句;复合语句。表达式是由操作数和操作符按照一定语法规则构成的符号序表达式是由操作数和操作符按照一定语法规则构成的符号序列;表达式语句必须在最后出现分号,分号是语句不可缺少列;表达式语句必须在最后出现分号,分号是语句不可缺少的部分。

47、的部分。控制语句,完成一定的控制功能控制语句,完成一定的控制功能,共共9种种1.if()else 2.for()3.while()4.do while()5.continue6.break7.switch8.goto9.return条件语句条件语句循环语句循环语句循环语句循环语句循环语句循环语句结束本次循环语句结束本次循环语句中止执行中止执行switch或循环语句或循环语句多分支选择语句多分支选择语句转向语句转向语句从函数返回语句从函数返回语句例如例如:if(x y)z=x;else z=y;while(i =0);else y=x;while(x=1);常用于被转向点、或循环语句的循环体常用

48、于被转向点、或循环语句的循环体 复合语句复合语句用用 把一些语句括起来成为复合语句把一些语句括起来成为复合语句如:如:if(x 0)i+;sum=sum+x;else j+;sub=sub+x;又如:循环体又如:循环体 while(x=1)i+;a=b+c;while(x=1)i+;a=b+c;顺序结构顺序结构如流程图:如流程图:先执行先执行A操作,再执行操作,再执行B操作,两者是顺序执行的关操作,两者是顺序执行的关系。系。例程例程1:int x,y,z;x=2;y=3;z=x+y;AB例程例程2:main()int a,b,c,d;a=8;b=9;c=+a;d=+b;printf(“%d,%

49、d,%d,%d”,a,b,c,d)选择结构选择结构如流程图:如流程图:真真 假假其中其中p代表一个条件,当条件成立则执行代表一个条件,当条件成立则执行a,否则执,否则执行行b;且只能执行;且只能执行a、b之一。之一。例如:例如:if(x y)z=x;else z=y;pab再如:再如:if(x 0)i+;sum=sum+x;else j+;sub=sub+x;循环结构循环结构有两种循环结构:当型结构和直到型结构有两种循环结构:当型结构和直到型结构如:如:while(I=10)i+;a=a+c;do i+;a=a+c;while(i=10)PAPA假假真真假假真真注意控制字符的问题注意控制字符的问题#include stdio.hvoid main()char b;printf(Please enter a character:);b=getchar();putchar(b);getchar();返回返回

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁