1、第四章 顺序程序设计程序设计时,通常采用三种不同的程序结构,即顺序结构、选择结构和循环结构。其中顺序结构是最基本、最简单的程序结构。通过本章顺序程序设计的学习,使大家可以开始最简单的 C 程序设计。4、1 C 语句概述C 语言的语句用来向计算机系统发出操作指令。一个语句经过编译后产生若干条机器指令。实际程序包含若干条语句。语句都是用来完成一定操作任务的。声明部分的内容不应当称为语句。函数包含声明部分和执行部分,执行部分由语句组成。C 程序结构:一个 C 程序可以由若干个源程序文件组成,一个源文件可以由若干个函数和预处理命令以及全局变量声明部分组成,一个函数由数据定义部分和执行语句组成。程序包括
2、数据描述(由声明部分来实现)和数据操作(由语句来实现)。数据描述主要定义数据结构(用数据类型表示)和数据初值。数据操作的任务是对已提供的数据进行加工。C 语句可以分为以下 3 大类:4、1、1 控制语句-完成一定控制功能的语句(主要用于控制程序流程)。C 有 9 种控制语句,它们是:4、 1、2 表达式语句-用表达式构成语句,表示一个运算或操作。表达式语句是在表达式最后加上一个“;”组成。一个表达式语句必须在最后出现分号,分号是表达式语句不可缺少的一部分。C 程序中大多数语句是表达式语句(包括函数调用语句)。表达式语句的一般形式:例如:表达式 表达式语句 说明a=3(赋值表达式) a=3;(赋
3、值语句)getch()(函数调用-表达式)函数调用也属于表达式getch();(函数调用语句) getch();合法且有意义,只关心是否有击键,不关心具体的值i+(自增表达式) i+;(一般表达式语句)ch=getch()(函数调用表达式,赋值表达式)ch=getch();(一般表达式语句)x+y(算术表达式) x+y;(一般表达式语句) x+y;是一个语句,其作用是完成x+y 操作,是合法的,但是并不将结果赋给另外的变量,所以并无实际意义表达式语句常见的形式可以有:赋值语句、函数调用语句、空语句。表达式;1、 赋值语句:由赋值表达式加上一个分号构成赋值语句。C 语言的赋值语句先计算赋值运算符
4、右边的子表达式的值,然后将此值赋值给赋值运算符左边的变量。C 语言的赋值语句具有其它高级语言的赋值语句的一切特点和功能。2、 函数调用语句:由函数调用表达式加一个分号构成函数调用语句。例如:printf(“This is a C statement.”);3、 空语句:只有一个分号的语句,它什么也不做(表示这里可以有一个语句,但是目前不需要做任何工作)。例如:(1)空循环 100 次,可能表示一个延时,也可能表示目前还不必在循环体中做什么事情。for(i=0;i。又如 fabs 函数属于数学库,CPUI/O 对应的头文件是 math.h,如果要使用 fabs 函数计算绝对值,那么应当在程序的开
5、头#include 。注意:1、函数说明检查函数调用,进行数据类型转换,并产生正确的调用格式。许多编译系统强制要求函数说明(函数原型声明),否则编译不成功。2、Turbo C 中可以用F1 查看一个函数的说明(包含属于哪个头文件)。4、3 格式输入/输出4、3、1 printf 函数(格式输出函数)功能:按照用户指定的格式,向系统隐含的输出设备(终端)输出若干个任意类型的数据。1、printf 函数的一般格式:例如:函数参数包括两部分:(1)“格式控制”字符串是用双引号括起来的字符串,也称“转换控制字符串”, 它指定输出数据项的类型和格式。它包括两种信息: 格式说明项:由“%”和格式字符组成,
6、如%d,%f 等。格式说明总是由“%”字符开始,到格式字符终止。它的作用是将输出的数据项转换为指定的格式输出。输出表列中的每个数据项对应一个格式说明项。 普通字符:即需要原样输出的字符。例子中的逗号和换行符。printf(格式控制字符串,输出表列)(2)“输出列表”是需要输出的一些数据项,可以是表达式。例如:假如 a=3,b=4,那么 printf(“a=%d b=%d”,a,b);输出 a=3 b=4。其中两个“%d”是格式说明,表示输出两个整数,分别对应变量 a,b,“a=”,“b=”是普通字符,原样输出。由于 printf 是函数,因此“格式控制”字符串和“输出表列”实际上都是函数的参数
7、。printf 函数的一般形式可以表示为:printf(参数 1、参数 2、参数 3、参数 n)printf 函数的功能是将参数 2-参数 n 按照参数 1 给定的格式输出。2、格式字符(构成格式说明项)对于不同类型的数据项应当使用不同的格式字符构成的格式说明项。常用的有以下几种格式字符:(按不同类型数据,列出各种格式字符的常用用法)(1)d 格式符。用来输出十进制整数。有以下几种用法: %d,按照数据的实际长度输出 %md,m 指定输出字段的宽度(整数)。如果数据的位数小于 m,则左端补以空格(右对齐),若大于 m,则按照实际位数输出。 %-md,m 指定输出字段的宽度(整数)。如果数据的位
8、数小于 m,则右端补以空格(左对齐),若大于 m,则按照实际位数输出。 %ld,输出长整型数据,也可以指定宽度%mld。(2)O 格式符。以八进制形式输出整数。注意是将内存单元中的各位的值按八进制形式输出,输出的数据不带符号,即将符号位也一起作为八进制的一部分输出。int a=-1;printf(“%d,%o,%x”,a,a,a);-1 的原码:1000,0000,0000,0001。-1 在内存中的补码表示为:1111,1111,1111,1111=1,111,111,111,111,111=1,7,7,7,7,7=ffff输出:-1,177777,ffff-1 是十进制,177777 是八
9、进制,ffff 是十六进制。(3)x 格式符。以十六进制形式输出整数。与 o 格式一样,不出现负号。(4)u 格式符。用来输出 unsigned 无符号型数据,即无符号数,以十进制形式输出。一个有符号整数可以用%u 形式输出,反之,一个 unsigned 型数据也可以用%d 格式输出。(5)c 格式符。用来输出一个字符。一个整数只要它的值在 0-255 范围内,也可以用字符形式输出。反之,一个字符数据也可以用整数形式输出。也可以指定字段宽度。%mc,m-整数(6)s 格式符。用来输出一个字符串。有几种用法: %s,输出字符串 %ms,输出的字符串占 m 列,如果字符串长度大于 m,则字符串全部
10、输出;若字符串长度小于 m,则左补空格(右对齐)。 %-ms,输出的字符串占 m 列,如果字符串长度大于 m,则字符串全部输出;若字符串长度小于 m,则右补空格(左对齐)。 %m.ns,输出占 m 列,但只取字符串左端 n 个字符,左补空白(右对齐)。 %-m.ns,输出占 m 列,但只取字符串左端 n 个字符,右补空白(左对齐)。(7)f 格式符。用来输出实数(包括单、双精度,单双精度格式符相同),以小数形式输出。有以下几种用法:main()char c=a;int i=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);运行结果:a,97a,97 %f
11、,不指定宽度,使整数部分全部输出,并输出 6 位小数。注意,并非全部数字都是有效数字,单精度实数的有效位数一般为 7 位(双精度 16 位)。 %m.nf,指定数据占 m 列,其中有 n 位小数。如果数值长度小于 m,左端补空格(右对齐)。 %-m.nf,指定数据占 m 列,其中有 n 位小数。如果数值长度小于 m,右端补空格(左对齐)。(8)e 格式符,以指数形式输出实数。可用以下形式: %e,不指定输出数据所占的宽度和小数位数,由系统自动指定,如 6 位小数,指数占5 位-e 占 1 位,指数符号占 1 位,指数占 3 位。数值按照规格化指数形式输出(小数点前必须有而且只有 1 位非 0
12、数字)。例如:1.234567e+002。(双精度) %m.ne 和%-m.ne,m 总的宽度,n 小数位数。(9)g 格式符,用来输出实数,它根据数值的大小,自动选 f 格式或 e 格式(选择输出时占宽度较小的一种),且不输出无意义的 0(小数末尾 0)。以上介绍的 9 种格式符,归纳如下表:#include main()float f=123.0;printf(“%f,%e,%gn“,f,f,f);123.000000,1.23000e+02,123教材 p32-p34 的 4、2、4 节是将格式说明项分为几个部分依次说明各个部分的作用,并对每个部分进行说明,课后请对照笔记仔细阅读,总结一
13、般规律,切忌死记硬背。Turbo C 中 printf 函数格式字符串的一般形式:3、使用 printf 函数的几点说明:(1)除了 X,E,G 外,其它格式字符必须用小写字母。如%d 不能写成%D。% m . n h/l 格式字符开始符 标志字符 宽度指示符 精度指示符 长度修正符 格式转换符(2)可以在“格式控制”字符串中包含转义字符。如“n”(3)格式符以%开头,以上述 9 个格式字符结束。中间可以插入附加格式字符。(4)如果想输出字符%,则应当在“格式控制”字符串中用两个%表示。4、3、2 scanf 函数(格式输入函数)1、scanf 函数的一般格式: 其中:(1)格式控制字符串的含义与 printf 类似,它指定输入数据项的类型和格式。(2)地址列表是由若干个地址组成的列表,可以是变量的地址(scanf(“%d%d%d”,printf(“%d,%d,%dn”,a,b,c); &是地址运算符,&a 指变量 a 的地址。scanf 的作用是将键盘输入的数据保存到&a,&b,&c 为地址的存储单元中,即变量 a,b,c 中。 %d%d%d 表示要求输入 3 个十进制整数。输入数据时,在两个数据之间以一个或多个空格分隔,也可以用回车键,跳格键(tab)分隔。这种格式不能用逗号分隔数据。例如,合法的输入: 3 4 5 34 5 3(按 tab 键)45非法的输入:3,4,5