《第九讲顺序程序设计(二).ppt》由会员分享,可在线阅读,更多相关《第九讲顺序程序设计(二).ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第九讲 顺序程序设计(二)1、格式输入输出函数2、程序举例4.5 格式输入输出函数格式输入输出函数printf();scanf();格式字符说 明d,i用来输入有符号的十进制整数u用来输入无符号的十进制整数o用来输入无符号的八进制整数x,X用来输入无符号的十六进制整数c用来输入单个字符s用来输入字符串f用来输入实数(小数或指数)e,E,g,G与f作用相同,e与f,g可以互相替换4.5.1 printf 函数(格式输出函数)函数(格式输出函数)功能:向终端输出若干个任意类型的数据。功能:向终端输出若干个任意类型的数据。(一一)printf函数的一般格式函数的一般格式printf(格式控制,输出表
2、列)格式控制,输出表列)举例:举例:main()int a=3,b=4;printf(“a=%d b=%dn”,a,b);输出结果输出结果:a=3 b=4格式说明格式说明(格式字符格式字符)普通字符普通字符输出表列输出表列转义字符转义字符main()char c1=a,c2=b,c3=c,c4=101,c5=116;printf(“a%c b%ctc%ctabcn”,c1,c2,c3);printf(“tb%c%c”,c4,c5);aabbccabcA Nprintf(格式控制,输出表列)1.1.格式说明格式说明,由由“%”%”和格式字符组成和格式字符组成,如如%d,%f%d,%f等。等。说明
3、:说明:“输出表列输出表列”是需要输出的一些数据是需要输出的一些数据(变量、表变量、表 达式达式)。“格式控制格式控制”是用双引号括起来的字符是用双引号括起来的字符 也称也称“转换控制字符串转换控制字符串”,它包括三种信息:,它包括三种信息:3.3.转义字符转义字符,将将 后面的字符转换成另外的意义后面的字符转换成另外的意义P48P48表表2.2.普通字符普通字符,即需要原样输出的字符。即需要原样输出的字符。(二二)格式字符格式字符 对不同类型的数据用不同的格式字符。对不同类型的数据用不同的格式字符。1.d格式符格式符 用来输出十进制整数。用来输出十进制整数。(1)%d:按整型数据的实际长度输
4、出。按整型数据的实际长度输出。如:如:int a=123;printf(“%d”,a);结果:结果:123(二二)格式函数格式函数 对不同类型的数据用不同的格式字符。对不同类型的数据用不同的格式字符。1.d格式符格式符 用来输出十进制整数。用来输出十进制整数。(2)%md:m为指定的输出字段的宽度。若数据为指定的输出字段的宽度。若数据 位数小于位数小于m,则则左端左端补以空格补以空格;若大于若大于 m,则按实际位数输出。则按实际位数输出。如:如:int a=123,b=12345;printf(“%4d,%4d”,a,b);结果:结果:123,12345 (二二)格式函数格式函数 对不同类型的
5、数据用不同的格式字符。对不同类型的数据用不同的格式字符。1.d格式符格式符 用来输出十进制整数。用来输出十进制整数。(3)%ld:输出长整型数据。也可以对长整型数输出长整型数据。也可以对长整型数 据指定字段宽度。据指定字段宽度。如:如:long a=1234567;printf(“%ld,%8ld,%5ld”,a,a,a);结果:结果:1234567,1234567,1234567 2.o格式符格式符以以8进制数形式输出整数进制数形式输出整数.输出的数值不带符号输出的数值不带符号,即将符号也一起作为八即将符号也一起作为八进制数的一部分输出。进制数的一部分输出。如:如:int a=-1;prin
6、tf(“%d,%o”,a,a);结果:结果:-1,177777 o格式符同d格式符一样,可以输出长整型数据,也可以指定字段宽度。1 111 111 111 111 1113.x格式符格式符以以16进制数形式输出整数。进制数形式输出整数。同样不会出现负的十六进制数。同样不会出现负的十六进制数。4.u格式符格式符以十进制形式输出以十进制形式输出unsigned型数据型数据如:如:main()unsigned int a=65535;int b=-2;printf(“a=%d,%o,%x,%un”,a,a,a,a);printf(“b=%d,%o,%x,%un”,b,b,b,b);输出结果:输出结果
7、:a=-1,177777,ffff,65535 b=-2,177776,fffe,655345.C格式符格式符用来输出一个字符。用来输出一个字符。一个整数一个整数,只要它的值在只要它的值在0255范围内,也范围内,也可以用字符形式输出,在输出前可以用字符形式输出,在输出前,将该整数转将该整数转换成相应的换成相应的ASCII字符;反之,一个字符数据字符;反之,一个字符数据也可以用整数形式输出。也可以用整数形式输出。如:如:main()char c=a;int i=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);输出结果:输出结果:a,97 a,976.s
8、格式符格式符用来输出一个字符串。用来输出一个字符串。(1)%s:按原长度输出字符串。按原长度输出字符串。如:如:printf(“%s”,“CHINA”)输出结果:输出结果:CHINA(2)%ms:输出的字符串占输出的字符串占m列,如字符串本列,如字符串本 身长度大于身长度大于m,则突破则突破m的限制,将字符串的限制,将字符串 全部输出,若串长小于全部输出,若串长小于m,则则左补空格左补空格。(3)%ms:如果串长小于如果串长小于m,则在则在m列范围列范围内内 ,字符串向左靠,字符串向左靠,右补空格右补空格。(4)%m.ns:输出占输出占m列,但只取字符串中左端列,但只取字符串中左端 n个字符。
9、输出在列的右侧,个字符。输出在列的右侧,左补空格左补空格。如。如 果果nm,则自动取值,即保证个字符正常输出。则自动取值,即保证个字符正常输出。(5)%m.ns,其中其中m、n含义同上,含义同上,n个字符输个字符输出出 在在m列范围的左侧,列范围的左侧,右补空格右补空格。如:printf(“%3s,%7.2s,%.4s,%-5.3sn”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);输出结果:CHINA,CH,CHIN,CHI 7.f格式符格式符以小数形式输出实数。以小数形式输出实数。(1)%f:不指定字段宽度不指定字段宽度,由系统自动指定,由系统自动指定,使整数部分全部如
10、数输出,并输出使整数部分全部如数输出,并输出6位小数位小数。注意注意float型和型和double型数据的有效位数,型数据的有效位数,如:float x=123456.123;printf(“%f”,x);输出结果:123456.125000main()double x,y;x=1111111111111.111111111;y=1111111111111.111111111;printf(“%f”,x+y);2222222222222.222170(2)%m.nf:指定输出的数据共占指定输出的数据共占m列列,其中有其中有n 位小数。若数据长度小于位小数。若数据长度小于m,则左端补空格。则左端
11、补空格。(3)%m.nf:与与%m.nf 基本相同,只是使输出基本相同,只是使输出 的数值向左端靠,右端补空格。的数值向左端靠,右端补空格。如:float f=123.456;printf(“%10.2f,%-10.2f”,f,f);输出结果:123.46,123.468.e格式格式以指数形式输出实数。以指数形式输出实数。(1)%e如:printf(“%e”,123.456);输出结果:1.234560e+002 6位3位一般共占一般共占13列宽度列宽度(2)%m.ne和和%m.ne:m、n和和“”字符含义字符含义与与 前相同。此处前相同。此处n指数据的数字部分指数据的数字部分(又称尾数又称尾
12、数)的小数位数。的小数位数。9.g格式符格式符用来输出实数用来输出实数,它根据数值的大它根据数值的大 小小,自动选自动选f格式或格式或e格式格式(选择输出时占宽度较选择输出时占宽度较 小的一种小的一种),且不输出无意义的零。,且不输出无意义的零。如:f=123.468;printf(“%f,%e,%g”,f,f,f);输出如下输出如下:123.468000,1.234680e+002 ,123.46810列13列如:f=123.468;printf(“%f,%e,%g”,f,f,f);输出如下输出如下:123.468000,1.234680e+002 ,123.46810列二、二、scanf
13、函数(格式输入函数)函数(格式输入函数)(一一)scanf(格式控制,地址表列)格式控制,地址表列)1015main()int a,b,c;scanf(“%d,%d”,&a,&b);printf(“a=%d,b=%d”,a,b);输入:输入:10,15输出:输出:a=10,b=15ab如:如:int a,b,c;scanf(“%d%d%d”,&a,&b,&c);输入形式:输入形式:10 17 181 int a,b,c;scanf(“%d,%d,%dn”,&a,&b,&c);输入形式:输入形式:10,11,12 scanf(“%3d%3d%c”,&a,&b,&ch);输入形式:输入形式:123
14、456abc 结果:结果:a=123 b=456 ch=a scanf(“%d%d%c”,&a,&b,&ch);输入形式:输入形式:123 456abc 结果:结果:a=123 b=456 ch=amain()char c1,c2;scanf(“c1=%c,c2=%c”,&c1,&c2);printf(“%c%c”,c1,c2);输入数据:c1=a,c2=b 输出数据:abmain()int y,z;float x;char ch;scanf(“%7.2f%d%d%c”,x,y,z,ch);main()int x,y;scanf(“%5d,%3d”,&x,&y);输入数据:345,567 有错
15、吗?说明说明:1.%后的后的“*”附加说明符,用来表示跳过它相应的数据。附加说明符,用来表示跳过它相应的数据。如:如:scanf(“%2d,%*3d,%2d”,&a,&b);输入:输入:12,456,67 结果:结果:a=12 b=67 2.输入数据时不能规定精度。输入数据时不能规定精度。Scanf(“%7.2f”,&a);3、scanf(“a=%d,b=%d”,&a,&b);输入:输入:a=12,b=134、scanf(“%c%c%c”,&a,&b,&c);输入:输入:a b c 空格和转义字符都作为有效字符输入空格和转义字符都作为有效字符输入main()int a,b;float x,y;
16、char c1,c2;scanf(“a=%d b=%d”,&a,&b);scanf(“%f%e”,&x,&y);scanf(“%c%c”,&c1,&c2);printf(“%d,%d,%f,%f,%c,%c”,a,b,x,y,c1,c2);输入数据:a=10 b=20 10 10 a b输出数据:10,20,10.00000,10.00000,a,b输入方式2:a=10 b=20 10 20 a b main()int a,b;float x,y;char c1,c2;scanf(“a=%d b=%d”,&a,&b);scanf(“x=%f y=%e”,&x,&y);scanf(“c1=%c
17、c2=%c”,&c1,&c2);printf(“%d,%d,%f,%f,%c,%c”,a,b,x,y,c1,c2);输入数据:a=10 b=20 x=10 y=10c1=a c2=b输出数据:10,20,10.00000,20.00000,a,b4.6 顺序结构程序设计顺序结构程序设计 (顺序结构)(选择结构)(循环结构)二、顺序结构程序设计二、顺序结构程序设计特点特点:程序按语句从上到下的排列顺序依此执程序按语句从上到下的排列顺序依此执 行,每条语句必须执行且只能执行一次,行,每条语句必须执行且只能执行一次,没有执行不到或执行多次的语句。没有执行不到或执行多次的语句。例如:例如:已知圆柱体半
18、径已知圆柱体半径6 6米,高米,高7 7米,求体积。米,求体积。#define PI 3.14159main()float r,h,s,v;r=6;h=7;s=PI*r*r;v=s*h;printf(“V=%fn”,v);例例4.10 输入三角形的三条边,求三角形的面积。输入三角形的三条边,求三角形的面积。分析:已知三角形的三条边 a,b,c。求解三角形的面积area。计算公式设 s=(a+b+c)/2 area=开始开始给给a,b,ca,b,c赋值赋值计算计算s=(a+b+c)/2s=(a+b+c)/2计算计算area=area=结果输出结果输出结束结束#include main()floa
19、t a,b,c,s,area;scanf(“%f%f%f”,&a,&b,&c);s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“a=%f b=%f c=%f s=%f”,a,b,c,s);printf(“area=%f”,area);例例4.11 从键盘输入一个大写字母,要求改用小写从键盘输入一个大写字母,要求改用小写 字母输出。字母输出。分析:已知字符变量c1为大写字母。求解将字符变量c2中放入相应的小写字母。计算公式c2=c1+32 (小写改成大写字母?)开始开始计算计算c2=c1+32c2=c1+32输出输出c1结束结束输入一大写字
20、母输入一大写字母放入放入c1中中输出输出c2#include main()char c1,c2;c1=getchar();/*键盘输入一个大写字母*/printf(“%c,%dn”,c1,c1);c2=c1+32;printf(“%c,%dn”,c2,c2);输入输入:A 输出输出:A,65 a,97 例例4.12 求求ax2+bx+c=0的根,的根,a,b,c由键盘输入,由键盘输入,设设 b2-4ac0#include main()float a,b,c,disc,x1,x2,p,q;scanf(%f%f%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;printf(”x1=%f x2=%f,x1,x2);运行情况:a=1,b=3,c=2x1=-1.000000 x2=-2.000000