pascal的程序分为两部分,一部分是说明部分,一部分是代码部分。
说明部分分别是:const——常量,label——标记,type——类型,var——变量。正确的书写顺序是:
Label
......
Const
......
Type
......
Var
......
在说明完毕以后,就到程序的主体部分也就是代码部分了。通常从函数和过程开始:
function xxx(i:integer):integer
begin
.......
end
procedure xxx(i:integer)
begin
.......
end
begin
......
end.
在写程序时要仿瞎注意统一缩进,如:
Var
i:integer
a:boolean
begin
Readln(i)
if i<10 then
a:=ture
else
a:=false
Write(a)
End.
以下是一个通过读入半备早空径计算圆面积的例子:
Program ksd
Const
ci=3.14 //定义一个常量,ci为圆周率3.14
Var
r,s:real //定义两个变量,r为实型的数值半径,s为实型的数值面积
Begin
Readln(r) /睁旅/读入半径,存入变量r中
If (r>0) and (r<1000) then //用判断语句确保半径的范围值
s:=r*r*ci
Else
Begin //在判断语句、循环语句等语句中超过两条的执行语句,就必须用复合语句——begin和end
Write("Input error!")
Exit //半径不符合时输出“输入错误”,并退出程序
End
Write(s) //输出面积
End.
1.思路:用一个字符串数组储存输入的数据,并分别输出。程序:
Var
a:array[1..3]of string
i:integer
Begin
For i:=1 to 3 do
Readln(a[i])
For i:=1 to 3 do
Write(a[i][i])
End.
2.思路:读入数据,存入字符串变量a中,校验a的值是否符合要求,然后再将a的ascii码求出,输出相邻的五个。
程序:
Var
a:char
i,j:integer
Begin
Readln(a)
i:=ord(a) {求出a的ascii码值}
If ((i>66)and(i<89))or((i>98)and(i<121))then {验证a在大写和小写c和x的ascii码之间}
Begin
For j:=(i-2) to (i+2) do
Write(chr(j)) {根据ascii码求字符}
End
Else
Begin
Write('Input Error!')
Exit
End
Readln
End.
3.先判断月份是否二月(二月是特殊的月,闰年有29天,余搏平年有28天),是就判断是否平年,是平年就输出28天,不是就输出29天,不是就判断月份是1,3,5,7,8,10,12这几个月,就输出31天,如果是4,6,9,11这几个月就输出30天。
程序:
Var
i,j:integer
Begin
readln(j,i)
Case i of
1,3,5,7,8,10,12:write('31days')
4,6,9,11:write('30 days')
2:If (j mod 4=0) then write('29 days') else write('28 days')
End
End.
4.水仙花数是指数a,b,c中,a的立方加b的立方加c的立方等于abc。可以用一个三维数组存入abc,历遍100至999,如果a*a*a+b*b*b+c*c*c=a,b,c则输出。
Var
a,b,c:integer
Begin
For a:=1 to 9 do
For b:=0 to 9 do
For c:=0 to 9 do
If(a*a*a+b*b*b+c*c*c=a*100+b*10+c)then
Writeln(a,b,c)
Readln
End.
5.用a,b,c分别代表个位,十位,百位历遍1-999,如果a*100+b*10+c mod 3=0【三位数abc除3的余数是皮毁搜零,代表被3整除】,和【and】a=5或【or】b=5或【or】c=5,就输出abc。
程序:
Var
a,b,c:integer
n:boolean
Begin
For a:=0 to 9 do
For b:=0 to 9 do
For c:=1 to 9 do
Begin
If (((a*100+b*10+c) mod 3=0) and ((a=5)or(b=5)or(c=5))) then
writeln(a,b,c)
End
Readln
End.
6.还是和5同样方法,判断部分略微修改就是了。
Var
a,b,c:integer
n:boolean
Begin
For a:=0 to 4 do
For b:=0 to 9 do
For c:=1 to 9 do
Begin
If (((a*100+b*10+c-2) mod 3=0) and (a*100+b*10+c-3) mod 5=0) and (a*100+b*10+c-2) mod 7=0)) then
writeln(a,b,c)
End
Readln
End.
打了好久那..手都酸燃历了,程序全都通过测试,合乎要求,完全原创,请求楼主采纳~
program sanjiao(input,output)var a,b,c:integer
s:real
function area(a,b,c:integer):real
var p:real
begin
p:=(a+b+c)/2
area:=sqrt(p*(p-a)*(p-b)*(p-c))
end
begin
write('please input a,b,c:')
readln(a,b,c)
if (a+b>c)and(a+c>b)and(b+c>a) then
begin
s:=area(a,b,c)
writeln(s)
readln
end
else writeln('差判cant')
readln
end.
ps:我已经测试过了,程序正确。程序主要是应用海伦公式,调用一次函数就可以了,p=(a+b+c)/2,p为半周长,海伦公式:s=根号下p(p-a)(p-b)(p-c).我才让慧学pascal不到一个月,马上就要参加竞赛了,初中自学的C语言还不能用···望楼主能采纳虚滑改。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)