《【教学课件】第04章基本输入、输出和顺序程序设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第04章基本输入、输出和顺序程序设计.ppt(28页珍藏版)》请在三一办公上搜索。
1、学习的意义,程序的主要功能就是对数据的处理,其整个流程主要包括数据的输入、数据的处理、数据的输出。,C程序中如何实现数据输入?,C程序中如何实现数据输出?,程序的结构:写文章有文章的结构 建房子有房子的结构 制造机械产品由机械产品的结构 那么编写程序是否有程序的结构呢?,YES!,本章讨论,第5章讨论,第6章讨论,学习目标,掌握各种类型数据的格式化输入输出方法;掌握字符数据的非格式化输入输出方法;理解三种程序控制结构的流程图;学会简单顺序程序的设计;养成良好的程序设计习惯;,学习内容,格式化输出printf 格式化输入scanf 字符数据的非格式化输入、输出 程序的控制结构 顺序程序设计举例
2、本章小结,4.1 格式化输出printf,一般格式,printf(格式控制字符串,表达式1,表达式2,表达式n);,功能,按照“格式控制字符串”的要求,将表达式1,表达式2,表达式n的值显示在计算机屏幕上。,说明,格式控制字符串用于指定输出格式。它包含两类字符:常规字符:包括可显示字符和用转义字符表示的字符。格式控制符:以%开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。其格式为:,%修饰符格式转换字符,例:long int x=0 x8AB6;printf(“The Value of x is%ldn”,x);,常规字符,常规字符(转义符),格式控制符(修饰符),格式控制
3、符(格式转换符),printf函数中的格式转换字符及其含义,printf函数中的格式转换字符及其含义,4.2 格式化输入scanf,一般格式,scanf(“格式控制字符串”,变量1的地址,变量2的地址,变量n的地址);,功能,第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依此存放在变量1、变量2、变量n中。,格式控制符与后续参数中的变量地址的对应关系,【例】数据的格式化输入 输入一学生的学号(8位数字)、生日(年-月-日)、性别(M:男,F:女)及三门功课(语文、数学、英语)的成绩,现要求计算该学生的总分和平均分,并将该学生的全部信息输出(包括总分、平均分)。,#incl
4、ude void main()unsigned long no;/学号 unsigned int year,month,day;/生日(年、月、日)unsigned char sex;/性别 float chinese,math,english;/语文、数学、英语成绩 float total,average;/总分、平均分 printf(input the students NO:);scanf(%8ld,printf(input the students Scores(chinese,math,english):);scanf(%f,%f,%f,假设输入:input the students
5、 NO:20040101input the students Birthday(yyyy-mm-dd):1987-9-8input the students Sex(M/F):Minput the students Scores(chinese,math,english):90,80,90,输出结果:=NO=birthday=sex=chinese=math=english=total=average20040101 1987-09-08 M 90.0 80.0 90.0 260.0 86.7,4.3 字符数据的非格式化输入、输出,1.字符数据的非格式化输入,int getchar(void)
6、;/应包含的.h文件为stdio.h,与输入字符数据有关的常用库函数主要有:getchar、getc、getche、getch等。,getchar,功能:从键盘读一字符 返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。说明:以回车符为输入结束条件;输入多个字符时,返回第一个字符的值;输入字符回显。,【例】利用getchar输入字符,#include#include void main()char ch1,ch2;int a;ch1=getchar();ch2=getchar();scanf(%d,int getc(FILE*stream);/应包含的.h文件为stdio.h
7、,getc,功能:从流文件stream中读取一个字符信息,它的返回值是所读取字符的ASCII码。返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。说明:该函数带有一个参数stream,它是一文件指针(第12章介绍),表示流文件,当流文件是stdin时,getc函数的功能与getchar函数的功能完全相同。也就是说,gtec(stdin)与getchar()是等价的。,int getche(void);/应包含的.h文件为conio.h,getche,功能:与getchar的功能基本相同。返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。说明:直接从键盘获取键
8、值,不等待用户按回车键;输入字符回显。,getch,int getch(void);/应包含的.h文件为conio.h,功能:与getche的功能基本相同。返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。说明:直接从键盘获取键值,不等待用户按回车键;输入字符不回显。,【例】getch与getche的差异,#include#include void main()char ch1,ch2;printf(please press two keyn);ch1=getche();/回显 ch2=getch();/不回显 printf(nyouve pressed%c and%cn,c
9、h1,ch2);,与输入字符数据有关的库函数功能比较:,2.字符数据的非格式化输出,int putchar(int c);/应包含的.h文件为stdio.h,与输出字符数据有关的常用库函数主要有:putchar、putc、puts等。,putchar,功能:在显示器上输出字符c。返值:正常,返回字符的代码值;出错,返回EOF(-1)。说明:该函数带有一个参数c,它为要显示字符的ASCII码值,有一个int型返回值。,putc,int putc(int c,FILE*stream);/应包含的.h文件为stdio.h,功能:将字符c输出到流文件stream。如果流文件为stdout,则功能与pu
10、tchar完全相同,所以putc(c,stdout)等价于putchar(c)返值:正常,返回字符的代码值;出错,返回EOF(-1)。,puts,int puts(char*string);/应包含的.h文件为stdio.h,功能:将字符串string的所有字符输出到屏幕上,输出时将自动回车换行。,【例】利用字符输出函数输出字符,#include void main()int a=65;char b=B;putchar(a);/不自动回车 putchar(n);puts(“is as good as”);/自动回车 putc(b,stdout);,4.4 程序的控制结构,1.算法的基本概念,程
11、序=数据结构+算法。算法:简而言之,就是解决问题的方法与步骤。程序设计语言:是程序开发工具,即是将算法转化为程序的开发工具。程序:算法的具体实现。,学习C语言,不仅要熟练掌握其语言本身的特点、语法规则等意外,更重要的就是掌握分析问题、解决问题的方法,就是锻炼分析、分解,最终归纳整理出算法的能力。,2.设计算法举例,【例1】输入三个数,然后输出其中最大的数。总体思路:首先,定义三个变量A、B、C,将三个数依次输入到、B、C中,另外,再准备一个MAX装最大数。由于计算机一次只能比较两个数,先把A与B比,大的数放入MAX中,再把MAX与C比,又把大的数放入MAX中。最后,把MAX输出,此时MAX中装
12、的就是、C三数中最大的一个数。具体步骤:(1)输入A、B、C。(2)A与B中大的一个放入MAX中。(3)把C与MAX中大的一个放入MAX中。(4)输出MAX,MAX即为最大数。(2)把A与B中大的一个放入MAX中:若A B,则MAX A;否则MAX B。(3)把C与MAX中大的一个放入MAX中:若C MAX,则MAX C。,算法最后可以写成:(1)输入A,B,C。(2)若A B,则MAX A;否则MAXB。(3)若C MAX,则MAX C。(4)输出MAX,MAX即为最大数,2.设计算法举例,【例2】猴子吃桃问题:有一堆桃子不知数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,第二天照此办理
13、,吃掉剩下桃子的一半另加一个,天天如此,到第十天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个?总体思路:假设第一天开始时有a1只桃子,第二天有a2只,第9天有a9只,第10天是a10只,在a1,a2,,a10中,只有a10=1是知道的,现要求a1,而我们可以看出,a1,a2,,a10之间存在一个简单的关系:a9=2*(a10+1)a8=2*(a9+1)a1=2*(a2+1)也就是:ai=2*(ai+1+1)i=9,8,7,6,1 这就是此题的数学模型。再考察上面从a9,a8直至a1的计算过程,这其实是一个递推过程,这种递推的方法在计算机解题中经常用到。另一方面,这九步运算从形式上完全一
14、样,不同的只是ai的下标而已。由此,我们引入循环的处理方法,并统一用a0表示前一天的桃子数,a1表示后一天的桃子数。,算法最后可以写成:(1)a1=1 第10天的桃子数,a1的初值 i=9 计数器初值为9(2)a0=2*(a1+1)计算当天的桃子数(3)a1=a0 将当天的桃子数作为下一次计算的初值(4)i=i-1(5)若i=1,转(2)(6)输出a0的值 其中(2)(5)步为循环,3.流程图与算法的结构化描述,流程图,_常见流程图符号,3.流程图与算法的结构化描述,算法的结构化描述,4.5 顺序程序设计举例,【例1】任意从键盘输入一个三位整数,要求正确地分离出它的个位、十位和百位数,并分别在
15、屏幕上输出。程序设计的分析:本例要求设计一个从三位整数中分离出它的个位、十位和百位数的算法。例如,输入的是456,则输出的分别是4、5、6,最低位数字可用对10求余的方法得到,如456%10=6,最高位的百位数字可用对100整除的方法得到,如456/100=4,中间位的数字既可通过将其变换为最高位后再整除的方法得到,如(456-4*100)/10=5,也可通过将其变换为最低位再求余的方法得到,如(456/10)%10=5。根据以上的分析,这个程序应这样设计:(1)定义一个整型变量x,用于存放用户输入的一个三位整数;再定义三个整型变量b0、b1、b2,用于存放计算后个位、十位和百位数。(2)调用
16、scanf函数输入该三位整数。(3)利用上述计算方法计算该数的个位、十位和百位数。(4)输出计算后的结果。,#include void main()int x,b0,b1,b2;/变量定义 printf(please input an integer x:);/提示用户输入一个整数 scanf(%d,/输出结果,具体程序如下:,本章小结,本章的主要内容包含如下几个方面:(1)格式化输入、输出库函数的使用。重点介绍了格式化输入函数printf和格式化输出函数scanf的功能及使用方法,其中格式控制字符串是我们要重点关注的地方,格式化输入和输出可以按照某种输入输出格式来进行。(2)字符的非格式化输入、输出库函数的使用。(3)算法的基本概念。简单地说,算法是求解某个问题的方法,程序是算法通过编程语言书写出来的表现形式。算法是程序的灵魂,语言只是算法的实现工具。所以我们学习C语言不仅要学会C语言的语法特点,各种函数的使用方法等,更重要的是掌握分析问题、解决问题的方法,就是锻炼分析、分解,最终归纳整理出算法的能力。(4)程序的控制结构。任何复杂的算法都可以由顺序结构、选择(分支)结构和循环结构这三种基本结构组成。由此构成了程序的三种控制结构,这三种控制结构在程序中相互嵌套,从而构造出各种各样的程序。,本章小结,