If statement 我可以在pascal中的if语句中使用case吗
我想在if语句上使用case,我可以使用它吗?因为我编译的时候总是出错;w 我得到的错误是:If statement 我可以在pascal中的if语句中使用case吗,if-statement,pascal,freepascal,case-statement,If Statement,Pascal,Freepascal,Case Statement,我想在if语句上使用case,我可以使用它吗?因为我编译的时候总是出错;w 我得到的错误是: Tahun.pas(26,21) Fatal: Syntax error, ";" expected but "ELSE" found Tahun.pas(0) Fatal: Compilation aborted 这是我的代码: uses Crt; var sisa, bulan, tahun : integer; begin ClrScr; writeln('masukkan tahun');
Tahun.pas(26,21) Fatal: Syntax error, ";" expected but "ELSE" found
Tahun.pas(0) Fatal: Compilation aborted
这是我的代码:
uses Crt;
var
sisa, bulan, tahun : integer;
begin
ClrScr;
writeln('masukkan tahun'); read(tahun);
sisa := tahun mod 4;
if sisa =0 then
writeln('masukkan bulan 1-12'), read(bulan);
case bulan of
1: write('31');
2: write('29');
3: write('31');
4: write('30');
5: write('31');
6: write('30');
7: write('31');
8: write('30');
9: write('31');
10: write('30');
11: write('31');
12: write('30');
else write('bulan tidak lebih dari 12');
end;
else
writeln('masukkan bulan 1-12'), read(bulan);
case bulan of
1: write('31');
2: write('28');
3: write('31');
4: write('30');
5: write('31');
6: write('30');
7: write('31');
8: write('30');
9: write('31');
10: write('30');
11: write('31');
12: write('30');
else write('bulan tidak lebih dari 12')
end;
readln;
readln;
end.
或者你知道如何改进代码;w
谢谢你的回答;w 我希望您已经阅读了昨天评论中给出的建议的链接。因此,这个问题有几种可能的答案: 1st–修复您的代码:
begin
writeln('masukkan tahun');
readln(tahun);
writeln('masukkan bulan 1-12');
readln(bulan);
case bulan of
1, 3, 5, 7, 8, 10, 12: writeln('31');
2: if tahun mod 4 = 0 then
writeln('29')
else
writeln('28');
4, 6, 9, 11: writeln('30');
else
write('bulan tidak lebih dari 12');
end;
readln;
end.
2nd–要优化它:
const
DinM: array [boolean, 1 .. 12] of byte =
((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31));
begin
writeln('masukkan tahun');
readln(tahun);
writeln('masukkan bulan 1-12');
readln(bulan);
writeln(DinM[tahun mod 4 = 0, bulan]);
readln;
end.
第三名:
使用预先设计的函数:Delphi有一个函数DaysInAMonth
拉撒路也是
注意
请记住,所有这些方法(包括标准函数)在计算闰年时都会出错,因为并非所有
year mod 4=0
的年份都是闰年。例如,1700年、1800年、1900年、2100年等都不是闰年。阅读带有begin/END的复合语句谢谢,我现在就读;W与其在您的case
语句中嵌入write
语句,不如编写一个具有输入参数的函数,该参数指定月数以及年份是否为闰年,并返回该月的天数。您能给我一个关于具有输入参数的函数的简单示例吗;W这是学习如何编程的一种无望的方式。任何像样的介绍文字都会教你函数是什么。你对什么是堆栈溢出有错误的认识。