C语言程序设计PPT课件-第2章-简单程序设计.ppt
C C语言程序设计语言程序设计(第(第3 3版)版) 张张 磊磊 编著编著 2121世纪高等学校规划教材世纪高等学校规划教材 清华大学出版社清华大学出版社n2.1 用printf()函数输出数据 n2.2 用scanf()函数输入数据 n2.3 输入输出字符数据 n2.4 语言知识补遗 n2.5 程序设计举例 l2.1.1 固定数值的加法程序固定数值的加法程序l2.1.2 printf()函数函数1程序/* program e2-1.c */#includevoid main()int a,b,c; a=8;b=2000;c=a+b;printf(%dn,c);2程序解析l加法运算的结果由printf()函数输出。lprintf()函数的参数由两部分构成第一部分是“%dn”,称为输出格式控制串,它规定printf()函数输出的结果的形式;第二部分是变量c,称为输出表达式,它是要输出的具体数据。“%d”可以理解为占位符,表示在该位置输出一个整数,实际数值由输出表达式部分的c确定。 “n”是换行控制符,输出c之后自动完成换行操作。 l printf()函数是C语言系统提供的格式化输出函数, 用于向标准输出设备(通常为显示器)按规定格式输出信息。l printf()函数一般使用格式l 说明: “表达式表”是要输出的一系列表达式,各表达式之间用“,”分隔。 “格式化字符串”用于说明要输出表达式的形式:以“%”开始的格式控制参数,它规定对应表达式的输出格式;对普通字符按原样输出,对转义字符,输出的是其转义后的形式。 输出表达式的个数必须与格式化字符串所说明的输出参数个数相同,且顺序要与格式串中要求输出的内容一一对应。 l printf()函数中常用的格式控制符及其功能 格式控制符功能是否常用%d输出一个输出一个int型数据型数据是是%f输出一个输出一个float型数据型数据是是%c输出一个输出一个char型数据型数据是是%ld输出一个long int型数据一般%s输出一个字符串是%u输出一个十进制无符号整数否%e输出一个指数形式的浮点数否%x或%X输出一个以十六进制表示的无符号整数否%O输出一个以八进制表示的无符号整数否%g自动选择%f或%e格式中输出宽度较短的一种形式否l printf()函数的转义字符及其功能字符形式字符形式功能功能是否常用是否常用n换行,将当前位置移到下一行开头换行,将当前位置移到下一行开头是是t水平跳格,跳到下一个水平跳格,跳到下一个Tab位置位置一般一般b退格,将当前位置移到前一列退格,将当前位置移到前一列否否r回车,将当前位置移到本行开头回车,将当前位置移到本行开头否否反斜杠字符反斜杠字符“”否否单引号字符单引号字符否否双引号字符双引号字符否否ddd8进制数表示的对应进制数表示的对应ASCII码字符码字符一般一般xhh16进制数表示的对应进制数表示的对应ASCII码字符码字符一般一般例例2-2 2-2 输出格式控制举例一。输出格式控制举例一。/ /* * program e2-2.c program e2-2.c * */ /#includestdio.h#include void main()void main() int a,bint a,b; ; a=8;a=8;b=2000;b=2000;printf(printf(+ += =n,n, , , , ,); ); l在在“%”和格式控制符之间插进数字,表示输出项的最大域和格式控制符之间插进数字,表示输出项的最大域宽。宽。/* program e2-3.c */#includevoid main() float r=5.7693,s; s=3.1416*r*r; printf(R,r,s); l在“%”和格式控制符之间加入一个- 号,控制输出为左对齐,否则为右对齐。 l字符型数据既可以使用“%c”格式符输出,也可以使用“%d”格式符输出。当使用“%c”格式符时输出字符本身,当使用“%d”格式符时输出字符对应的ASCII码。/ /* * program e2-5.c program e2-5.c * */ /#includestdio.h#include void main()void main() char chchar ch=A; =A; printf(%c,%dn,ch,chprintf(%c,%dn,ch,ch); ); l2.2.1 任意数值的加法程序任意数值的加法程序 l2.2.2 scanf()函数函数例例2-7 一个改进的加法程序。一个改进的加法程序。2程序解析输入功能由“scanf(%d,%d,&a,&b);”语句实现,执行该语句后,计算机进入等待状态,当从键盘输入数据后,再继续执行程序,通过“c=a+b;”语句实现加法运算,最后由“printf(%d+%d=%dn,c);”语句输出加法运算结果。scanf()函数的参数由“%d,%d”和“&a,&b”两部分构成:“%d,%d”规定输入数据的格式,表示输入两个整数,它们之间以“,”分隔;“&a,&b”指定接收数据的变量分别是a和b。 1程序程序/* program e2-7.c */#includevoid main() int a,b,c; printf(Input a,b:); scanf(%d,%d,&a,&b); c=a+b; printf(%d+%d=%dn,c);l scanf()是格式化输入函数,从标准输入设备为变量输入数据。l scanf()函数一般使用格式l 说明: “格式化字符串”用于说明输入数据的类型和数据格式,使用的格式控制符与printf()函数相同。 “变量地址表”是接受输入数据的变量的地址,它们之间以逗号“,”分隔。当接受数据的变量是简单变量时,变量地址的表示形式如下: “格式化字符串”中的格式控制参数之间通常用逗号“,”或空格分隔,也可以不使用任何分隔符号。当使用“,”分隔时,输入数据时各个数据之间也要使用“,”分隔;当使用空格分隔或不使用任何分隔符时,输入的数据之间可以使用空格分隔,也可以使用回车符分隔。(3) “格式字符串”中控制参数的个数必须与变量地址的个数一致。 功能:从键盘输入的字符串中读入一个字符。调用格式:功能:向标准输出设备输出一个字符。调用格式: 说明:ch为一个字符变量名或字符常量,putchar(ch)函数 将ch的值显示在屏幕上。例例2-13 2-13 从键盘输入一个字符,然后再显示出来。从键盘输入一个字符,然后再显示出来。/ /* * program e2-13-1.c program e2-13-1.c * */ /#includestdio.h#include void main() void main() char chchar ch; ; chch= =; ; ; lgetchar()函数也可以直接作函数也可以直接作为为putchar()函数的参数使用。函数的参数使用。/* program e2-13-2.c */#includevoid main() putchar(getchar(); l 2.4.1 数据类型l 2.4.2 常量详解l 2.4.3 简单变量详解l 2.4.4 算数运算l 2.4.5 赋值运算l 2.4.6 宏命令 。基本类型整型字符型实型(浮点型)枚举型构造类型指针类型空类型数组类型结构体类型共用体类型数据类型单精度型双精度型3字符常量字符常量 l 用两个英文单引号限定的一个字符。如:a 、9 、 Z 、%。l 特殊字符常量:转义字符 l 用英文双引号限定的一个字符序列。l 这个字符序列包括的字符个数称为字符串的长度,其长度允许为0。 Hello world 长度为11 “ 长度为1 0.912e8 长度为75符号常量符号常量 l定义符号常量的一般格式:定义符号常量的一般格式:#define 符号常量名符号常量名 常量常量例如:例如: #define MAX 200该命令定义了符号常量该命令定义了符号常量MAX,它表示常数,它表示常数200。变量分类变量分类类型标识符类型标识符类型名称类型名称存储数据存储数据完整形式完整形式简化形式简化形式整型变量整型变量signed intint有符号基本整型有符号基本整型整型数据整型数据signed short intshort有符号短整型有符号短整型signed long intlong有符号长整型有符号长整型unsigned int unsigned int无符号基本整型无符号基本整型unsigned short intunsigned short无符号短整型无符号短整型unsigned long intunsigned long无符号长整型无符号长整型实型变量实型变量floatfloat单精度实型单精度实型实型数据实型数据doubledouble双精度实型双精度实型字符型变量字符型变量charchar字符型字符型字符数据字符数据 变量名变量名=表达式表达式 (1)定义变量的同时为变量赋初值 (2)先定义变量,然后再为变量赋值 3运算符的优先级和结合性运算符的优先级和结合性不同运算符在表达式中的运算顺序。不同运算符在表达式中的运算顺序。算术运算的优先顺序算术运算的优先顺序 负号运算符(负号运算符(-)最高,其次是乘法()最高,其次是乘法(*)、除法()、除法(/)、求余()、求余(%)运算,)运算,最后是加法(最后是加法(+)、减法()、减法(-)运算。有括号)运算。有括号()时,括号的优先级别最高。时,括号的优先级别最高。 在表达式中,当一个运算量的两侧有两个相同优先级别的运算符时,该在表达式中,当一个运算量的两侧有两个相同优先级别的运算符时,该运算量先和那个运算符进行结合运算的问题。运算量先和那个运算符进行结合运算的问题。有两个结合方向:有两个结合方向: /* program e2-14.c */#include#include /* 程序中使用数学函数时,要使用该命令 */void main() float x,y; printf(Data: ); scanf(%f%f,&x,&y); printf(Result: %fn,sqrt(x*x+y*y); /* sqrt()是数学函数 */2define命令命令2define命令命令2define命令命令2define命令命令2define命令命令/ /* * program e2-17.c program e2-17.c * */ /#includestdio.h#include #define m(x#define m(x) x) x* *x x* *x x* *x xvoid main()void main() int a,b,sint a,b,s; ;printf(Input a,bprintf(Input a,b: );: );scanf(%d,%d,&a,&bscanf(%d,%d,&a,&b););s=m(a)+m(bs=m(a)+m(b););printf(Result: %dn,sprintf(Result: %dn,s);); 设三角形边长为设三角形边长为a、b、c,计算其面积,计算其面积area。 从键盘输入一个大写英文字母,然后在屏幕上输出它的小写形式。从键盘输入一个大写英文字母,然后在屏幕上输出它的小写形式。 l问题分析问题分析 /* program e2-20.c */ #include void main() char ch; printf(Input: ); ch=getchar(); printf(Output: %cn,ch+32); 编写程序,求解鸡兔同笼问题。编写程序,求解鸡兔同笼问题。 数据输入和输出是程序的最基本问题,基本实现函数是printf()、scanf()、putchar()和getchar()。printf()和scanf()是有格式的输出、输入函数,可以实现任何类型数据的输出和输入;putchar()和getchar()是无格式的字符输出、输入函数,只能实现一个字符的输出和输入。使用scanf()为变量输入数据时,需要使用变量的地址形式。 C语言有5种类型的常量数据,其中转义字符常量和符号常量是比较特殊的常量形式。 C语言中的变量只有经过定义之后才能使用,变量定义的一般形式: 编译预处理是语言的基本技术,它是在源程序正式编译前由预处理程序完成的。本章介绍了宏定义命令define和宏包含命令include,它们是程序设计中最常用的编译预处理命令。