《第四章 C语言-第四章.ppt》由会员分享,可在线阅读,更多相关《第四章 C语言-第四章.ppt(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章第四章 C语言语言-第四章第四章一、C语句概述案例案例 已知圆半径radius=1.5,求圆周长和圆面积。#include#define Pi=3.1415926main()float radius,length,area;radius=1.5;length=2*Pi*radius;/*求圆周长*/area=Pi*radius*radius;/*求圆面积*/printf(“radius=%fn”,radius);/*输出圆半径*/printf(“length=%7.2f,area=%7.2fn”,length,area);/*输出圆周长、面积*/预处理命令预处理命令全局变量全局变量函数函
2、数C C语言提供的语句分五大类:语言提供的语句分五大类:(1)(1)控制语句,完成控制功能控制语句,完成控制功能if()else if()else 条件条件 for()for()循环循环 while()while()循环循环 do while()do while()循环循环 continue continue 结束本次循环结束本次循环 break break 中止中止switch switch 或循环或循环 switch switch 多分支选择多分支选择 goto goto 转向转向 return return 从函数返回从函数返回(2)(2)函数调用语句函数调用语句 函数名(参数);函数名
3、(参数);如:如:printf(“This is a C program.n”);printf(“This is a C program.n”);max(a,b);max(a,b);(3)(3)表达式语句表达式语句 在表达式后加在表达式后加 “;”“;”构成构成 a=6a=6 a=5;a=5;如如 i=i+2i=i+2 是是表达表达式式 而而 i=i+2;i=i+2;是是表达式语句表达式语句 x+yx+y x+y;x+y;(4)(4)空语句空语句 ;无任何操作,但合法,可用于循环中的转折无任何操作,但合法,可用于循环中的转折(5)(5)复合语句复合语句 用用 将若干语句括起来而构成的语句。将若
4、干语句括起来而构成的语句。如:如:if(xy)if(xy)与与 if(xy)if(xy)意义不同意义不同 z=x;z=x;z=x;z=x;x+;x+;x+;x+;y-;y-;y-;y-;二、赋值语句由赋值表达式与由赋值表达式与 “;”组成。组成。形式:变量形式:变量=表达式;表达式;功能:计算表达式的值,然后赋给左边的变量。功能:计算表达式的值,然后赋给左边的变量。说明:说明:1.1.赋值号与数学上的等号意义不同,如赋值号与数学上的等号意义不同,如 x=x+2;x=x+2;2.2.在在C C语言中,赋值号作为赋值运算符使用,具有计算语言中,赋值号作为赋值运算符使用,具有计算的功能。的功能。3.
5、3.赋值表达式可以包含在其它表达式之中。赋值表达式可以包含在其它表达式之中。如:如:if(a=b)0)t=a;if(a=b)0)t=a;但但赋值语赋值语句不能包含在条件表达式中,如句不能包含在条件表达式中,如:if(a=b;)0)t=a;if(a=b;)0)t=a;三、数据输入输出(1)(1)输入输出:相对主机而言的输入输出:相对主机而言的 输入设备:键盘、扫描仪、磁盘、光盘等输入设备:键盘、扫描仪、磁盘、光盘等 输输出出设备设备:显显示器、打印机、磁示器、打印机、磁盘盘等。等。(2)(2)本身不提供本身不提供I/OI/O语句语句:I/OI/O操操作作通通过过函函数数实实现现,标标准准函函数数
6、库库中中提提供供了了一一些些I/OI/O函函数数,如如printf,scanfprintf,scanf等等,它它们们不不是是的的关关键键字字,而而是是函数名。函数名。好处是:使编译系统简化、通用性强、可移植性好。好处是:使编译系统简化、通用性强、可移植性好。C C函数函数库库提供的一些提供的一些标标准准/函数是以函数是以终终端端设备为设备为I/OI/O对对象的,如:象的,如:putchar,getchar,printf,scanf,puts,putchar,getchar,printf,scanf,puts,getsgets。(3)(3)使用库函数时使用库函数时:用预编译命令用预编译命令#in
7、cludeinclude将有关头文件包含到用户源文件将有关头文件包含到用户源文件中,在头文件中包含了与用到的函数有关的信息,如使中,在头文件中包含了与用到的函数有关的信息,如使用输入输出函数时要用到用输入输出函数时要用到stdio.hstdio.h文件。文件。#includeinclude放在程序开头放在程序开头如如#include“stdio.h”include“stdio.h”或或#include include 注意:区别注意:区别#includeinclude语句中用语句中用和和的区别。的区别。(2)(2)本身不提供本身不提供I/OI/O语句语句:I/OI/O操操作作通通过过函函数数实
8、实现现,标标准准函函数数库库中中提提供供了了一一些些I/OI/O函函数数,如如printf,scanfprintf,scanf等等,它它们们不不是是的的关关键键字字,而而是是函数名。函数名。好处是:使编译系统简化、通用性强、可移植性好。好处是:使编译系统简化、通用性强、可移植性好。C C函数函数库库提供的一些提供的一些标标准准/函数是以函数是以终终端端设备为设备为I/OI/O对对象的,如:象的,如:putchar,getchar,printf,scanf,puts,putchar,getchar,printf,scanf,puts,getsgets。四、字符数据的输入输出功能:向输出设备输出一
9、个字符。功能:向输出设备输出一个字符。形式:形式:putchar(putchar(参数参数)其中,参数可以是整型或字符型变量或常量。其中,参数可以是整型或字符型变量或常量。例如:例如:putchar(97);putchar(a);putchar(97);putchar(a);都输出字符都输出字符 a,a,char c=b;putchar(c);char c=b;putchar(c);输出字符输出字符 b b。注意:在注意:在C C语言中,除语言中,除printf printf 和和 scanf scanf 两个函数外,两个函数外,使用其它使用其它I/OI/O函数时,都必须在源文件的开始处加上预
10、函数时,都必须在源文件的开始处加上预编译命令:编译命令:#include “stdio.h”include “stdio.h”意意义义:将:将标标准准I/OI/O函数函数库库中的函数包含到所在文件中来中的函数包含到所在文件中来 4.1、putchar(字符输出函数)#include include main()main()char a,b,c;char a,b,c;a=B;b=O;c=Y;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(a);putchar(b);putchar(c);运行运行结结果:果:BOY BOY 若无文件包含编译
11、预处理,在编译连接时系统将指出:若无文件包含编译预处理,在编译连接时系统将指出:Linking Error:Undefine symbol _putchar in Linking Error:Undefine symbol _putchar in moduel XXX.c moduel XXX.c 另:另:putchar()putchar()函数还可以输出控制字符函数还可以输出控制字符 如如:n n 或或012012 aa或或 007007 r r 或或 015 015 换行换行 响铃响铃 回车回车#include “stdio.h”include “stdio.h”main()main()c
12、har a=A char a=A,b=Bb=B,c=007c=007;putchar(a)putchar(a);putchar(b)putchar(b);putchar(n)putchar(n);putchar(c)putchar(c);sleep(3)sleep(3);putchar(c)putchar(c);putchar(65)putchar(65);putchar(66)putchar(66);putchar(007)putchar(007);sleep(3)sleep(3);putchar(007)putchar(007);运行结果:运行结果:AB AB 响响 延时延时3 3秒秒 响
13、响 ABAB 响响 延时延时3 3秒秒 响响 功能:从键盘输入一个字符功能:从键盘输入一个字符 形式:形式:getchar()getchar()特点:无参数,其特点:无参数,其值值是从是从输输入入设备设备得到的字符。得到的字符。#include “stdio.h”include “stdio.h”main()main()char c;char c;c=getchar();c=getchar();putchar(c);putchar(c);putchar(getchar();printf(“%cn”,getchar();putchar(getchar();printf(“%cn”,getchar
14、();输入:输入:abc abc 输输出:出:abcabc 如果一个一个输入呢?换行符如果一个一个输入呢?换行符 4.2 getchar函数五、格式输入与输出功能:向输出设备输出若干个任意类型的数据功能:向输出设备输出若干个任意类型的数据 1 1、printf printf 函数的一般格式函数的一般格式 printf(printf(格式控制,输出表列)格式控制,输出表列)(1)(1)格格式式控控制制:由由双双引引号号括括起起来来的的一一串串字字符符(格格式式说说明明和和普通字符)。普通字符)。格格式式说说明明:由由%和和格格式式字字符符(c,d,u,f,e,o,x,s,g)c,d,u,f,e,
15、o,x,s,g)组成。组成。普通字符:需要原样输出的字符。普通字符:需要原样输出的字符。(2)(2)输出表列输出表列:需要桉格式说明所指定的格式输出的数据,:需要桉格式说明所指定的格式输出的数据,可以是常量、变量、表达式。可以是常量、变量、表达式。格式控制格式控制 一般形式:一般形式:printf(printf(参数参数1 1,参数,参数2 2,参数参数n)n)将参数将参数22n n按参数按参数1 1的格式的格式输输出。中出。中间间由逗号隔开。由逗号隔开。5.1 printf 格式输出函数2 2、格式字符、格式字符(1)(1)d d 格式符:输出十进制整数格式符:输出十进制整数%d d:按十进
16、制数据的实际长度输出。按十进制数据的实际长度输出。%md md:m m为指定输出字段的宽度。为指定输出字段的宽度。m m时时 按数据的按数据的实际实际位数位数输输出。出。main()main()int a=123,b=12345 int a=123,b=12345;printf(“a=%4d,b=%4dn”,a,b)printf(“a=%4d,b=%4dn”,a,b);运行运行结结果:果:a=_123,b=12345a=_123,b=12345%ldld:输出长整型数据输出长整型数据 对对于于长长整整型型数数据据只只能能按按长长整整型型的的格格式式说说明明符符输输出出,否则否则,输出的数据有误
17、。输出的数据有误。在在长长整型格式整型格式说说明中明中,还还可指出其可指出其输输出出宽宽度度.main()main()long a=134579;long a=134579;printf(“a=%dn”,a);printf(“a=%dn”,a);结结果:果:a=3507a=3507 (2)(2)o o格式符,输出八进制数格式符,输出八进制数 特点:无特点:无论论是正是是正是负负,输输出的都是不出的都是不带带符号的数符号的数 (3)(3)x x格式符,输出十六进制数格式符,输出十六进制数 特点:无特点:无论论数据是正是数据是正是负负,输输出的都是不出的都是不带带符号的数符号的数 (4)(4)u
18、u格式符,输出无符号数据格式符,输出无符号数据 无符号类型的数据可用无符号类型的数据可用%d,%u,%o,%x d,%u,%o,%x 格式输出。格式输出。带符号的带符号的char char 和和 int int 整型数据可用整型数据可用%u u格式输出。格式输出。单单、双双精精度度实实型型数数据据用用%u u格格式式输输出出时时,则则得得到到错错误误的的结果。结果。如果实际值的范围超出格式的范围,输出结果不正确。如果实际值的范围超出格式的范围,输出结果不正确。(5)(5)C C格式符,输出一个字符格式符,输出一个字符 字符型数据:占一个字节,数据表示范围:字符型数据:占一个字节,数据表示范围:
19、0255 0255 例例 main()main()char c=a char c=a;int i=97 int i=97,j=355j=355,k=232k=232;printf(%c,%c,%c,%cn”,c,i,j,k)printf(%c,%c,%c,%cn”,c,i,j,k);printf(%d,%d,%d,%dn”,c,i,j,k)printf(%d,%d,%d,%dn”,c,i,j,k);输出结果:输出结果:a,a,c,a,a,c,97,97,355,232 97,97,355,232对对于整型数据,若用字符格式于整型数据,若用字符格式输输出,由于出,由于整型数据占两个字整型数据占两
20、个字节节,如果整型数据的,如果整型数据的值值在在02550255之之间时间时,则输则输出出对应对应的字符,若其的字符,若其值值在在2563276725632767之之间时间时,则则截取截取其低其低8 8位部分,然后位部分,然后输输出出对应对应的字符的字符.(6 6)S S格式符,用来输出一个字符串,有几种方法格式符,用来输出一个字符串,有几种方法%s s:按实际长度输出字符串。按实际长度输出字符串。%msms:m m为列宽为列宽 当串长当串长 m m时,按实际长度输出时,按实际长度输出 当串长当串长 m m时,按串实际长度输出,时,按串实际长度输出,当串长当串长 mnm时时,m m自自动动取取
21、n n值值,m m只能是整常量,而不能是只能是整常量,而不能是变变量或表达式。量或表达式。main()main()printf(“%3s,%7.2s,%.4s,%-5.3sn”,“CHINA”,printf(“%3s,%7.2s,%.4s,%-5.3sn”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);“CHINA”,“CHINA”,“CHINA”);运行结果:运行结果:CHINA,_ _ _ _ _CH,CHIN,CHI_ _ CHINA,_ _ _ _ _CH,CHIN,CHI_ _(7)(7)f f格式符格式符:输出单、双精度实数输出单、双精度实数%f:f:单单精精度
22、度浮浮点点输输出出,有有效效位位7 7位位,通通常常小小数数点点后后有有6 6位位数字。数字。%lf:lf:双精度双精度浮点浮点输输出,有效位出,有效位1616位,通常小数点后有位,通常小数点后有6 6位数字。位数字。例,输出双精度有效位例,输出双精度有效位main()main()float x1,y1;double x2,y2;float x1,y1;double x2,y2;x1=1111111111111.111111111;x1=1111111111111.111111111;y1=2222222222222.222222222;y1=2222222222222.222222222;x
23、2=1111111111111.111111111;x2=1111111111111.111111111;y2=2222222222222.222222222;y2=2222222222222.222222222;printf(“x1+y1=%fnx2+y2=%lfn”,x1+y1,x2+y2);printf(“x1+y1=%fnx2+y2=%lfn”,x1+y1,x2+y2);运行结果:运行结果:x1+y1=3333333319680.000000 x1+y1=3333333319680.000000 x2+y2=3333333333333.333010 x2+y2=333333333333
24、3.333010%m.nf%m.nf:输出数据共占输出数据共占m m列,其中小数占列,其中小数占n n位,当数据位,当数据长度长度 m m时,左补空格。时,左补空格。%-%-m.m.nfnf:输输出出数数据据占占m m列列,其其中中小小数数占占n n位位,当当数数据据长长度度 m m时时,右,右补补空格。空格。main()main()float f=123.456;float f=123.456;printf(“%f,_ _%10f_ _%10.2f_ _%.2f_ _ printf(“%f,_ _%10f_ _%10.2f_ _%.2f_ _%-10.2fn”,f,f,f,f,f);%-10
25、.2fn”,f,f,f,f,f);运行结果:运行结果:123.456001,_ _123.456001_ _ 123.456001,_ _123.456001_ _ _ _ _ _ _ _ _123.46_ _123.46_ _123.46123.46_ _123.46_ _123.46_ _ _ _ _ _ _ (8)(8)e e格式,以指数形式输出实数格式,以指数形式输出实数%e:e:小数点前有一位数字小数点前有一位数字,小数点后有小数点后有5 5位数字位数字规范化数规范化数 float:x.xxxxxexx float:x.xxxxxexx 形式:形式:double:x.xxxxxexx
26、x double:x.xxxxxexxx%m.nem.ne:m m为为输出数据输出数据的列数的列数,n n是小数的位数是小数的位数.mmm数据长度数据长度,数据靠右输出数据靠右输出,左端补空格左端补空格%-%-m.nem.ne:m m为输出数据的列数为输出数据的列数,n n是小数的位数是小数的位数.mmm数据长度数据长度,数据靠左输出数据靠左输出,右端补空格右端补空格 在在TcTc中的中的 n n:指在指在e e左边的数字个数左边的数字个数,不包括小数点不包括小数点.在不同的在不同的C C系统中输出结果可能不同系统中输出结果可能不同 书中例子指小数位数书中例子指小数位数(9)(9)g g格式符
27、,用来输出实数格式符,用来输出实数 根据数据的大小,自根据数据的大小,自动选动选取取e e,f f 格式中占位数格式中占位数较较少的少的一种格式一种格式输输出。出。(10)(10)print print 函数的使用说明:函数的使用说明:格式符用小写字母而不能用大写字母,如格式符用小写字母而不能用大写字母,如%d d而不是而不是%D D。格格式式控控制制的的字字符符串串中中可可包包含含转转义义字字符符,如如:n,t,n,t,b,r,377,x41 b,r,377,x41 由由%和格式字符和格式字符d,f,e,g,u,c,s,o,xd,f,e,g,u,c,s,o,x构成格式构成格式输出符号输出符号
28、 特殊字符:特殊字符:%和和 的的输输出,如下所示:出,如下所示:main()main()printf(“,%,“n”);printf(“,%,“n”);printf(“%f%n”,1.0/3);printf(“%f%n”,1.0/3);输出:输出:,%,“0.333333%0.333333%定定义义数据数据类类型与格式符型与格式符说说明要一致,否明要一致,否则则将将输输出出错误结错误结果。果。1 1、一般形式、一般形式 scanf(scanf(格式控制,地址表列格式控制,地址表列)(1)(1)格式控制:是字符串,内容有格式控制:是字符串,内容有:格格式式说说明明:由由%和和格格式式字字符符
29、d,d,f,f,e,e,c,c,s,s,o,o,x x中中之之一一组成。组成。普通字符:需原样输入的字符普通字符:需原样输入的字符 转义字符:转义字符:n,t n,t 用来实现换行和制表输入用来实现换行和制表输入 (2)(2)地址表列:地址表列:变变量量名名前前加加&,表表示示将将输输入入的的数数据据存存入入变变量量所所指指定定的的存存储储单元内,字符数组前不加单元内,字符数组前不加&5.2 scanf:格式输入函数 main()main()int a,b,c int a,b,c;scanf(“%d%d%d”,scanf(“%d%d%d”,&a,&b,&c&a,&b,&c);printf(“a
30、=%d,b=%d,c=%dn”,a,b,c)printf(“a=%d,b=%d,c=%dn”,a,b,c);输入方法:输入方法:3_4_5 3_4_5 3_ _4_ _ _ _5 3_ _4_ _ _ _5 3 3 4 4 5 5 3 3 TabTab 4 4 TabTab 5 5 输输出出:a=3,b=4,c=5 a=3,b=4,c=5 常常见问题见问题:scanf(“%d,%d,%d”,scanf(“%d,%d,%d”,&a,&b,&c&a,&b,&c);2 2、格式说明格式说明 以以%开开始始,以以一一个个格格式式符符(d,d,f,f,e(E),e(E),g(G),c,g(G),c,s,
31、s,o,o,x(X)x(X))结束,中间可插普通字符。结束,中间可插普通字符。附加格式说明符有:附加格式说明符有:%ld,ld,%lo,%lo,%lx%lx:用用于于输输入入长长整整型型数数据据(十十、八八、十十六六进进制制数)数)%lf,%le :lf,%le :用于输入双精度类型数据用于输入双精度类型数据%hd,%ho,%hx:hd,%ho,%hx:用于输入十、八、十六进制短整型数据用于输入十、八、十六进制短整型数据 域宽域宽n :n :指出输入数据所占的列数指出输入数据所占的列数n n。*:*:本本输输入入项读项读入后不入后不赋给赋给任何任何变变量。量。(1)(1)指出指出输输入数据所占
32、列数,系入数据所占列数,系统统自自动动按其截取数据。按其截取数据。main()main()int a,b;int a,b;scanf(“%3d%3d”,&a,&b);scanf(“%3d%3d”,&a,&b);printf(“a=%d,b=%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输入:输入:123456789123456789输输出:出:a=123,b=456 a=123,b=456(2)(2)字符型数据若指出字符型数据若指出n n位位宽宽度,度,则则只将第一个字符只将第一个字符赋给变赋给变量。量。main()main()char ch;char ch;scanf
33、(“%3c”,&ch);scanf(“%3c”,&ch);printf(“%cn”,ch);printf(“%cn”,ch);输入:输入:abcdabcd输输出:出:a a (3)%(3)%后加后加*,*,表示跳表示跳过过相相应应数据数据 例例 main()main()int a,b;int a,b;scanf(“%2d%*3d%2d”,&a,&b);scanf(“%2d%*3d%2d”,&a,&b);printf(“a=%d,b=%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输入:输入:12_345_67812_345_678输输出:出:a=12,b=67 a=12,
34、b=67(4)(4)格式格式说说明中不能明中不能规规定精度,定精度,编译虽编译虽不指出不指出错误错误,但,但结结果果不不对对。main()main()float a;float a;scanf(“%6.2f”,&a);scanf(“%6.2f”,&a);printf(“a=%fn”,a);printf(“a=%fn”,a);TCTC:输入:系统通过,不让输入数据输入:系统通过,不让输入数据 输输出:出:a=0.000000 a=0.000000 (5)(5)o,xo,x格式格式输输入入main()main()int a,b,c;int a,b,c;scanf(“%o%x%c”,&a,&b,&c
35、);scanf(“%o%x%c”,&a,&b,&c);printf(“%d,%d,%dn”,a,b,c);printf(“%d,%d,%dn”,a,b,c);输入:输入:12 12 12 12 1 12 2输输出:出:1010,1818,4949 3 3、使用使用sacnf sacnf 函数应注意的问题函数应注意的问题 (1)(1)、sacnf()sacnf()中的中的变变量必量必须须使用地址。使用地址。int a,b;int a,b;scanf(%d,%d,a,b);scanf(%d,%d,a,b);scanf(%d,%d,&a,&b);scanf(%d,%d,&a,&b);(2)(2)、s
36、canf()scanf()的的“格格式式控控制制中中”,可可以以使使用用其其它它字字符符,但但在输入时必须输入这些相同的字符。在输入时必须输入这些相同的字符。scanf(%dscanf(%d,%d,&a,&b);%d,&a,&b);输入:输入:3 3,4 4(逗号与(逗号与%d,%dd,%d中的逗号对应)中的逗号对应)scanf(%d%d,&a,&b);scanf(%d%d,&a,&b);输入:输入:34 34(两个或以上空格)(两个或以上空格)scanf(%d scanf(%d:%d%d:%d%d,&h,&m,&s);&h,&m,&s);输入:输入:12 12:2323:36 36(与格式控
37、制中的冒号对应)(与格式控制中的冒号对应)scanf(a=%d,b=%d,c=%d,&a,&b,&c);scanf(a=%d,b=%d,c=%d,&a,&b,&c);输输入入:a=12,b=24,c=36 a=12,b=24,c=36(a=,b=,c=a=,b=,c=及及逗逗号号与与格格式式控控制制相对应)相对应)在用在用%cc输输入入时时,空格和,空格和“转义转义字符字符”均作均作为为有效字符。有效字符。例、例、scanf(%c%c%c,&c1,&c2,&c3);scanf(%c%c%c,&c1,&c2,&c3);输入:输入:abcabc 结果:结果:ac1ac1,c2c2,bc3(bc3(
38、其余被丢弃其余被丢弃)(4)(4)、输输入数据入数据时时,遇以下情况,遇以下情况结结束一个数据束一个数据的的输输入:(不入:(不是是结结束束该该scanfscanf函数,函数,scanfscanf函数函数仅仅在每一个数据域均有在每一个数据域均有数据,并按回数据,并按回车车后后结结束)。束)。遇空格、遇空格、“回回车车”、“跳格跳格”键键。遇遇宽宽度度结结束。束。遇非法输入。遇非法输入。六、程序举例 例例 输输入三角形的三入三角形的三边长边长,计计算其面算其面积积。设设三三边长边长a a、b b、c c,面面积积areaarea的算法是:的算法是:求平方根函数求平方根函数sqrt()sqrt()
39、在在math.hmath.h中定中定义义。求平方根函数求平方根函数sqrt()sqrt()在在math.hmath.h中定义。中定义。运行情况如下:运行情况如下:3,4,6 a=3.00,b=4.00,c=6.00area=5.33#include math.hinclude math.hmain()main()float a,b,c,s,area;float a,b,c,s,area;scanf(%f,%f,%f,&a,&b,&c);scanf(%f,%f,%f,&a,&b,&c);s=1.0/2*(a+b+c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)
40、*(s-c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(a=7.2f,b=%7.2f,c=%7.2fn,a,b,c);printf(a=7.2f,b=%7.2f,c=%7.2fn,a,b,c);printf(area=%7.2fn,area);printf(area=%7.2fn,area);#include#includemain()floata,b,c,disc,x1,x2,p,q;scanf(a=%f,b=%f,c=%f,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q
41、;printf(nnx1=%5.2fnx2=%5.2fn,x1,x2);例例 分分析析:华华氏氏温温度度(F)F)与与摄摄氏氏温温度度(c)c)之之间间的的关关系系由由公式:公式:c c5/9(F-32)5/9(F-32)确定确定.分析:分析:所需的变量:华氏温度所需的变量:华氏温度f f 数据类型:数据类型:float f;float f;摄氏温度摄氏温度c c 数据类型:数据类型:float c;float c;表达式:表达式:c=5/9*(f-32)c=5/9*(f-32)程序执行过程:程序执行过程:1 1、输入、输入f f 2 2、计算计算c c 3 3、输出输出c c由此不难直接写出
42、以下程序:由此不难直接写出以下程序:main()main()float f float f,c;c;Printf(”Fahrenheit temperature Printf(”Fahrenheit temperature:nf=)nf=)scanf(%f scanf(%f,f)f);c c(5.0/9.0)*(f(5.0/9.0)*(f一一32);32);printf(Celsius printf(Celsius trmperature:n trmperature:n c=%.2fn,c);c=%.2fn,c);运行结果;运行结果;Fanrenhett temperature:Fanrenh
43、ett temperature:f f98.598.5 Celsius temperature Celsius temperature:C C363694 94 例例 输出两个整型变量交换前后的值。输出两个整型变量交换前后的值。分析:分析:所需的变量:整型变量所需的变量:整型变量a int aa int a 整型变量整型变量b int bb int b 中间变量中间变量temp int temp temp int temp /用来两个值交换时作临时保存用用来两个值交换时作临时保存用 算法:算法:1 1、先把、先把a a的值保存到的值保存到:temp=atemp=a2 2、把把b b的值赋给的值
44、赋给a :a=b;a :a=b;3 3、把把temptemp中保存的中保存的a a值给值给b:b=temp;b:b=temp;main()main()int a,b;int a,b;scanf(%d,%d,&a,&b);scanf(%d,%d,&a,&b);printf(origenal number:n a=%d,b=%dn,a,b)printf(origenal number:n a=%d,b=%dn,a,b);int temp;int temp;temp=a;temp=a;a=b;a=b;b=temp;b=temp;printf(swapped numbers:n a=%d printf(swapped numbers:n a=%d,b=%dn”,a,b);b=%dn”,a,b);/*printf(temp numbers:n temp=%dn,temp)/*printf(temp numbers:n temp=%dn,temp);*/*/运行结果:运行结果:3 35 5 origenal numbersorigenal numbers:a a3 3,b b5 5 swapped numbebers:swapped numbebers:a a5 5、b b3 3