《3 顺序结构程序设计.ppt》由会员分享,可在线阅读,更多相关《3 顺序结构程序设计.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章章 顺序结构程序设计顺序结构程序设计3.1 C3.1 C语言基本语句语言基本语句3.1.1 简单语句简单语句1.1.表达式语句表达式语句表达式加上分号就是一个表达式语句表达式加上分号就是一个表达式语句表达式;表达式;(1 1)运算符表达式语句)运算符表达式语句i+;i+;-j;-j;(2 2)赋值语句)赋值语句x=1;x=1;x=x*3*cos(x);x=x*3*cos(x);2.2.函数调用语句函数调用语句由函数调用表达式后跟一个分号组成由函数调用表达式后跟一个分号组成函数名(参数列表);函数名(参数列表);例:例:scanf(scanf(“%f%f”,&x);,&x);printf
2、(printf(“%f%f”,x);,x);常用的数学函数常用的数学函数sin(x),cos(x),exp(x),fabs(x),log(x)sin(x),cos(x),exp(x),fabs(x),log(x)调用标准库函数要注意以下几点:调用标准库函数要注意以下几点:(1 1)要在程序中包含相应的头文件)要在程序中包含相应的头文件例:例:#include#include#include#include(2 2)库函数的调用规则)库函数的调用规则库函数调用的一般形式:库函数调用的一般形式:函数名(参数表);函数名(参数表);y1=sin(1.7);y1=sin(1.7);y2=3*sin(3
3、.14159*x/180);y2=3*sin(3.14159*x/180);y3=2*sin(+x*3.14159/180)+10;y3=2*sin(+x*3.14159/180)+10;例如,要将下面表达式写成例如,要将下面表达式写成C C语句:语句:|3sinx+4cosx|+e|3sinx+4cosx|+ex xfabs(3*sin(x)+4*cos(x)+exp(x);fabs(3*sin(x)+4*cos(x)+exp(x);有时调用某些函数并不是为了得到返回值有时调用某些函数并不是为了得到返回值,而只是为了完成而只是为了完成某项任务。调用这类函数时,可直接用函数调用语句,例如:某项
4、任务。调用这类函数时,可直接用函数调用语句,例如:scanf(scanf(“%f%f”,&a);/*,&a);/*输入变量输入变量a a的值的值*/printf(printf(“%6.4f%6.4f”,b);/*,b);/*输出变量输出变量b b的值的值*/3.3.空语句空语句空语句用一个分号表示空语句用一个分号表示;3.1.2 3.1.2 复合语句复合语句复合语句是由花括号将多条语句组合在一起而构成的,在语复合语句是由花括号将多条语句组合在一起而构成的,在语法上相当于一条语句。一般形式为:法上相当于一条语句。一般形式为:内部数据描述语句内部数据描述语句 数据操作语句数据操作语句1 1;数据操
5、作语句数据操作语句n n;注意:注意:(1 1)复合语句中定义的变量是局)复合语句中定义的变量是局部变量,仅在复合语句中有效;部变量,仅在复合语句中有效;(2 2)复合语句结束的)复合语句结束的“”之后,之后,不需要再加分号;不需要再加分号;例例3.1 3.1 复合语句复合语句main()int x=1,y=2;int x=2;int x=3;printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y);x=3,y=2x=3,y=2x=2,y=2x=2,y=2x=1,y=2x=1,y=23.2 3.2 数据输入与输出数
6、据输入与输出3.2.1 3.2.1 字符输入输出函数字符输入输出函数 1.1.字符输出函数字符输出函数函数原型:函数原型:int putchar(int);int putchar(int);main()main()int i=97;int i=97;char ch=char ch=a a;putchar(i);putchar(i);putchar(putchar(nn););putchar(ch);putchar(ch);2.2.字符输入函数字符输入函数函数原型:函数原型:int getchar(void);int getchar(void);main()main()int ch;int ch
7、;ch=getchar();ch=getchar();putchar(ch);putchar(ch);3.2.2 3.2.2 格式输出函数格式输出函数printfprintf1.1.格式输出函数的一般形式:格式输出函数的一般形式:printf(printf(“格式控制字符串格式控制字符串”,输出项表列,输出项表列)u 格式控制由两部分组成:格式控制由两部分组成:(a)(a)格式说明由和格式字符组成,如格式说明由和格式字符组成,如d d,f f,它的作用,它的作用是将输出的数据转换为指定的格式输出是将输出的数据转换为指定的格式输出(b)(b)普通字符,即需要原样输出的字符。普通字符,即需要原样输
8、出的字符。u输出表列是需要输出的一些数据。输出表列是需要输出的一些数据。例:例:int i=97;printf(“i=%d,%cn”,i,i);2.2.格式控制格式控制由由3 3部分组成:部分组成:(1 1)普通字符。按原样输出,主要用于输出提示信息)普通字符。按原样输出,主要用于输出提示信息(2 2)转义字符。指明特定的操作,如)转义字符。指明特定的操作,如nn(3 3)格式说明部分由)格式说明部分由”%”和和”格式字符串格式字符串”组成组成%flagswidth.precF|N|h|ltype%flagswidth.precF|N|h|ltype(a)(a)”为可选项,如为可选项,如pri
9、ntf(printf(“%d%d”,100);,100);(b)flags(b)flags为可选择的标志字符:为可选择的标志字符:-:左对齐输出,默认为右对齐输出:左对齐输出,默认为右对齐输出+:正数加:正数加+,负数加,负数加-空格:正数输出空格代替加号(空格:正数输出空格代替加号(+),负数输出减号(),负数输出减号(-)(c c)widthwidth为可选择的宽度指示符为可选择的宽度指示符printf(printf(“%8dn%8dn”,100);printf(,100);printf(“%6dn%6dn”,100);,100);printf(printf(“%-8dn%-8dn”,10
10、0);printf(,100);printf(“%+8dn%+8dn”,100);,100);输出结果为:输出结果为:100100100100(d).precd).prec为可选的精度指示符为可选的精度指示符printf(printf(“%8.2fn%8.2fn”,3.14159);,3.14159);printf(printf(“%8.5fn%8.5fn”,3.14159);,3.14159);输出结果为:输出结果为:3.14 3.14159(e)F|N|h|l(e)F|N|h|l为可选的输出长度修饰符为可选的输出长度修饰符输出远指针存放的地址;输出远指针存放的地址;输出近指针存放的地址;输
11、出近指针存放的地址;输出短整型数据的值;输出短整型数据的值;输出长整型或双精度数据的值。输出长整型或双精度数据的值。long n=40000;long n=40000;printf(printf(“%8ldn%8ldn”,n);,n);(f)type(f)type为可选的格式字符为可选的格式字符见课本见课本3535页表页表3.13.1字符字符说明说明d(或或i)以带符号的十进制形式输出整数以带符号的十进制形式输出整数o以八进制无符号形式输出整数以八进制无符号形式输出整数x(或或X)以十六进制无符号形式输出整数以十六进制无符号形式输出整数u以无符号十进制形式输出整数以无符号十进制形式输出整数c输
12、出一个字符输出一个字符s输出字符串输出字符串f以小数形式输出单、双精度数以小数形式输出单、双精度数e(或或E)以指数形式输出单、双精度数以指数形式输出单、双精度数g(或或G)由给定的值和精度自动选用由给定的值和精度自动选用%f或或%e或或%E格式格式%输出百分号输出百分号(%)3.3.输出项列表输出项列表(1 1)d%ld%md%-md%mld%-mldd%ld%md%-md%mld%-mld例:例:printf(printf(“%d%d”,100);,100);结果:结果:100100printf(printf(“%5d%5d”,100);,100);100n=100printf(“%8dn
13、%8d”,n,n*100);10010000long l=65432;printf(”8ld”,l);65432(2)%oint n=-1;printf(“%o”,n);结果为:结果为:177771 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1(3)%xint n=-1;printf(“%x”,n);printf(“%X”,n);结果为:结果为:ffff,FFFF1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (4 4)%u%uint n=-1;int n=-1;printf(printf(“%d,%u%d,%u”,n,n);,n,n);结果为:结果为:-1,65
14、535-1,655351 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (5 5)%c%mc%c%mc例:例:printf(printf(“%4c%4c”,A A););结果为:结果为:Aprintf(“%c”,A);A (6)%s (6)%s ms%-ms%m.ns%-m.nsms%-ms%m.ns%-m.ns例:例:printf(printf(“%s%s”,”Name:Name:”););结果为:结果为:Name:Name:例:例:printf(printf(“%-10s%-10s”,“Name:Name:”););结果为:结果为:Name:Name:printf(“%8.2
15、s”,”Name:”);结果为:结果为:Na (7)%f%m.nf%-m.nf(7)%f%m.nf%-m.nfprintf(printf(“%f%f”,1000.7654321);,1000.7654321);结果为:结果为:1000.7654321000.765432printf(printf(“%10.3f%10.3f”,1000.7654321);,1000.7654321);结果为:结果为:1000.765printf(“%10.3f”,1111000.7654321);结果为:结果为:1111000.765(8 8)e e以指数形式输出,标准共占以指数形式输出,标准共占1313位,尾
16、数的整数部分非零数字位,尾数的整数部分非零数字占占1 1位,小数点位,小数点1 1位,小数占位,小数占6 6位,位,e e占占1 1位,指数符号占位,指数符号占1 1位,位,指数占指数占3 3位。位。例:例:printf(printf(“%e%e”,1000.7654321);,1000.7654321);结果为:结果为:1.000765e+0031.000765e+003“%m.ne%m.ne”printf(printf(“%10.9e%10.9e”,1000.7654321);,1000.7654321);结果为:结果为:1.000765432e+0031.000765432e+003(2
17、009.32009.3)15.15.程序段程序段:int x=12;double:int x=12;double y=3.141593;printf(%d%8.6f,x,y);y=3.141593;printf(%d%8.6f,x,y);的输出结果是的输出结果是A)123.141593A)123.141593B)12 3.141593B)12 3.141593C)12,3.141593C)12,3.141593D)123.1415930D)123.1415930A A(2009.3)(2009.3)7.7.若变量若变量x,yx,y已定义为已定义为intint类型且类型且x x的值为的值为999
18、9,y y的的值为值为9,9,请将输出语句请将输出语句printf(printf(【】,x/y);,x/y);补充完整补充完整,使其输出的计算结果形式为使其输出的计算结果形式为:x/y=11x/y=11。x/y=%d x/y=%d(2008.9)(2008.9)7.7.若整形变量若整形变量a a和和b b中的值分别为中的值分别为7 7和和9 9,要求按以,要求按以下格式输出下格式输出a a和和b b的值:的值:a=7a=7b=9b=9请完成输出语句:请完成输出语句:printf(printf(【7 7】,a,b);,a,b);a=%dnb=%dn a=%dnb=%dn 3.2.3 格式输入函数
19、格式输入函数scanf1.格式输入函数的一般形式格式输入函数的一般形式scanf(“格式控制字符串格式控制字符串”,地址列表);,地址列表);例例scanf(“%d,%c”,&I,&k);2.格式控制格式控制格式控制字符串由格式字符和普通字符两部分组成。格式控制字符串由格式字符和普通字符两部分组成。(1)格式字符)格式字符%*widthF|Nh|ltype (a)*(a)*为输入赋值抑制字符,表示该格式要求输入数据,为输入赋值抑制字符,表示该格式要求输入数据,但不赋值,也即在地址列表中没有对应的地址项但不赋值,也即在地址列表中没有对应的地址项scanf(scanf(“%3d%*5d%f%3d%
20、*5d%f”,&a,&x);,&a,&x);若输入:若输入:2001200 4.12001200 4.1则则a a为为200200,x x为为4.14.1(b)width(b)width为宽度指示符为宽度指示符例:例:scanf(scanf(“%3d%5d%f%3d%5d%f”,&a,&b,&x);,&a,&b,&x);若输入:若输入:2001200 4.12001200 4.1则则a a为为200200,b b为为12001200,x x为为4.14.1 (2 2)普通字符)普通字符与与printfprintf函数的普通字符不同,函数的普通字符不同,scanfscanf的格式控制字符串的格式
21、控制字符串中普通字符是不显示的,而是规定了输入时必须输入的中普通字符是不显示的,而是规定了输入时必须输入的字符,例:字符,例:scanfscanf(“i=%di=%d”,&i);,&i);执行时就输入:执行时就输入:i=30i=30若若scanf(scanf(“%d,%f%d,%f”,&a,&x);,&a,&x);则输入格式为:则输入格式为:10,0.310,0.3 3.3.地址列表地址列表是由若干个地址组成的列表,可以是变量的地址、字符是由若干个地址组成的列表,可以是变量的地址、字符串的首地址、指针变量等。串的首地址、指针变量等。scanf(scanf(“%d%d%d%d”,a,b);,a,
22、b);scanf(scanf(“%d%d%d%d”,a+b);,a+b);printf(printf(“%d%d”,i);,i);scanf(scanf(“%d%d”,&i);,&i);4.scanf4.scanf运行时的注意事项运行时的注意事项(1)(1)输入数据分隔处理输入数据分隔处理scanf(scanf(“%d%d%d%d”,&a,&b);,&a,&b);可以是一个或多个空隔,也可以用回车键可以是一个或多个空隔,也可以用回车键100100 1010或或1001001010如若:如若:scanf(scanf(“%2d%3d%2d%3d”,&a,&b);,&a,&b);1223100122
23、3100 (2 2)用)用scanfscanf函数输入实数,用函数输入实数,用”f f”,但不允许规定精度,但不允许规定精度例:例:scanf(scanf(“%10.4f%10.4f”,&a);,&a);(3 3)如果输入类型不匹配,)如果输入类型不匹配,scanfscanf函数将停止处理函数将停止处理例:例:int a,b;int a,b;char ch;char ch;scanf(scanf(“%d%c%3d%d%c%3d”,&a,&ch,&b);,&a,&ch,&b);12 a 2312 a 23(2009.3)(2009.3)19.19.若变量已正确定义为若变量已正确定义为intint
24、型,要通过语句型,要通过语句scanf(%d,%d,%d,&a,&b,&c);scanf(%d,%d,%d,&a,&b,&c);给给a a赋值赋值1 1、给给b b赋值赋值2 2、给、给c c赋值赋值3 3,以下输入形式中错误的是,以下输入形式中错误的是(代表一个空格符)代表一个空格符)A)1,2,3A)1,2,3 B)123B)123 C)1,2,3C)1,2,3 D)1,2,3D)1,2,3 B B(2009.32009.3)23.23.有以下程序有以下程序#include#includemain()main()intinta1,a2;a1,a2;charcharc1,c2;c1,c2;s
25、canf(%d%c%d%c,&a1,&c1,&a2,&c2);scanf(%d%c%d%c,&a1,&c1,&a2,&c2);printf(%d,%c,%d,%c,a1,c1,a2,c2);printf(%d,%c,%d,%c,a1,c1,a2,c2);若通过键盘输入,使得若通过键盘输入,使得a1a1的值为的值为12,a212,a2的值为的值为34,c134,c1的值为字符的值为字符a,c2a,c2的的值为字符值为字符b,b,程序输出结果是程序输出结果是:12,a,34,b:12,a,34,b 则正确的输入格式是则正确的输入格式是(以下以下_ _代表空格代表空格,代表回车代表回车)A)12a34bA)12a34bB)12_a_34_bB)12_a_34_bC)12,a,34,bC)12,a,34,bD)12_a34_bD)12_a34_bA A