一道简单的PASCAL程序题谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/19 03:54:50
题目:有一由5个小写字母组成的单词其中2、4为元音字母,1、3、5为辅音字母,问符合以上要求的单词有多少个?
我写的程序,不过答案不对,看看哪里有问题谢谢!
program word;
var
a1,a2,a3,a4,a5,num:integer;
begin
for a1:=0 to 20 do
for a2:=0 to 4 do
for a3:=0 to 20 do
for a4:=0 to 4 do
for a5:=0 to 20 do
num:=num+1;
end.
PS还有个问题……PASCAL里没有num++么..编译不通过啊..
本来是要用枚举和子界类型来做的题目,用那个写出来的答案也是这个,-30619.答案好象应该是231525吧..

你是用的TURBO PASCAL吗,下面的程序在TURBO PASCAL下调试通过:

program word;
type
yy=(a,e,i,o,u);
fy=(b,c,d,f,g,h,j,k,l,m,n,p,q,r,s,t,v,w,x,y,z);
var a1,a3,a5:fy;
a2,a4:yy;
num:longint;
begin
num:=0;
for a1:=b to z do
for a2:=a to u do
for a3:=b to z do
for a4:=a to u do
for a5:=b to z do
inc(num);
writeln(num);
end.

程序运行结果为:
231525

现在回答你的问题:

首先因为你是16位的TURBO PASCAL,INTEGER数据类型最大为32768,所以要使用LONGINT类型,否则结果会为负数。如果是在32位的WINDOWS下的DELPHI编程,INTEGER就够了。

其次,NUM:=NUM+1在TURBO PASCAL、DELPHI里面,可以表示为INC(NUM);不过这不是标准PASCAL的语法,不建议使用,除非你确保你一生只在TURBO PASCAL下写程序。

最后,你的NUM没有初始化,这是不好的,应该在程序的最前面写上NUM:=0。

此外,这样的程序可以直接用下面一句表示:
writeln(21*21*21*5*5);

很简单的错误,没有初使化Num,在第一个for之前加
Num := 0;

Pascal中没有num+++么
在Delphi中有个Inc函数,相当于++

只要把integer;改成longint就行了;
integer的最大是65535;
而答案231525>65535