c语言顺序结构程序设计.ppt_第1页
c语言顺序结构程序设计.ppt_第2页
c语言顺序结构程序设计.ppt_第3页
c语言顺序结构程序设计.ppt_第4页
c语言顺序结构程序设计.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第3章 顺序结构程序设计 我们已经学习了c语言的一些组成要素(如常量,变 量,运算符,表达式等),他们是构成程序的重要组成 部分,但都不是操作计算机执行的指令。在高级语言中 ,用语句向计算机发出操作指令,本章将介绍构成简单 程序,所必需的语句及c程序最基本的输入输出方法。 3.1 基本语句 程序应该包括数据描述(由数据定义部分来实现) 和数据操作(由语句实现)。数据描述主要定义数类 型和数据初值。数据操作的任务是对已提供的数据进 行加工。 C语句可分为以下5类: 1.表达式语句 表达式语句由表达式后加上分号组成,语法格式为: 表达式; 例如: i+ (表达式) i+; (表达式语句) 最典型的表达式语句是由赋值表达式构成的语句。 如:i=6; 是由赋值表达式后加分号所构成,习惯上称这类表达式 为赋值语句。 可以看到,任何一个表达式都可以加上一个分号而成 为一条语句,分号是c语句中不可缺少的一部分。 例如:k=k-1 (是表达式不是语句) k=k-1; (是语句) 表达式能构成语句是c语言的一个重要特色,因 为函数也属于表达式的一种,所以实质上“函数调用 语句”也是属于表达式语句的一种。为了便于理解, 函数调用语句和表达式语句分开来说明。 2.函数调用语句 函数调用语句由一次函数调用后加分号而成。 语法格式: 函数调用; 例如:printf(“I love china!”) /函数调用/ printf(“I love china!”) ; /函数调用语句/ 3.控制语句 能完成一定的程序流程控制功能。C语言有9种控制 语句。 1.if()else /两个分支的条件语句/ 2.for() /循环语句/ 3.while() /循环语句/ 4.do while() /循环语句/ 5.continue /结束本次循环语句/ 6.break /中止执行多分支选择或循环语句/ 7.switch /多分支选择语句/ 8.goto /无条件转移语句/ 9.return /函数返回语句/ 4.空语句 空语句是只有一个分号组成的语句。其语法格式为: ; 实际运行时什么也不做。有时用来作为被转向点, 或循环语句中的循环体(循环体是空语句,表示循环 体什么也不做) 5.复合语句 在程序中用包围的若干语句称为复合语句。复合语 句内部除了有执行语句外,还可以有数据说明。数据 说明一般放置在所有执行语句之前。 语法格式: 数据说明部分; 执行语句部分; 例如 : int temp; temp=x; x=y; y=temp; 注意:复合语句中的每一条语句(包括最后一条)末尾都 有分号;复合语句在语法上被看作一个单语句,凡是可以 出现单语句的地方,都可以出现 复合语句;构成复合语 句的语句也可以是复合语句(符合嵌套),但要注意配 套。例如: if (ab) x=a; a=b; b=x; printf(“%d,%d”,a,b); 3.2赋值语句 赋值语句是最简单的语句。他的功能主要是确定变量 的内容. 一般形式: 变量表达式; 变量名必须放在赋值运算符的左边,右端表达式允许 为常量,变量,算术表达式,逻辑表达式等等。注意 表达式中的变量必须已经赋值,否则结果不确定。 例如:以下是有效语句: a=1; c=a+b; c=b1; a=b=10; a=b= =10; 注意:int a=b=10等价于int a,b; b=10; 而a=b=10;等价于a=10;b=10; 赋值表达式有的时候并不显示赋值运算符,而是直接 由表达式表示一个语句,称为表达式语句,例如: x+; 其本质为x=x+1 C语言中的赋值语句特点: c语言中严格区别了赋值表达式和赋值语句两概 念。赋值表达式作为表达式的一种,可以包含在其他 表达式中,但赋值语句不可以。 如: (a=b)3 (a=b;)3 为了让计算机处理各种数据,首先就应该把源数据 输入到计算机中;计算机处理结束后,再将目标数据信 息以人能够识别的方式输出。C语言与其他的高级语言 不同,本身不能提供输入输出语句,C语言中的输入输 出操作,是由C语言编译系统提供的库函数来实现。在 C的标准库函数中提供了一些输入输出函数。例如: printf函数和scanf函数。千万不要认为他们是输入输出 语句。完全可以不用printf和scanf这两个名字,而另外 编两个函数,另用其他函数名。C提供的函数以库的形 式存放在系统中,他们不是c语言文本中的组成部分。 不过有些通用的函数(如printf 和scanf等)各种计算机都 提供,成为各种计算机系统的标准函数。 3.3 数据的输入输出 因为头文件包含了库函数定义等相关信息,用户使用 C语言标准库函数时,必须使用预编译命令“include” 将对应的头文件包含到用户源程序中,格式为: include “头文件名” 或 include头文件名 预编译命令“include”的功能是将头文件的全部内容 包含到自身源文件中,此过程在文件编译时由系统自 动完成,实际使用应注意: 1.一个include命令只能指定一个被包含文件,如果 要包含n个头文件,要用n个include命令。 2.在一个被包含文件中又可以包含另一个被包含文件, 既文件包含是可以嵌套的。 3.在include命令中,文件名可以用双引号或尖括号 括起来,二者的区别是: 1)采用,编译系统到存放c库函数头文件 所在的目录中寻找要包含的文件,称为标准方式。 2)采用“头文件名”,系统首先在用户当前目录中寻找 要包含的文件,如无法找到,再按标准方式寻找。 一般情况下,如果调用标准库函数则采用 形式以节省时间;如果调用用户自己编写的头文件, 采用“头文件名”形式。 4. “include”是一条预编译命令,而不是一条c语句, 所以应注意不可在其后加c语句结束的分号标志。 5.使用不同的不同的标准库函数应包含不同的头文件。 例如:使用输入输出标准函数, “include ” 使用数学标准函数,“ include”。不要混淆。 我们首先介绍标准设备文件的输入输出函数。他 们是单个字符的输入输出函数getchar和putchar,格式入 输出函数printf和scanf函数。要求的包含头文件是stdio.h, 因使用频繁,可不加include命令。 3.3.1 格式化输出printf()函数 printf()函数的作用:按照指定的格式向计算机系统默认 的输出设备(一般指终端或显示器)输出一个或多个任意类 型的数据。 一.printf()函数的一般格式如下: printf(“输出格式”,输出项1,输出项2.,输出项n); 函数的参数包括两部分: 1.“输出格式”是用双引号括起来的字符串,包括下列两种 信息: 1)格式说明,由和格式字符组成,如d,%f.其作用是 将要输出的数据转换为指定的格式输出,格式说明总是由 字符开头。 2)普通字符,既原样输出的字符,它包括可打印的字符 和不可打印的字符(转义字符)两种。 2.“输出表列”是需要输出的常量,变量或表达式。如: printf(“k=%f,h=%dn”,k,h); 格式转换说明 输出项表列 其中,“f”和“%d”为格式说明符,“k=”和“,h=”是普 通字符,“n”为转义字符,代表回车换行,“k”和“h”是 输出表列。如果k和h的值分别为7.0和8,输出结果为: k=7.000000,h=8 二.格式字符 C语言输出不同类型数据时,应使用不同的格式字符。 1.d格式符以带符号的十进制整数形式输出。 有以下几种用法: 1)d。按整数实际长度输出。如: int i=1234; printf(“%d”,i); 的输出结果为: 1234 2)-md(%md).m为正整数,用于指定输出位数。 如果数据实际位数小于m,则左端补空格(-md是 右端补空格);若大于m,则按实际位数输出。如: int i=1234; printf(“%6d, %-6d, %3d”,i,i,i); 的输出结果为: 1234,1234 ,1234 3)0md。m为正整数,用于指定输出位数。如果 实际位数小于m,则左端补0。例: int i=1234; printf(“%06d”,i); 的输出结果为:001234 4)ld.用于输出长整数。如: long j=12345671; printf(“%-10ld,%ld”,j,j); 的输出结果为: 12345671 ,12345671 2.o格式符 用于将输出数据视作无符号整型数据,并以8进制形式 输出。由于是将内存单元中的各位的值(0或1)按8进 制输出,因此输出的数值不带符号,既将符号位也一 起作为八进制数的一部分输出。 例如:int k=045,j=8; long p=-1L; printf(“%o,%04o,%lo”,k,j,p); 的输出结果为: 45,0010,37777777777(长整型为32位) P=-1 111111111111 3.x格式符(或X格式符) 用于将输出数据视为无符号整型数据,并以16进制形 式输出。与o格式符相同,符号位也作为16进制数的一部 分输出。所以输出数字不带符号。对于x和 X分别用字符 af和AF表示十进制数字1015。 如:int k=0x16,j=15; long p=-1L; printf(“%x,%-4x,%6lX”,k,j,p); 的输出结果为: 16,f ,FFFFFFFF 说明: 0x16为16进制数,按原数不带符号输出。 15为10进制数,按16进制输出,为f. -1L为长整型,32位,故按补码输出32位。 4.u格式符 用于将输出数据视作无符号整型数据,以十进 制形式输出。一个整型有符号数据可以用d格式,x格 式,o格式输出,也可以用u格式输出;反过来也一样。 如: unsigned int u=65535u; long p=-11; printf(“%d,%4u,%lu”,u,u,p); 输出结果为: 1,65535,4294967285 说明:65535为无符号整型数据,补码为1 11为有符号的长整型数据,补码为 4294967285 5.c格式符输出一个字符(只占一列宽度) 一个整数,只要在0256之间,也可以用字符形 式输出,所输出的是ASCII码值为此数值的字符。反之, 一个字符也可以用整数形式输出,输出的是该字符的 ASCII码值。 案例 类型转换字符c的使用。 main() char c=A; int i=65; printf(“c=%c,%5c,%dn“,c,c,c); printf(“i=%d,%c“,i,i); 程序运行结果如下: c=A,A,65 i=65,A 6.s格式符输出一个字符串 用于输出一个字符串。有以下几种用法: 1)s,按实际字符串输出,如: printf(“%s”, “ example ”); 的输出结果为: example ( “ example ”代表字符串 ) 2)ms(%-ms)m为正整数,如果字符串字符个数大于 m, 则按字符串实际输出,否则,左端补空格(%-ms右端补 ) 3)m.ns(-m.ns)取字符串左端n个字符,按m列输出 , 若n,使有关包含有I/O库函数使用的 宏定义,变量定义等信息的文件成为用户源程 序的一部分。 案例 putchar() 函数的格式和使用方法。 #include /*编译预处理命令:文件包含*/ main() char c; int i; c=h; i=i; putchar(C); /输出字符C/ putchar(c); /输出字符h/ putchar(i); putchar(n); putchar(141); /输出字符a/ putchar(n); 运行结果:China 3.3.3 格式化输入scanf()函数 scanf()函数是用来从外部输入设备向计算机主机输入数 据的。 在程序中给计算机提供数据,可以用赋值语句,也可以 用输入函数。在C语言中,可使用scanf()函数,通过键盘输 入,给计算机同时提供多个、任意的数据。 1. scanf()函数的一般格式 scanf(“格式字符串”, 输入项地址表列); (1)格式字符串。格式字符串可以包含3种类型的字符 :格式指示符、空白字符(空格、Tab键和回车键)和非空 白字符(又称普通字符)。 格式指示符与printf()函数的相似,空白字符作为相邻2 个输入数据的缺省分隔符,非空白字符在输入有效数据时, 必须原样一起输入。 输入格式字符串可以包含: 1)空格,制表符或换行符,他们使输入读到下一个非 空白类字符。 2)普通字符(不包括%),他们应与字符流中下一个 非空白符相匹配。 3)附加格式说明,以字符%开头至格式符结束的字符 。 (2)输入项首地址表由若干个输入项首地址组成 ,相邻2个输入项首地址之间,用逗号分开。 输入项首地址表中的地址,可以是变量的首地址,也 可以是字符数组名或指针变量。 变量首地址的表示方法: scanf(“%d %d %d”, printf(“%d,%d,%d”,i,j,k); 输入数据给变量i,j,k,其中 则错误。 2.如在“输入格式”字符串中除附加格式说明和空白字符 之外,还有其他字符,则在输入数据时应输入与这些字 符相同的字符。 如: scanf(“%d,%d,%d”, 正确输入为: 1,2,3 /应该加逗号/ 错误输入: 1 2 3 1 2 3 3.如果两个输入格式符之间空2个或更多空格时,输入 数据项之间的空格数应大于或等于格式符之间空格数。 如: scanf(“%d %d”,x,y); 则应输入: 20 30 或 20 30 2.有关格式说明: 和printf函数中的格式说明相似,以%开始,以一个 格式符结束,中间可以插入附加格式说明字符, 格式符 说明 d,i 输入带符号的十进制形式整数 o 输入八进制无符号形式整数 x,X 输入十六进制无符号形式整数(大小写作用相同) u 输入无符号十进制形式整数 c 输入单个字符 s 输入字符串 f 输入实数,可以用小数形式或指数形式输入 e,E 与f作用相同,e与f,g可以相互替换(大小写作用相同) g,G 与f作用相同,e与f,g可以相互替换(大小写作用相同) 附加格式说明 附加格式说明的一般形式为: % * w h|l 格式符 1赋值抑制字符* 表示本输入项对应的数据读入后,不赋给相应的变量( 该变量由下一个格式指示符输入)。 例如,scanf(“%2d%*2d%3d“, printf(“num1=%d,num2=%dn“,num1,num2); 假设输入“123456789”,则系统将读取“12”并赋值给 num1;读取“34”、但舍弃掉(“*”的作用);读取“567”并赋值 给num2。所以,printf()函数的输出结果为: num1=12,num2=567。 2宽度w 指定该项输入数据所占列数为n。 换句话说,读取输入数据中相应的w位,但按需要的位数 赋给相应的变量,多余部分被舍弃。 3类型修饰符h/l 其含义与printf()中的一样,分别为短整型和长整型 。h修饰格式符d,i,o,u,x.表示读入的整数转换成短整型存 储;l修饰格式符d,i,o,u,x.表示读入的整数转换成长整型存 储。 l修饰格式符e,f,g时,表示读入的实数按double型存储 。 例如,main() char ch1,ch2; scanf(“%3c%3c“, printf(“ch1=%c,ch2=%cn“,ch1,ch2); 假设输入“abcdefg”,则系统将读取的“abc”中的“a” 赋给字符变量ch1;将读取的“def”中的“d”赋给变量 ch2,所以printf()函数的输出结果为:ch1=a,ch2=d。 scanf函数格式符具体说明: 1.d格式符。用来输入整型数据,将输入数据流作为十进 制形式的整型数据,将其转换成二进制后,存储到对应 地址。例如: int i,j; scanf(“%3d%3d”, 若输入:123456,则i=123,j=456 又如: int i,j; scanf(“%3d%*4d”, 如输入字符为: 12345678 将使变量i=123,j78,其中数据456因赋值抑制符“*”的 作用被跳过。 一般从键盘读入数据,如不指定输入数据项的字段 宽度,数据项和数据项之间用空白符,制表符或回车符分 隔。 2. i格式符 与d格式符一样,用来输入整型数据,当输入 的数据字符以0开头时,则视数据为八进制整数; 若以0x或0X开头时,则视为十六进制整数;否则 ,视输入数据为十进制整数。 3. o格式符 除视输入字符流为八进制形式的整型数据外 ,其作用与d格式相同。 例如:int i,j; scanf(“%3o%o”, 如输入字符行为: 12323 将使i83(0123),j19(023). 4.x格式符 将输入字符流视作十六进制形式的整型数据。 例如: scanf(“%x%x”, 如输入:12 34 则i=18(0x12),j=52(0x34) 5.u格式符 用以输入整型数据。视输入字符流为无符号整型数据。 用以上格式为整型变量输入整数时,若变量类型为短 整型,则必须在格式符之前加上附加说明字符h;若变量 为长整型,则必须在格式符之前加上附加说明符l. 例:附加说明字符的使用 main() unsigned x; long y; scanf(“%u,%ld”, printf(“n%u, %ld”,x,y); 从键盘输入: 40000,12345678 输出为:40000,12345678 6.c格式符 用以输入单个字符,从键盘上输入的任何字符都能 被c格式读入,包括空格,回车等转义字符。 例: #include main() char c1,c2; scanf(“%c%c”, putchar(c1); putchar(c2); 如输入: a b 输出:a 如输入:a b 输出: a 7.s格式符 用来输入字符串,对应的数据存储地址为字符数组的首 地址,该数组必须大到足以容纳可能输入的最长字符串。 在输入字符串中,以非空白(非空格,非制表符和非回 车符)开始,以随后的第一个空白符结束的非空白字符 列作为一个字符串。 Scanf函数在输入的字符列之后自动 添加字符串结束标志符“0”。 注意c格式符和s格式符的区别: scanf( “%4c”, scanf( “%4s”,s ); 都读入4个字符,但%4s要跳过开头的空白符,而%4c 则不跳过,变量c中存储的是输入的第1个字符,而字符 数组s【】至多输入了4个 非空白字符,另外在输入的字 符列之后系统自动加字符串结束符“0”。 8.e,f,g格式符 用来输入实数,对应的数据存储地址为实型数据地址。 如格式说明中含有附加格式符l,则为double型变量地址。 例: e,f格式的使用 main() float x,y; scanf( “f,%e”, printf(“n%f,%e”,x,y); 如输入:1.2,1.2e-5 则输出:1.200000,1.20000e-05 使用scanf函数输入数据和字符串时应注意,遇到以 下情况时就认为该数据结束: 1.空白符,制表符,换行符。 2.已读入有宽度所指定的字符数,如“4d”多至4个 数字符。 3.对于输入数值数据,下一个字符不能构成正确的数 据格式。 例 : int i; char c; float x; scanf(“%d%c%f”, 若输入: 456b123x.26 则i=456,c=b,x=123.0 提高人机交互性建议:为改善人机交互性,同时简 化输入操作,在设计输入操作时,一般先用printf()函数输 出一个提示信息,再用scanf()函数进行数据输入。 例如,将 scanf(“num1=%d,num2=%dn“,改为: printf(“num1=“); scanf(“%d“, printf(“num2=“); scanf(“%d“, 。使用格式说明符“%c”输入单个字符时,空格和转 义 字符均作为有效字符被输入。 例如,scanf(“%c%c%c“, printf(“ch1=%c,ch2=%c,ch3=%cn“,ch1,ch2,ch 3); 假设输入:ABC,则系统将字母A赋值给ch1, 空格赋值给ch2,字母B赋值给ch3。 3.3.4 单个字符的输入getchar()函数 1getchar()函数的格式:getchar(); 2getchar()函数的作用:从系统隐含的输入 设备(如键盘)输入一个字符。另外,从功能角 度来看,scanf()函数可以完全代替getchar()函数。 (1)getchar()函数只能用于单个字符的输入 ,一次输入一个字符。 (2)程序中要使用getchar()函数,必须在程 序(或文件)的开头加上编译预处理命令: #include “stdio.h“ 案例 说明getchar()函数的格式和作用。 #include “stdio.h“/*文件包含*/ main() char ch; printf(“Please input two character: “); ch=getchar();/*输入1个字符并赋给ch */ putchar(ch);putchar(n); putchar(getchar(); /*输入一个字符并输出*/ putchar(n); 程序运行情况如下: Please input two characters: ab a b 3.4 顺序结构程序设计 在顺序结构程序中,各语句(或命令)是按照位置 的先后次序,顺序执行的,且每个语句都会被执行到。 案例3.10 输入任意三个整数,求它们的和及平均值。 main() int num1,num2,num3,sum; float aver; printf(“Please input three numbers:”

温馨提示

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

评论

0/150

提交评论