[工学]C语言学习第3章.ppt_第1页
[工学]C语言学习第3章.ppt_第2页
[工学]C语言学习第3章.ppt_第3页
[工学]C语言学习第3章.ppt_第4页
[工学]C语言学习第3章.ppt_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第3章 最简单的C程序设计顺序程序设计,2,本章教学目的和要求,了解算法的概念、特点 。 掌握用流程图和N-S结构图表示算法的方法。熟悉程序的三种基本结构。 熟悉C语句的类型。 掌握赋值语句的语法格式和应用。 掌握输入函数的使用。 掌握输出函数的使用。 熟悉顺序结构的程序特点。,3,3.1 算法,4,关于算法,一个程序应包括以下两方面内容: (1) 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。 (2) 对操作的描述。即操作步骤, 也就是算法(algorithm)。 数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。 数据结构 + 算法 = 程序,5,算法的概念,算法是程序中进行操作的方法和操作步骤,它解决“做什么”和“怎么做”的问题。程序中的操作语句就是算法的体现。 对同一个问题,可以有不同的解题方法和步骤。方法有优劣之分。有的方法只需进行很少的步骤,而有些方法则需要较多的步骤。一般说,希望采用简单的和运算步骤少的方法。 计算机算法可分为两大类别:数值算法和非数值算法。数值运算的目的是求数值解 。非数值运算包括的面十分广泛,最常见的是用于事务管理领域。,6,简单算法举例,求:12345 求解步骤: 步骤1:先求12得2; 步骤2:再将23得6; 步骤3:将64得24; 步骤4:将245得120,输出结果。 这样的算法虽然是正确的,但太繁琐。如果要求121000,则要写999个步骤,显然是不可取的。而且每次都直接使用上一步骤的数值结果(如2,6,24等),也不方便。,7,定义变量p保存乘积同时也是被乘数,i为乘数 s1: p=1 s2: i=2 s3: p=pi s4: i=i+1 s5: 当i=5时,返回s3继续执行;否则输出p的值后结束。 可以看出,用这种方法表示的算法具有通用性、灵活性。S3到S5组成一个循环,在实现算法时,要反复多次执行S3、S4、S5等步骤,直到某一时刻,执行S5步骤时经过判断,乘数i已超过规定的数值而不返回S3步骤为止。此时算法结束,变量p的值就是所求结果。 由于计算机是高速进行运算的自动机器,实现循环是轻而易举的,所有计算机高级语言中都有实现循环的语句。因此,上述算法不仅是正确的,而且是计算机能实现的较好的算法。,8,怎样表示一个算法,自然语言描述。就是用人们日常使用的语言对算法进行描述。用自然语言描述通俗易懂,但文字冗长,容易出现“歧义”。,9,流程图,流程图。用一些约定的框图表示操作,用带箭头的线表示执行顺序。,10,11,12,13,N-S图,一种简化了的流程图。省却了箭头线。,14,15,16,伪代码,伪代码是一种介于程序设计语言和自然语言间的一种算法描述方式。其书写语阅读都需要一定的程序设计语言基础。,17,3.2 程序的三种基本结构,18,结构化程序的基本控制结构: 顺序结构。按语句书写顺序执行。 选择(判断)结构。程序执行到某一条语句时,要进行判断,从两种以上路径中选择一条执行。 循环(重复)结构。将一条或多条语句重复执行若干遍。,19,流程图,流程图。用一些约定的框图表示操作,用带箭头的线表示执行顺序。,20,21,3.3 C语句综述,22,和其他高级语言一样,C语言的语句用来向计算机系统发出操作指令。一个语句经编译后产生若干条机器指令。一个实际的程序应当包含若干语句。应当指出,c语句都是用来完成一定操作任务的。声明部分的内容不应称为语句。 一个函数包含声明部分和执行部分,执行部分即由语句组成。C程序结构可以用图4.1表示。即一个c程序可以由若干个源程序文件(分别进行编译的文件模块)组成,一个源文件可以由若干个函数和预处理命令以及全局变量声明部分组成,一个函数由数据定义部分和执行语句组成。,23,24,C语句可以分为以下5类,(1) 控制语句,完成一定的控制功能。C只有9种控制语句,它们是: if( )else (条件语句) for( ) (循环语句) while( ) (循环语句) dowhile( ) (循环语句) continue (结束本次循环语句),25, break (中止执行switch或循环语句) switch (多分支选择语句) goto (转向语句) return (从函数返回语句) 上面9种语句中的括号()表示其中是一个条件,表示内嵌的语句。,26,(2) 函数调用语句。由一次函数调用加一个分号构成一个语句,例如:printf(“this is a c stateent“); (3) 表达式语句。 由一个表达式构成一个语句,最典型的是,由赋值表达式构成一个赋值语句。 a=3 是一个赋值表达式,而 a=3; 是一个赋值语句。可以看到一个表达式的最后加一个分号就成了一个语句。一个语句必须在最后出现分号,分号是语句中不可缺少的一部分。,27,(4) 空语句。下面是一个空语句: ; 即只有一个分号的语句,它什么也不做。有时用来做被转向点,或循环语句中的循环体(循环体是空语句,表示循环体什么也不做)。 (5) 可以用把一些语句括起来成为复合语句,又称分程序。如下面是一个复合语句。 z=x+y; t=z/100; printf(“%f“,t); ,28,3.4 赋值表达式和赋值语句,29,“=”构成的表达式叫赋值表达式,若赋值表达式后加上“;”就叫赋值语句。 赋值表达式格式: 变量=表达式 赋值类运算符还包括10个复合运算符。其特点同赋值运算符。,30,3.5 数据输入输出的概念及在C语言中的实现,31,所谓输入输出是以计算机主机为主体而言的。从计算机向外部输出设备(如显示屏、打印机、磁盘等)输出数据称为“输出” ,从外部向输入设备(如键盘、磁盘、光盘、扫描仪等)输入数据称为“输入”。 C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。 在使用c语言库函数时,要用预编译命令“#include”将有关的“头文件” 包括到用户源文件中。在头文件中包含了与用到的函数有关的信息。,32,3.6 字符数据的输入输出,33,C语言对数据的输入和输出是通过函数来实现。 C输入输出函数的一些公用信息写在C头文件“stdio.h”中,程序用到C提供的输入输出函数时,要在程序中用C编译预处理程序#include包含这个头文件。 格式:# include “stdio.h” 或 # include ,34,putchar函数(字符输出函数),putchar函数的作用是向终端输出一个字符:例如putchar(c);它输出字符变量c的值。c可以是字符型变量或整型变量。,35,#include void main() char a,b,c; a=b;b=o;c=y; putchar(a);putchar(b);putchar(c); 运行结果: boy 也可以输出控制字符,如putchar(n)输出一个换行符,使输出的当前位置移到下一行的开头。,运行,36,putchar(a);putchar(n);putchar(b);putchar(n);putchar(c); putchar(n); 则输出结果为: b o y 也可以输出其他转义字符,如: putchar(101)(输出字符a) putchar() (输出单引号字符) putchar(015) (输出回车,不换行,使输出的当前位置移到本行开头),37,getchar函数(字符输入函数),此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。getchar函数没有参数,其一般形式为 getchar() 函数的值就是从输入设备得到的字符。例如: 输入单个字符 #include void main() char c; c=getchar(); putchar(c); ,运行,38,请注意,getchar()只能接收一个字符。getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。例如,例4.2第4、5行可以用下面一行代替: putchar(getchar(); 因为getchar()的值为a,因此putchar函数输出a。也可以用printf函数输出: printf(”%c“,getchar(); 请不要忘记,如果在一个函数中(今为main函数)要调用getchar函数,应该在该函数的前面(或本文件开头)加上“包含命令” #include ,39,3.7 简单格式输入与输出,40,格式输入输出是指在输入输出数据时能,指定其格式。,41,printf函数(格式输出函数),printf()是格式化输出函数。功能是按指定格式,在标准输出设备(显示器)上输出数据。 函数调用一般形式: printf(格式控制参数,输出项1,输出项2,),格式控制,输出参数,42,格式控制参数,格式控制参数以字符串形式出现,用来描述输出格式。 格式控制参数包括普通字符(包括C转义字符)和格式说明项(格式字符及其附加选项)。 普通字符将被简单原样输出。 格式说明项用来说明输出项的格式。 格式字符书写必须以“%”开头。,43,输出项,printf()函数中一个格式说明项对应一个输出项。 输出项可以是任何合法C表达式。 输出项可缺省,此时printf()函数只输出格式控制参数项中的普通字符。 如:printf(“n“); printf(“Hello.“);,44,基本格式字符 :%d、%i、%c、%s、%f、%e 例字符数据的输出: main() char c=a; int i=97; printf(“%c,%dn“,c,c); printf(“%c,%dn“,i,i); 运行结果为: a,97 a,97,45,输出实数时的有效位数。 main() float x,y; x=111111111;y=222222222; printf(“%f“,x+y); 运行结果为 333333328125,46,输出双精度数时的有效位数。 main() double x,y; x=1111111111111.111111111; y=2222222222222.222222222; printf(“%f“,x+y); 输出结果为 3333333333333.333010,47,scanf函数(格式输入函数),scanf()是格式化输入函数,功能是按指定格式,将数据从键盘输入存储到指定地址单元中。 函数调用格式: scanf(格式控制参数,地址1,地址2,) 该函数的格式控制参数基本上同printf()函数,48,格式控制参数,格式控制参数以字符串形式出现,用来描述输入格式。 格式控制参数包括普通字符(包括C转义字符)和格式说明项(格式字符及其附加选项)。 普通字符将被要求原样输入。 格式说明项用来说明输入项的格式。 数据输入以空格、回车、跳格作结束。但需注意%c 格式字符的使用。 例: scanf(“%d:%d:%d“, 输入数据格式: 12:30:20 则变量h、m、s的值分别为12、30、20,49,较复杂的输入输出格式控制,使用printf()函数和scanf()函数,可以输入输出较复杂的数据格式,这是需配合格式字符的附加说明项使用。,50,输出格式的附加说明项,输出格式说明项的完整格式: % - 0 m.n l 或 h 格式字符,格式字符的标志,指定左对齐,缺省为右对齐,指定空位补0否则补空格,指定域宽及小数位数,输出长度修正,指定输出类型,51,上面格式说明项中,红色字体不可缺省,其余可缺省,缺省时选其默认值。 格式字符的意义及用法见教材P62表3-1。 “l或h”中“l”用来指明输出的是长整型或双精度实型;“h”用来指明输出的是短整型。一般可缺省。 “m.n”中m指定输出域宽,当实际输出宽度小于指定宽度时,多余位置补0或空格,当实际输出宽度大于指定宽度时,按实际宽度输出,缺省时按实际宽度输出;“.n”用来指定实型数输出的小数位数,缺省为6位(指定小数位数并不能提高实型数的精度)。 “0”用来指定空位是补“0”,缺省时空位补空格。 “-”用来指定左对齐(数据按左对齐,右端空位补0或空格),缺省时位右对齐。,52,无符号数据的输出。 main() unsigned int a=65535; int b=-2; printf(“a=%d, %o,%x,%un“,a,a,a,a); printf(“b=%d,%o,%x,%un“,b,b,b,b); 运行结果为: a=-1,177777,ffff,65535 b=-2,177776,fffe,65534,运行,53,字符串的输出。 main() printf(“%3s,%7.2s,%.4s,%-5.3sn“,“china“,“china“, “china“, “china“); 输出如下: china, ch,chin,chi,54,输出实数时指定小数位数。 main() float f=123.456; printf(“%f %10f %10.2f %.2f %-10.2fn“,f,f,f,f,f); 输出结果如下: 123.456001 123.456001 123.46 123.46 123.46,55,例: printf(“|%-15s|%6.2f|n“,“ZHANG WEI“ ,165.35); 输出结果: |ZHANGWEI|165.35|,左对齐,15列宽,6列宽,2位小数,56,输入格式控制参数一般格式: % * m l或h 格式字符 “m”指定输入域宽。 “*”赋值抑制。 每个格式字符对应一个输入地址。 输入数据流可以分隔符分隔、指定域宽分隔、用非法数据分隔。,输入格式的附加说明项,57,用scanf函数输入数据。 main() int a,b,c; scanf(“%d%d%d“,&a,&b,&c); printf(“%d,%d,%dn“,a,b,c); 运行时按以下方式输入a、b、c的值: 3 4 5(输入a、b、c的值) 3,4,5 (输出a、b、c的值),58,“%d%d%d”表示按十进制整数形式输入数据。输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键、跳格键tab。下面输入均为合法: 3 4 5 3 4 5 3(按tab键)4 5 用“%d%d%d”格式输入数据时,不能用逗号作两个数据间的分隔符,如下面输入不合法: 3,4,5,59,使用scanf函数时应注意的问题 scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。 例如, 如果a、b为整型变量,则 scanf(“%d,%d“,a,b); 是不对的,应将“a,b”改为“&a,&b”。,60,(2) 如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。例如 scanf(“%d,%d“,&a,&b); 输入时应用如下形式: 3,4 注意3后面是逗号,它与scanf函数中的“格式控制”中的逗号对应。如果输入时不用逗号而用空格或其他字符是不对的: 3 4(不对) 3:4 (不对),61,(3) 在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入: scanf(“%c%c%c“,&c1,&c2,&c3); 如输入 a b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论