《c语言课件第3章 顺序结构程序设计.ppt》由会员分享,可在线阅读,更多相关《c语言课件第3章 顺序结构程序设计.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.1 3.1 C C语言的基本语句语言的基本语句 3.3.2 2 数据输入与输出数据输入与输出3.3.3 3 顺序程序设计举例顺序程序设计举例第第3 3章章 顺序结构程序设计顺序结构程序设计13.1 C语言的基本语句简单语句简单语句空语句(;)空语句(;)复合语句(复合语句(一条或多条语句一条或多条语句)表达式表达式语语句(表达式句(表达式;);)函数调用语句(函数名(参数列表);)函数调用语句(函数名(参数列表);)流程控制语句流程控制语句结构化语句结构化语句条件条件语语句(句(if语语句,句,switch语语句)句)while语语句句do-while语句语句 for语句语句非结构化语句非
2、结构化语句 break语语句句continue语句语句 return语句语句 非限定转向语句非限定转向语句(goto)C C语言数据操作语句语言数据操作语句语言数据操作语句语言数据操作语句循环语句循环语句 2C C语言的语句概述:语言的语句概述:程序对数据的处理是通过程序对数据的处理是通过“语句语句”的执的执行来实现的。行来实现的。一条语句完成一项操作(或功能)。一条语句完成一项操作(或功能)。一个为实现特定目的的程序应包含一个为实现特定目的的程序应包含若干条语句。若干条语句。C C语句以语句以“;”作分隔符作分隔符,编译后产生编译后产生机器指令机器指令.3vC语句分类:4 4、空语句:、空语
3、句:;执行该语句不做任何操作执行该语句不做任何操作1 1、程序控制语句、程序控制语句(9(9种):种):if()else switchfor()while()dowhile()continuebreakgotoreturn分支循环辅助控制如如 total=total+limit;a=3;func();printf(“Hello,world!n”);3、表达式语句:表达式加分号构成。表达式语句:表达式加分号构成。2、函数调用语句:由一次函数调用加一个分号构成、函数调用语句:由一次函数调用加一个分号构成5 5、复合语句:用、复合语句:用 括起来的一组语句括起来的一组语句l一般形式:一般形式:数据说
4、明部分;数据说明部分;执行语句部分;执行语句部分;l说明:说明:u“”后不加分号后不加分号u语法上和单一语句相同语法上和单一语句相同u复合语句可嵌套复合语句可嵌套9种控制语句:if()elsefor()while()dowhile()continuebreakswitchgotoreturn功能:功能:功能:功能:计算表达式的值或改变变量的值。计算表达式的值或改变变量的值。计算表达式的值或改变变量的值。计算表达式的值或改变变量的值。分类:分类:分类:分类:运算符表达式语句运算符表达式语句运算符表达式语句运算符表达式语句赋值语句赋值语句赋值语句赋值语句例:例:5 5;i+;i+;语句的功能是语句
5、的功能是,变量变量i i的值增的值增1 1。a=3,b=a+2,c=a+1;a=3,b=a+2,c=a+1;/*/*由三个赋值语句组成的逗号表达式语句。由三个赋值语句组成的逗号表达式语句。*/*/a+b;a+b;/*/*算术表达式语句,计算算术表达式语句,计算a a与与b b之和。之和。*/*/赋值语句赋值语句v 由赋值表达式加上一个分号构成由赋值表达式加上一个分号构成 如如:a=15;b=a+5;c=d=e=a;:a=15;b=a+5;c=d=e=a;说明说明:赋值号左面必须为变量赋值号左面必须为变量 赋值号右面可以是任何合法的表达式赋值号右面可以是任何合法的表达式v 赋值号赋值号=为运算符
6、为运算符v 注意注意:不加分号为赋值表达式不加分号为赋值表达式Y=sin(1.12);Y1=sin(x);Y2=3*sin(x+1.12)+sqrt(x);Y3=sin(sqrt(x+1.12);#include#include#include#includemain()main()intint a=2,b=4;a=2,b=4;float x,y;float x,y;x=a/2+x=a/2+sqrtsqrt(b);/*x=3.0*/(b);/*x=3.0*/a+;/*a=3 */a+;/*a=3 */y=x*a;/*y=9.0*/y=x*a;/*y=9.0*/printf(“xprintf(“
7、x=%6.2f,y=%6.2f”,x,y);=%6.2f,y=%6.2f”,x,y);v注意表达式类型转换注意表达式类型转换v注意赋值类型注意赋值类型v输出结果输出结果:x=3.00,y=9.00格式:格式:函数名函数名(参数列表参数列表););分类:分类:标准库函数标准库函数用户定义函数用户定义函数标准库函数调用原则标准库函数调用原则:(1)(1)要在程序中包含相应的头文件要在程序中包含相应的头文件(2)(2)调用的一般形式:函数名调用的一般形式:函数名(参数列表参数列表););4例例3-13-1:#include#include stdio.hstdio.hmain()main()inti
8、nt x=1 x=1,y=2y=2;intint x=2 x=2;intint x=3 x=3;printf(xprintf(x=%d=%d,y=%y=%dndn,x x,y)y);printf(xprintf(x=%d=%d,y=%y=%dndn,x x,y)y);printf(xprintf(x=%d=%d,y=%y=%dndn,x x,y)y);程序运行结果为:程序运行结果为:x=3x=3,y=2y=2x=2x=2,y=2y=2x=1x=1,y=2y=253.2 数据的输入与输出C C语言本身不提供输入语言本身不提供输入/输出语句。输出语句。C C语言的输入语言的输入/输出功能由输出功能
9、由C C语言的标准语言的标准I/OI/O库库函数提供。函数提供。#include C C语言的输入语言的输入/输出库函数名称不是保留字输出库函数名称不是保留字(或称关键字)。如(或称关键字)。如printfprintf,scanfscanf。6#include main()int c;char a;c=65;a=B;putchar(c);putchar(n);putchar(a);运行结果:A B例例3.2.1 字符的输入与输出字符输出函数格式格式:putcharputchar(c)(c)参数参数:c:c为字符常量、字符型变量、整型变量、常量或表达式为字符常量、字符型变量、整型变量、常量或表达
10、式功能:把字符功能:把字符c c输出到显示器上输出到显示器上返值:正常,返值:正常,返回输出字符的返回输出字符的ASCIIASCII码值码值7例例3-3-2 2:#include include 程序运行结果为程序运行结果为:ABBCABBCmain()main()intint a=65;a=65;char b=B;char b=B;putchar(aputchar(a););putchar(65+1);putchar(65+1);putchar(bputchar(b););putchar(B+1);putchar(B+1);包含函数包含函数putcharputchar的头文件的头文件8格式格
11、式:getchargetchar()()功能:从键盘读一字符功能:从键盘读一字符返值:正常,返回读取返值:正常,返回读取字符字符的的A ASCIISCII码码值值字符输入函数 例例#include#include main()main()intint chch;chch=getchargetchar();();putchar(chputchar(ch););运行时,输入如下:运行时,输入如下:A A 运行结果:运行结果:A A9注意:注意:调用函数调用函数getchargetchar时,程序执行被中断,等待时,程序执行被中断,等待用户从键盘输入数据。当用户键入字符并敲回用户从键盘输入数据。当用
12、户键入字符并敲回车键以后,程序继续运行。若用户输入字符后车键以后,程序继续运行。若用户输入字符后未按回车键,则键入的内容一直保留在键盘缓未按回车键,则键入的内容一直保留在键盘缓冲区中,只有用户键入回车键后,字符输入函冲区中,只有用户键入回车键后,字符输入函数数getchargetchar才进行处理。才进行处理。函函数数getchargetchar将将回回车车键键作作为为一一个个字字符符读读入入。如如果果程程序序中中有有两两个个以以上上函函数数getchargetchar时时,应应该一次性输入所需字符,最后再按回车键。该一次性输入所需字符,最后再按回车键。无论输入的是英文字母或标点符号还是数字,
13、无论输入的是英文字母或标点符号还是数字,都是作为字符输入都是作为字符输入 。103.2.2 格式输出函数格式:格式:printfprintf(“格式控制格式控制字符串字符串”,输出,输出项列项列表表)功能:按指定格式向显示器输出数据功能:按指定格式向显示器输出数据返值:正常,返回输出字节数返值:正常,返回输出字节数输出表:要输出的数据(可以没有,多个时以输出表:要输出的数据(可以没有,多个时以“,”“,”分隔)分隔)格式控制串:包含两种信息格式控制串:包含两种信息格式说明:格式说明:%修饰符修饰符 格式字符格式字符,用于指定输出格式,用于指定输出格式普通字符或转义字符:原样输出普通字符或转义字
14、符:原样输出11例例3-3-3 3#include#include stdio.hstdio.h void main()void main()intint a=97,b=98;a=97,b=98;printf(1:%d%printf(1:%d%dn,a,bdn,a,b);/*);/*普通字符,原样输出普通字符,原样输出*/*/printf(2:%d,%dn,a,b);/*a,b printf(2:%d,%dn,a,b);/*a,b以十进制整数形式输出以十进制整数形式输出*/*/printf(3:%c,%cn,a,b);/*a,b printf(3:%c,%cn,a,b);/*a,b以字符形式输
15、出以字符形式输出*/*/printf(4:a=%d,b=%d,a,b);printf(4:a=%d,b=%d,a,b);程序运行结果为:程序运行结果为:1:97 981:97 982:2:9797,98983:3:a,ba,b4:a=97,b=984:a=97,b=98int i=97;char ch=a;printf(“i=%d,%cn”,i,i);两个输出项都是变量两个输出项都是变量i,i,但以不同的格式输出但以不同的格式输出,一个是输出的整型数一个是输出的整型数,一个输出的是字符一个输出的是字符a.a.其格式其格式是由是由,%d,%d与与%c%c控制的控制的.i=97,a 输出结果输出结
16、果12格式说明字符:格式说明字符:%修饰符修饰符 格式字符格式字符.n对实数,指定小数点后位数(四舍五入)对字符串,指定实际输出位数修饰符功 能m输出数据域宽,数据长度m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-输出符号(正号或负号)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0 x#表示按短整型量输出按长整型量输出,可在d,o,x,u前hl13d,ix,Xoucse,Efg%格式字符:十六进制无符号整数不带符号十进制整数十进制整数 标准指数形式实数单一字符字符串八进制无符号整数小数形式实数e和f中较短一种百分号本身int a=567;pr
17、intf(“%d”,a);int a=255;printf(“%x”,a);int a=65;printf(“%o”,a);int a=567;printf(“%u”,a);char a=65;printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);printf(“%”);567ff101567AABC5.67789e+02567.789000567.789%说明说明格式字符要用小写格式字符要用小写
18、格式字符与输出项个数应相同,按先后顺序一一对应格式字符与输出项个数应相同,按先后顺序一一对应输出转换输出转换:格式字符与输出项类型不一致格式字符与输出项类型不一致,自动按指定格自动按指定格式输出式输出例 main()unsigned int u=65535;printf(”u=%dn,u);输出结果:u=-1例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输出结果:3 4 a=3,b=411 11 11 11
19、 11 11 11 116553514例如例如:printfprintf(%dn(%dn,100)100);printfprintf(%5dn,100%5dn,100););printf(%8dn%8d,100,100*100);printf(%8dn%8d,100,100*100);1 0 01 0 0 0 01 0 01 0 0 0 015例如例如:printf(%on,-1);1 7 77 7 7printf(%x,%Xn,-1,-1);1 7 7 7 7 7f f f f,FF F Fprintf(%u,%d,-1,-1);1 7 7 7 7 7f f f f,FF F F6 5 5
20、3 5,-116printf(%4c,%cn,A,A);printf(%-8s,%8.2s,Name,Name);A,A例如例如:A,AN a me-,-N a17printf(%fn%10.3fn,100.7654321,100.7654321);printf(%en%10.9e,100.7654321,100.7654321);m.n 例如例如:1 0 0.7 6 5 4 3 2 1 0 0.7 6 51 0 0.7 6 5 4 3 21 0 0.7 6 51.0 0 7 6 5 e+0 21.0 0 7 6 5 4 3 2 e+0 218例例:实型数据实型数据#include#inclu
21、de main()main()float float x,y,z;doublex,y,z;double a,b;a,b;x=111111.111;y=222222.222;z=123.456;x=111111.111;y=222222.222;z=123.456;a=1111111111111.111111111;a=1111111111111.111111111;b=2222222222222.222222222;b=2222222222222.222222222;printf(printf(“%fn%fn%fn%fn”,x+y,a+b,x+y,a+b););printf(printf(“%
22、10f,%10.2fn%10f,%10.2fn”,z,z);,z,z);printf(printf(“%en%en”,z,z););printf(printf(“%gn%gn”,z,z););输出为:输出为:333333.328125 333333.328125 3333333333333.3330103333333333333.333010123.456001,123.46123.456001,123.461.23456e+021.23456e+02123.456123.45619例例 int a=1234;float f=123.456;printf(“%08dn”,a);printf(“
23、%010.2fn”,f);printf(“%0+8dn”,a);printf(“0+10.2fn”,f);例例 0、+例例 int a=123;printf(“%o,%#o,%X,%#Xn”,a,a,a,a);例例#例例 long a=65536;printf(“%8ldn”,a);例例 l/00001234/0000123.46/000+1234/000+123.56/173,0173,7B,0X7B/6553620#include stdio.hvoid main()int a=3,b=4;printf(%dn,(a=b,b,a+3);/*输输出序列是一个逗号表达式出序列是一个逗号表达式*
24、/printf(%dn,a=b,b,a+3);/*输输出第一个参数出第一个参数变变量量a的的值值*/例:例:输出结果为:输出结果为:7 4213.3.2.3 2.3 格式输入函数格式输入函数格式格式:scanfscanf(“(“格式控制串格式控制串”,地址表),地址表)功能:按指定格式从键盘读入数据,存入地址表指定的功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中存储单元中,并按回车键结束并按回车键结束返值:正常,返回输入数据个数返值:正常,返回输入数据个数地址表:变量的地址,常用取地址运算符地址表:变量的地址,常用取地址运算符&格式字符格式字符:d,i,o,x,u,c,s,f,e
25、:d,i,o,x,u,c,s,f,e例例 scanf(“%d”,&ascanf(“%d”,&a););输入:输入:10 10 则则 a=10a=10例例 scanf(“%x”,&ascanf(“%x”,&a););输入:输入:11 11 则则 a=17a=1722格式控制字符:格式控制字符:(1 1)组成:)组成:普通字符、格式说明。普通字符、格式说明。普通字符、格式说明。普通字符、格式说明。普通字符普通字符普通字符普通字符:格式说明格式说明格式说明格式说明:键盘输入时,要按原样输入,一般起分隔或键盘输入时,要按原样输入,一般起分隔或键盘输入时,要按原样输入,一般起分隔或键盘输入时,要按原样输
26、入,一般起分隔或提示作用。提示作用。提示作用。提示作用。但分隔或提示作用若由用户输入,就失去了但分隔或提示作用若由用户输入,就失去了但分隔或提示作用若由用户输入,就失去了但分隔或提示作用若由用户输入,就失去了本来的意义,一般采用本来的意义,一般采用本来的意义,一般采用本来的意义,一般采用printfprintfprintfprintf来实现。来实现。来实现。来实现。%*%*%*%*m h|l typem h|l typem h|l typem h|l type23附加格式说明符(修饰符)附加格式说明符(修饰符)l修饰符功 能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指
27、定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据所占宽度(列数),为正整数表示本输入项读入后不赋给相应的变量例例 scanf(“%4d%2d%2d”,&yy,&mm,&dd);输入输入 19991015 则则1999yy,10 mm,15 dd例 scanf(“%3d%*4d%f”,&k,&f);输入 12345678765.43 则123k,8765.43f例 scanf(“%2d%*3d%2d”,&a,&b);输入 1234567 则12a,67b例例 scanf(“%3c%2c”,&c1,&c2);输入输入 abcde 则则ac1,d c224scanf(“i
28、=%d,&i);printf(“i=%d,i);scanf(%d%d%d,&a,&b,&c);i=3 0 输入入i=3 0输出&:取地址运算符。:取地址运算符。表示将所输入后的表示将所输入后的数据放入对应地址数据放入对应地址的存储单元中。的存储单元中。i=3 0 输入入i=3 0输出123 或1 2 3 1,2,3 错错25scanf(“%d,%d,%d”,&a,&b,&c);1,2,3 123 错scanf(“%d,%*d,%d”,&a,&b);1,2,3 123 错1,2,3 a=1b=31,2,3 123 错1,2,3 a=1b=31.01.01.0 1.0 1.0 1.0错错a=1.0
29、b=1.0scanf(“%f%f%*f”,&a,&b);26输入分隔符的指定输入分隔符的指定默认数据默认数据分隔符分隔符:空格、:空格、TABTAB或回车键或回车键普通字符普通字符:格式串中两个格式符间字符:格式串中两个格式符间字符,必须原样输入,必须原样输入例例 scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%dn”,a,b,c);输入输入 123 123 123 输出输出 a=123,b=83,c=291例例 scanf(“%d:%d:%d”,&h,&m,&s);输入输入 12:30:45 则12 h,30 m,45 s例 scanf(“%d,%
30、d”,&a,&b)输入 3,4 则3a,4 b例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);输入 a=12,b=24,c=36 27说明:说明:用用“%“%c”c”格式符时,空格和转义字符作为格式符时,空格和转义字符作为有效字符输入有效字符输入如如 scanf(“%c%c%c”,&c1,&c2,&c3);scanf(“%c%c%c”,&c1,&c2,&c3);若输入若输入a a b b c c 则则a ac1,c1,c2,b c2,b c3c3输入数据时,遇以下情况认为该数据结束:输入数据时,遇以下情况认为该数据结束:遇空格、遇空格、TABTAB、或回车或回车遇宽度结束
31、遇宽度结束遇非法输入遇非法输入如如 scanf(“%d%c%f”,&a,&b,&cscanf(“%d%c%f”,&a,&b,&c););若输入若输入12341234a123o.26 a123o.26 则则 1234 1234 a,a a,a b,123 b,123 c c28例例3-6:#include stdio.hvoid main()int a,b;printf(input a,b:);scanf(%d%d,&a,&b);printf(a=%d,b=%d,a,b);input a,b:7 8a=7,b=829(4 4)注意事项)注意事项:scanfscanf()()的格式控制字符串中没有
32、转义字的格式控制字符串中没有转义字符。如符。如scanfscanf(“%d(“%dnn”,&a)&a);是是错误错误的。的。scanfscanf()()的格式控制字符串中的普通字符的格式控制字符串中的普通字符不是用来显示的不是用来显示的,而是输入时要求照普通而是输入时要求照普通字符输入的。字符输入的。scanfscanf()()中参数的第二部分一定是地址列中参数的第二部分一定是地址列表,不能是表达式。表,不能是表达式。303.3.3 3 顺序程序设计举例顺序程序设计举例例例3.13.1输入圆的半径,输出圆的周长和面积。输入圆的半径,输出圆的周长和面积。分析:分析:(1(1)定义实型变量定义实型
33、变量r r,l l,s s用于存放半径、周长、面用于存放半径、周长、面 积;积;(2(2)调用输入函数,输入调用输入函数,输入r r;(3(3)分别利用周长公式和面积公式求出分别利用周长公式和面积公式求出l l,s s;(4(4)调用输出函数输出调用输出函数输出l l,s s。程序:程序:#include#include void main()void main()float float r,l,sr,l,s;scanf(scanf(“%f%f”,&r,&r););l=2*3.14159*r;l=2*3.14159*r;s=3.14159*r*r;s=3.14159*r*r;printf(pr
34、intf(“l l=%8.4fn=%8.4fn”,l);,l);printf(printf(“s s=%8.4fn=%8.4fn”,s);,s);#include#include void main()void main()float r;float r;scanf(scanf(“%f%f”,&r,&r););printf(printf(“l l=%8.4fn=%8.4fn”,2*3.14159*r);,2*3.14159*r);printf(printf(“s s=%8.4fn=%8.4fn”,3.14159*r*r);,3.14159*r*r);31例例3.23.2输入三个字符,将它们反向
35、输出。输入三个字符,将它们反向输出。分析:分析:(1)(1)定义三个字符变量定义三个字符变量ch1ch1,ch2ch2,ch3ch3;(2)(2)调用字符输入函数,输入三个字符依次存于调用字符输入函数,输入三个字符依次存于ch1ch1 ,ch2ch2,ch3ch3;(3)(3)按按ch3ch3,ch2ch2,ch1ch1顺序输出三个字符。顺序输出三个字符。程序:程序:#include#include void main()void main()char ch1,ch2,ch3;char ch1,ch2,ch3;ch1=ch1=getchargetchar();();ch2=ch2=getcha
36、rgetchar();();ch3=ch3=getchargetchar();();putchar(ch3);putchar(ch2);putchar(ch1);putchar(ch3);putchar(ch2);putchar(ch1);32例例3.3.用格式输入函数输入三个字符,并用输出函数用格式输入函数输入三个字符,并用输出函数反向输出三个字符和它们的反向输出三个字符和它们的ASCIIASCII码。码。程序:程序:#include#include void main()void main()char ch1,ch2,ch3;char ch1,ch2,ch3;scanf(scanf(“%c
37、%c%c%c%c%c”,&ch1,&ch2,&ch3);,&ch1,&ch2,&ch3);printf(printf(“%c,%dn%c,%dn”,ch3,ch3);,ch3,ch3);printf(printf(“%c,%dn%c,%dn”,ch2,ch2);,ch2,ch2);printf(printf(“%c,%dn%c,%dn”,ch1,ch1);,ch1,ch1);33例例3.43.4输入任意三个整数,求它们的平均值。输入任意三个整数,求它们的平均值。程序:程序:#include#include void main()void main()intint num1,num2,num3;
38、num1,num2,num3;float average;float average;printf(printf(“PleasePlease input three numbers:input three numbers:”););scanf(scanf(“%d,%d,%d%d,%d,%d”,&num1,&num2,&num3);,&num1,&num2,&num3);average=(num1+num2+num3)/3.0;average=(num1+num2+num3)/3.0;printf(printf(“averageaverage=%7.2fn=%7.2fn”,average);,a
39、verage);思考:思考:能否将能否将average=(num1+num2+num3)/3.0average=(num1+num2+num3)/3.0改为改为 average=(num1+num2+num3)/3 average=(num1+num2+num3)/3?注意数学表达式注意数学表达式到到C C语言表达式语言表达式的转换的转换 34例例3-3-5 5:输入两个整数:输入两个整数a a、b b,将它们交换,例如将它们交换,例如a a为为3 3,b b为为5 5,交换后,交换后a a为为5 5,b b为为3 3。#include#include stdio.hstdio.h void
40、main()void main()intint a,b,t;/*t a,b,t;/*t就相当于空杯子就相当于空杯子*/*/scanf(“%d,%d”,&a,&bscanf(“%d,%d”,&a,&b););printf(“aprintf(“a=%d,b=%=%d,b=%dn”,a,bdn”,a,b););/*/*观察原来的值观察原来的值*/*/t=t=a;aa;a=b;bb;b=t;=t;printf(aprintf(a=%d,b=%dn,a,b);=%d,b=%dn,a,b);/*/*观察交换后的值观察交换后的值*/*/用于交换变量用于交换变量a a、b b的方法通的方法通常称为两两交常称为
41、两两交换法。换法。35例例3.63.6求方程求方程ax2+bx+c=0ax2+bx+c=0的实数根。的实数根。程序:程序:#include#include#include#include void main()void main()float a,b,c,disc,x1,x2;float a,b,c,disc,x1,x2;printf(printf(“inputinput a,b,ca,b,c:”););scanf(scanf(“%f,%f,%f%f,%f,%f”,&a,&b,&c,&a,&b,&c););disc=b*b-4*a*c;disc=b*b-4*a*c;x1=(-b+sqrt(di
42、sc)/(2*a);x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(printf(“x1=%6.2fnx2=%6.2fnx1=%6.2fnx2=%6.2fn”,x1,x2);,x1,x2);36例例3.73.7从键盘输入一个小写字母,用大写形式输出该字从键盘输入一个小写字母,用大写形式输出该字母。母。程序:程序:#include#include void main()void main()char a;char a;printf(printf(“inputinput a lowerca
43、se letter:a lowercase letter:”););a=a=getchargetchar();();a=a-32;a=a-32;printf(printf(“%cn%cn”,a,a););37计算机中数的表示及进制转换数码、基与权数码:表示数的符号基:数码的个数权:每一位所具有的值数制预备知识38数制基权表示数码特点10,10,10,十进制数0910逢十进一二进制数0122,2,2,逢二进一八进制数0788,8,8,逢八进一十六进制数09,AF,af1616,16,16,逢十六进一十进制:4956=410+910+510+610二进制:1011=12+02+12+12十六进制:
44、81AE=816+116+1016+1416八进制:4275=48+28+78+5839各种进制之间的转换各种进制之间的转换n二进制、八进制、十六进制转换成十进制二进制、八进制、十六进制转换成十进制 方法:按权相加方法:按权相加40n 二进制、八进制、十六进制转换成十进制n 十进制转换成二进制、八进制、十六进制方法:连续除以基,从低到高记录余数,直至商为0例 把十进制数459转换成十六进制数4591628161160(459)10=(1CB)161 C B 余11余12余 1各种进制之间的转换各种进制之间的转换(整数整数)方法:按权相加41l 二进制转换成八进制:从右向左,每3位一组(不足3位
45、左补0),转换成八进制l 八进制转换成二进制:用3位二进制数代替每一位八进制数例 (1101001)2=(001,101,001)2=(151)8例(246)8=(010,100,110)2=(10100110)2000 0001 1010 2011 3100 4101 5110 6111 7n 二进制与八进制之间的转换二进制与八进制之间的转换42l 二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制l 十六进制转换成二进制:用4位二进制数代替每一位十六进制数例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16例(4B
46、9E)16=(0100,1011,1001,1110)2=(100101110011110)20000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 Fn二进制与十六进制之间的转换二进制与十六进制之间的转换43原码:最高位为符号位,其余各位为数值本身的绝对值原码:最高位为符号位,其余各位为数值本身的绝对值反码:反码:正数:反码与原码相同正数:反码与原码相同负数:符号位为负数:符号位为1,其余位对原码取反,其余位对原码取反补码:补码:正数:原码、反码、补码相同正数
47、:原码、反码、补码相同负数:最高位为负数:最高位为1,其余位为原码取反,再对整个数加,其余位为原码取反,再对整个数加13126912457810119-5=49+7=16=(14)12数值的表示方法数值的表示方法原码、反码和补码原码、反码和补码44原码反码补码+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000数的范围0111111111111111(-127+127)0111111110000000(-127+127)0111111110000000(-128+127)负数补码转换成十进制数:最高位不动,其余位取反加1例 补码:11111001 取反:10000110 加1:10000111=-7(用一字节表示数)(用一字节表示数)45小小 结结1 1、表达式与语句的区别、表达式与语句的区别2 2、格式化输入、格式化输入/输出语句的使用输出语句的使用3 3、简单顺序程序的编写、简单顺序程序的编写作业:习题三作业:习题三1,2,3,4,5,7,81,2,3,4,5,7,846
限制150内