【文档说明】[计算机软件及应用]程序设计课件.ppt,共(72)页,134.020 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2091.html
以下为本文档部分文字说明:
三、顺序结构主要内容◼FORTRAN语言的顺序结构◼C语言的顺序结构FORTRAN语言的顺序结构◼赋值语句◼简单的输出语句◼简单的输入语句◼参数语句(PARAMETER语句)◼END语句、STOP语句、PAU
SE语句◼格式输出◼格式输入赋值语句◼1、作用--将一个确定的值赋给一个变量一般格式:V=e变量=表达式例:x=3.2Y=SQRT(x+5.0)/2.0说明:1、“=”为赋值号其作用为:x3.2特殊:I=I+1(计数器)2、左端只能是变量名,如:x+y=5是不合法的赋值语句◼
2、类型转换问题类型相同,直接赋值(I=3)类型不同,先计算表达式的值、后将结果类型转换为左端变量的类型◼例:I=3.6*5+1.5◼X=(5+6)/(8-5)为避免出现类型转换过程中的错误,应保证两侧类型一致。简单输出语句◼输出语句的作用:将
内存的数据传送到显示器、打印机或保存到磁盘指定区域。◼输入/输出三要素:对象:哪些数据格式设备◼输出语句的分类:格式输出表控格式输出(系统标准格式)无格式输出表控输出语句◼按计算机系统规定的格式输出◼系统自动为每种
类型的数据规定了列数◼一、表控输出格式◼⒈整数的表控格式输出(机器不同10、11、13)◼若规定:每个整数占11列,数印右端,左补空格例:print*,123,-1128输出结果:︺︺︺︺︺︺︺︺123︺︺︺︺︺︺-1128表控输出语句◼⒉实数的表控格式输出◼若规
定:每个实数占15列,数印右端,左补空格,小数部分占6列。◼例:print*,15.4,-321.45◼输出结果:◼︺︺︺︺︺︺15.400000︺︺︺︺-321.450000表控输出语句◼当实数值的
绝对值≥107或<1是时,按标准的指数形式输出。◼共占15列,指数4列,小数6列◼例:print*,-10000000.,0.98◼输出结果:◼︺︺-1.000000E+07︺︺︺9.800000E-01表控输出语句◼二、表控格式输出语句◼一般格式:◼pr
int﹡,〈输出表列〉◼write(﹡,﹡)〈输出表列〉◼F77子集不提供PRINT语句,作用相同◼例1:print﹡,56.8,125◼或write(﹡,﹡)56.8,125◼例2:print﹡,a,b,c◼或write(﹡,﹡)a,b,c表控输出语句◼例3:x=12.5◼y=90.5◼z
=x+y◼print*,x,y◼print*,'z=',z◼end◼运行结果:◼12.50000090.500000◼Z=103.000000简单输入语句◼输入语句的作用:将外部介质(键盘、磁盘)上的数据传送到内存变量指定的单元中。◼输入/输出三要素:对象:哪些数据格式
设备◼输入语句的分类:格式输入表控格式输入(系统标准格式)无格式输入表控输入语句◼自由格式输入◼语句:read﹡,〈输入表列〉◼read(﹡,﹡)〈输入表列〉◼注意:1、执行时,程序会停止,等待用户从键盘上输入数据。2、输入时,数据间以“,”或空格间隔。3
、变量名称为输入表。4、输入的数据应和输入表的变量个数、类型,次序严格地一一对应。◼例1:read(*,*)a,b,I,j输入:108.6,-37.8,5(回车)◼---少一个数,则j没有被赋值,程序停止等待输
入:108.6,-37.8,5,6,9(回车)◼---多一个数,则输入的9不起作用,程序正常执行◼例2:read(*,*)a,b,I,j,c,k,l,p输入:25.8,-8.2(回车)5,8,2.7(回车)2,6,6.9(回车)◼---数据太多,可以分几个记录输入记录:以回车结束的一批输入
/输出数据◼例3:read(*,*)A,B,C,D,E,F,G输入:7*3.5◼---相同的数据可以用重复系数输入◼例4:read(*,*)A,B,C◼read(*,*)D,I,J输入:2.3,-
63.5(回车)6.4,91.0(回车)5,8(回车)结果:A=2.3,B=-63.5,C=6.4,D=5.0,I=8J未被赋值◼---每个read语句从一个新的记录开始读数◼例5:read(
*,*)A,B,C◼read(*,*)D,I,J◼write(*,*)A,B,C,D◼write(*,*)I,J◼end输入:2.3,63.5,6.4(回车)91.0,5,6(回车)输出:-…--2.300000--…-63.50000
0-…-6.400000--.-91.000000--…--5--…--6◼---每个write语句也是从一个新的记录开始输出参数语句(parameter语句)◼作用:将程序中经常用到的常数定义成一个符号常量,其值不可改变。◼语
句:parameter(p1=c1[,p2=c2,…,pn=cn])◼其中:pn——符号常量;cn——常量◼例:parameter(r=6.2,PI=3.1415926)◼s=PI*r**2◼L=2*PI*r◼write(*,*)s,L◼end◼注意:
◼1、符号常量的命名规则与变量名相同,但它不同于变量,它的值不改变,在程序中不能对它赋值。例:PI=5.6或read(*,*)r◼2、符号变量也有类型,也可用三种方法说明类型◼3、参数语句是非执行语句,也位于
所有可执行语句的前面,但位于类型说明语句后面。◼4、一条语句可以定义多个符号常量。例如:parameter(PI=3.14159,r=25,I=9)◼5、优点:方便修改程序END,STOP,PAUSE语句◼END语句结束标志;有且仅有一条◼STOP语句
停止运行程序;用于调试程序◼PAUSE语句暂停执行;用于调试程序程序举例◼【例3】求三角形面积◼公式:S=√S(S-A)(S-B)(S-C),S=(A+B+C)/2源程序:read(*,*)A,B,CS=(A+B+C)/2area=SQRT(S*(S-A)*(S-B)*(S-C))
write(*,*)’A=‘,A,’B=‘,B,’C=‘,Cwrite(*,*)’theareais‘,areaend◼例:求五边形面积源程序:write(*,*)’InputA,B,C,D,E,F,G
’read(*,*)A,B,C,D,E,F,GS=(A+B+C)/2S1=SQRT(S*(S-A)*(S-B)*(S-C))S=(C+D+E)/2S2=SQRT(S*(S-C)*(S-D)*(S-E))S=(D+E+F)/2S3=SQRT(S*(S-D)*(S-E)
*(S-F))AREA=S1+S2+S3write(*,*)’area=‘,areaend◼例:编程将十进制数407转换成八进制数源程序:m=407i1=mod(m,8)i2=mod(m/8,8)i3=mod(
m/8/8,8)write(*,*)i3,i2,i1;按高位到低位顺序end格式的输出◼一、有格式的输出语句◼一般形式:◼①write(*,s1)<输出表列>◼s1format(格式说明)◼②prints1,<输出表列>◼s1format(格式说明)◼其中:“格式说明”是由各种
“格式编辑符”构成的。格式的输出◼二、格式说明符◼主要介绍:I、F、E、X、纵向走纸、’(撇号)、r(重复系数)、/(斜杠)◼⒈I编辑符◼作用:用于整型数据的输出。◼一般形式:◼①Iw◼②Iw.m◼其中:I—整型输出;w—字段宽度;◼m—输出数据的最少数字位数
。格式的输出◼例1:k=254◼M=12◼n=48◼write(*,100)k,m,n◼100Format(1x,i8,i6,i6.3)◼End◼输出结果:◼︺︺︺︺︺254︺︺︺︺12︺︺︺048格式的输出◼例2:i=
300◼j=1250◼print50,i,j◼50Format(1x,i6,i3)◼End◼输出结果:◼︺︺︺300***◼注:format语句可以出现在program和function语句之后、end语句之前的任何位置。格式的输出◼⒉F编辑符◼作用:用于实数的小数形式输出。◼一般形式:
◼Fw.d◼其中:F—实数的小数形式输出;◼w—字段宽度;◼d—输出数据的小数位数格式的输出◼例:x=12.5◼y=12.3457◼z=-12.8467◼print100,x,y,z◼100Format(1x,f8.2,f10.3,f10.1)◼End◼输出结果:◼︺︺︺12.50
︺︺︺︺12.346︺︺︺︺︺-12.8格式的输出◼⒊E编辑符◼作用:用于实数的指数形式输出。◼一般形式:◼Ew.d◼其中:E—实数的指数形式输出;◼w—字段宽度;◼d—数字部分的小数位数。格式的输出
◼例:a=246.0◼b=0.0000025◼write(*,100)a,b◼100Format(1x,e9.3,e9.3)◼End◼输出结果:◼.246e+03.250e-05◼9列9列格式的输出◼⒋X编辑符◼作用:用于输出空格。◼一般形式:◼nX◼其中:X—输出空格;◼n—输出空格数
。格式的输出◼例:a=246.0◼b=0.0000025◼write(*,100)a,b◼100Format(1x,e9.3,3x,e9.3)◼End◼输出结果:◼.246e+03︺︺︺.250e-05◼9列9列格式的输出◼⒌H编
辑符◼作用:用于输出字符常量。◼一般形式:◼nH◼其中:H—输出字符常量;◼n—输出字符个数。格式的输出◼例:x=12.5◼y=12.3457◼write(*,100)x,y◼100Format(1x,2hx=,f4.1,2x,
2hy=,f6.3)◼End◼输出结果:◼x=12.5︺︺y=12.346格式的输出◼⒍’(撇号编辑符)◼作用:用于输出字符常量,即把撇号内的字符串原样照打。◼例:i=140◼j=2000◼write(
*,100)i,j◼100format(1x,’i=’,i3,’︺︺j=’,i4)◼end◼输出结果:◼i=140︺︺j=2000格式的输出◼注:如果输出的字符中包含撇号,则用两个连续的撇号代表一个要输出的撇号。◼例:◼write(*,100)◼100format(1x,’He’’sastuden
t.’)◼end◼输出结果:◼He’sastudent.格式的输出◼⒎纵向走纸编辑符◼Fortran规定:将输出记录中的第一个字符作为纵向走纸控制符,这个字符不再被打印出来,而从输出记录的第二个字符开始输出。◼记录中第一个打印字符与纵向走纸的关系:空格为走纸一行;0为走纸二行;1为换
页;+不走纸;其它字符为按走纸一行处理格式的输出◼例1:integerx,y◼x=3250◼y=405◼write(*,100)x,y◼100Format(i4,3x,i3)◼End◼输出结果:◼250︺︺︺405(即把
3“吃”掉了)格式的输出◼FORTRAN规定:输出记录中的第一个字符作为纵向走纸控制符。◼如果不预先在输出记录的第一个字符处设一空格,则系统会将输出的第一个字符作为走纸控制符,使本来想打印的内容缺少一个字符。◼所以,
在format语句中一定要预设一个走纸控制符“1X”或‘︺’。格式的输出◼例2:integerx,y◼x=3250◼y=405◼write(*,100)x,y◼100Format(i6,3x,i3)◼End◼输出结果
:格式的输出◼⒏重复系数r◼在format语句中,如果出现几个(或几组)相同的格式编辑符,则可以利用重复系数而只写一个(或一组)编辑符。◼r——可重复使用的次数。◼例1:◼format(1x,i10,i10,f8.3,f7.2,f7.2
,f7.2)◼↓◼format(1x,2i10,f8.3,3f7.2)格式的输出◼例2:◼format(1x,i5,f8.2,f8.2,i5,f8.2,f8.2)◼↓◼format(1x,2(i5,f8.2,f8.2))◼⒐斜杠编辑符
“/”◼作用:将输出转入下一行记录。格式的输出◼例1:i=246◼j=35◼x=12.3◼y=173.5◼write(*,100)i,x,j,y◼100Format(1x,i5,f7.1/1x,i5,f7.1)◼End◼输出结果:
格式的输出◼例2:i=246◼j=35◼x=12.3◼y=173.5◼write(*,100)i,x,j,y◼100Format(1x,i5,f7.1//1x,i5,f7.1/)◼End◼输出结果:格式的输出◼其他格式说明符可实可指--Gw.d
双精度--Dw.d逻辑数据—LW字符型数据—Aw、A格式的输入◼一、有格式的输入语句◼一般形式:◼read(*,s1)<输入表列>◼s1format(格式说明)◼其中:“格式说明”是由各种“格式编辑符”构
成。格式的输入◼例1:◼read(*,100)i,j◼100Format(i4,i5)◼End◼键盘输入:◼︺345︺︺456↙格式的输入◼例2:◼read(*,100)a,b,c◼100Format(f5.1,e12.2,f7.2)◼End◼键盘输入:◼︺15.7︺2345.
67e+04︺705.83↙在print,write和read语句中包含格式说明◼在格式输入输出时,也可以将format语句中的格式说明放到print、write和read语句中。◼例1:print100,k,y◼100format(i8,f7.2)◼
↓◼print’(i8,f7.2)’,k,y◼注意写法:‘(…)’在print,write和read语句中包含格式说明◼例2:write(*,100)k,y◼100format(i8,f7.2)◼↓◼write(*,’(i8,f7
.2)’)k,y◼例3:read(*,100)k,y◼100format(i8,f7.2)◼↓◼read(*,’(i8,f7.2)’)k,yC语言的顺序结构⚫C语言概述⚫赋值语句⚫数据输入输出的概念及在C语言中的实现⚫字符数据的输入输出⚫格式输入与输出C语句概述[例]求园的面积#DEFINE
PI=3.1415926main(){floatr,s;r=20;s=r*r*PI;printf(“area=%f”,s);}area=1256.637C程序源程序文件1源程序文件I源程序文件n……预处理命令函数1函数n…说明部分执行部分(语句)语句是计算机执行的最小单位C语句可以
分为以下5类:1.控制语句,完成一定的控制功能.2.函数调用语句,由一次函数调用加一个分号构成一个语句.3.表达式语句.4.空语句,只有一个分号的语句,它什么也不做.5.用{}把一些语句包括起来成为复合语句,中最后一个语句中最后的分号不能忽略不写.*C语言允许
一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求。赋值语句⚫赋值表达式后面加上分号,构成赋值语句.⚫功能:将数据赋给变量。⚫如:x=3.1;a=‘d’+123+b/d;⚫程序中基本的命令行必须是一个语句,表达式不能单独构成语句.⚫例如:⚫‘d’+123+b/d是一个表达式
⚫a=‘d’+123+b/d;是一个赋值语句数据输入输出的概念及在C语言中的实现⚫C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。编写语言时,printf,scanf等不是关键字,只是函数的名字。C语言库有一批“标准输入输出函数”,其中有:putchar,getch
ar,printf,scanf,puts,gets⚫在使用C语言库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。⚫考虑到printf,scanf函数使用频繁,系统允许在使用这两个函数时可不
加#include命令。字符数据的输入输出⚫putchar()–向终端输出一个字符。例如:putchar(c);[例4.1]#include“stdio.h”main(){chara,b,c;a=‘B’;b=‘O’;c=
‘Y’;putchar(a);putchar(b);putchar(c);}BOYBOY⚫putchar(a);putchar(‘\n’);⚫putchar(b);putchar(‘\n’);⚫putchar(c);putch
ar(‘\n’);⚫输出其它转义字符⚫putchar(‘\101’);输出‘A’;⚫putchar(‘\’’);输出单引号⚫putchar(‘\015’);使输出回车,不换行⚫getchar函数(字符输入函数
)–一般格式:getchar()[例4.2]#include“stdio.h”main(){charc;c=getchar();putchar(c);}putchar(getchar());输出从键盘得到的值,但不赋给任何变量a格式输
入与输出⚫printf函数⚫可以按规定格式向终端输出任意类型的数据一般格式:printf(控制格式,输出列表)被输出的数据,可以是常量、变量、表达式。用双引号括起的转换控制字符串,它包括两种信息:格式说明,由%开始。如:%d,%f,%
c普通字符,要输出的字符printf(“%d%d”,a,b)格式说明输出列表printf(“a=%db=%d”,a,b);格式说明输出列表1212312345⚫格式字符–(1)d格式符,用来输出十进制数。•%d按整型的
实际长度输出。–a=12,b=123,c=12345;–printf(“%d,%d,%d”,a,b,c);–12,123,12345•%md按给定长度m输出,数字不够长,左边补空格;数字长度大于m,按原长度输出。–printf(“%4d%4d%4d”,a,b,c);–(5
)c格式符,用来输出一个字符。如:•charc=‘a’;•printf(“%c”,c);•aprintf(“%3c”,c);a[例4.4]main(){charc=‘a’;inti=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\
n”,c,c);}a,97a,97CHINA–(6)s格式符,用来输出一个字符串。例如:•%s:按实际长度输出–printf(“%s”,“CHINA”);–CHINA•%ms:当字符串长度小于m时,左边补空格。–printf(“%7
s”,“CHINA\n”);•%-ms:当字符串长度小于m时,右边补空格–printf(“%-7s”,“CHINA\n”);•%m.ns输出占m列,但只取字符串左端的n个,并向右对齐。•%-m.nsm
和n的含义同上,但向左对齐。若n大于m,取m等于n.CHICHINACHCHIN⚫[例]⚫main()⚫{printf(“%3s,%7.2s,%.4s,%-5.3s\n”,⚫“CHINA”,“CHINA”,“CHINA”,“C
HINA”);⚫}–(7)f格式符,用来输出实数(单精度、双精度),以小数形式输出。•%f:不指定宽度,整数部分全部输出,输出6位小数。•单精度时,7位数字有效,双精度时,16位数字有效。[例]main(){floatx,y;x=111111.111;y=222222.222;prin
tf(“%f”,x+y);}[例]main(){doublex,y;x=1111111111111.1111111111;y=2222222222222.2222222222;printf(“%f”,x+y
);}333333.3281253333333333333.333010•%m.nf整个数据占m位,其中小数占n位,向右对齐。•%-m.nf意义同上,向左对齐–main()–{floatf=123.456;–printf(“%
f%10f%10.2f%0.2f%-10.2f\n”,–f,f,f,f,f);–}123.455994123.456001123.46123.46123.46[例]main(){inta,b,c;scanf(“%d%d%d
”,&a,&b,&c);printf(“%d,%d,%d”,a,b,c);}345345⚫scanf格式输入函数–一般格式:scanf(格式控制,地址列表)–&是地址符,表示a,b,c三个变量在内存中的地址.–连续输入多个
数字时,空格、回车和tab键均可作为分割符(123a,456b)⚫格式说明–scanf(“%3d%3d”,&a,&b);–输入123456–注:输入数据要与控制格式相符合•如:scanf(“%d,%d”,&a,&b);–正确的输入为:4,5–不
正确的输为:4_5•scanf(“a=%d,b=%d”,&a,&b);–正确的输入:a=4,b=5–不正确的输入:4_5和4,5•scanf(“%d:%d”,&a,&b);–正确的输入为:4:5–不正确的输为:4_5或4,5–可以指定数据
列数–不能规定精度经常犯的错误scanf(“%d%d\”\n”,&a,&b)顺序结构的程序设计⚫顺序结构:按语句排列的先后顺序执行,写在前面的语句先执行。⚫当计算需要引用一个变量时,该变量一定要事先定
义、赋值,然后才能出现在表达式中.AB传统的流程图ABN-S图⚫[例]输入三角形的边长,求三角形的面积。area=√s*(s-a)*(s-b)*(s-c)s=(a+b+c)/2#include“math.h”main(){floata,b,
c,s,area;scanf(“%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,c
,b,s);printf(“area=%7.2f\n”,area);}输入为:3,4,6输出为:a=3.00,b=4.00,c=6.00,s=6.50area=5.33[例11]从键盘上输入一个大写字母,分别用大小写字母形式输出,同时输出它们的ascii码。main(
){charc1,c2;c1=getchar();printf(“%c,%d\n”,c1,c1);c2=c1+32;printf(“%c,%d\n”,c2,c2);}A,65a,97A[例12]求ax2+bx+c=0方程
的根,a,b,c由键盘键入,设b2-4ac>0#include“math.h”main(){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(d
isc)/(2*a);x1=p+q;x2=p-q;printf(“\nx1=%5.2f\n\x2=%5.2f\n”,x1,x2);}x1=-1.00x2=-2.00a=1,b=3,c=2