云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 挺好的pascal教程

挺好的pascal教程

  • 62 次阅读
  • 3 次下载
  • 2025/5/1 6:59:56

数就是a,b的最小公倍数。 program ex13;

var a,b,n,s:integer; begin

writeln('input a,b'); readln(a,b); n:=0; repeat n:=n+1; s:=a*n;

until (s mod b=0) and (s mod a=0); writeln(s); readln; end.

用这样的方法做,会易懂的多哦。

例3,校体操队到操场集合,排成每行2人,最后多出1人;排成每行3人,也多出1人;分别按每行排4,5,6人,都多出1人;当排成每行7人时,正好不多。求校体操队至少是多少人? 解:

①设校体操队为X人,根据题意X应是7的倍数,因此X的初值为7,以后用inc(x,7)改变X值; program ex03; var x:integer; begin x:=0; repeat inc(x,7); until

(x mod 2=1) and (x mod 3=1) and (x mod 4=1) and (x mod 5=1) and (x mod 6=1); writeln(x); end.

答案:301人

试一试:在一千多年前的《孙子算经》中,有这样一道算术题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”按照今天的话来说:一个数除以3余2,除以5余3,除以7余2,求这个数。现在我们稍微改变一下:一个数除以 3余2,除以5余3,除以7余2,求符合条件的最小数 program exsys; var a,s:integer; begin

a:=1; s:=8; repeat s:=s+a until

(s mod 3=2) and (s mod 5=3) and (s mod 7=2); writeln(s); readln; end. 答案:23

例4、从键盘输入一个整数X(X不超过10000),若X的各位数字之和为7的倍数,则打印“Yes”,否则打印“No”。

解:本题考察的是数字分离的方法,由于X的位数不定,所以以往的解法不能奏效,这是介绍一种取余求商法。

(1)用X mod 10分离出X的个位数字;

(2)用X div 10将刚分离的个数数字删除,并将结果送回给X; (3)重复(1)(2)直到X=0。 repeat

a:=x mod 10;

x:=x div 10; s:=s+a; until x=0;

说明:小数除以大数求余数,商为0,余数为小数本身。 程序:

Program ex12; var x,a,s:integer; begin

writeln('input x'); readln(x); s:=0; repeat

a:=x mod 10; x:=x div 10; s:=s+a; until x=0;

if s mod 7=0 then writeln('Yes') else writeln('No'); readln; end.

例5、求1992个1992的乘积的末两位数是多少?

解:积的个位与十位数只与被乘数与乘数的个位与十位数字有关,所以本题相当于求1992个92相乘,而且本次的乘积是下一次相乘的被乘数,因此也只需取末两位参与运算就可以了。 解法1:

program ex12; var i,n,s:integer; begin n:=92; s:=1;

for i:=1 to 1992 do s:=(s*n) mod 100; writeln(s); readln; end. 答案:36 解法2:

program ex313; var a,t:integer; Begin a:=1; t:=0; repeat t:=t+1;

a:=(a*92) mod 100; until t=1992; writeln(a); readln; End.

例6、猜价格:中央电视台的“幸运52”栏目深受观众喜爱,其中的“猜商品价格”的节目更是脍炙人口,现在请你编一个程序模拟这一游戏:由计算机随机产生200至5000之间的一个整数,作为某件商品的价格,然后由你去猜是多少,若你猜的数大了,则计算机输出提示“Gao”,若你猜的数小了,则计算机输出提示“Di”,然后你根据提示继续猜,直到你猜对了,计算机会提示“Ok”,并统计你猜的总次数。 随机函数:random介绍:random[?r?nd?m]随机 在pascal语言中提供了随机函数random(x),无自变量时,函数值取(0,1)间的随机小数;x为整数时,取(0,x)之间的随机整数;在调用随机函数之前,应使用randomize过程进行初始化,生成一个随机序列

调用random之前必须先调用没有参数的randomize,randomize[?r?nd?maiz],使随机化 begin

randomize;

writeln(random(100)); end.

random(x):随机产生一个0~x-1之间的整数

random(900)表示0~899之间的数,所以random(900)+100就是100~999 random(上界+1);产生0~上界 random(上界)+1;产生1~上界 random(上界);产生0~上界-1

random(上界)+下界;产生下界~上界+下界 random(上界-下界)+下界;产生下界~上界

解:本题的游戏规则大家都清楚,要完成程序,必须把处理步骤理清: (1)用随机函数Random产生200至5000之间的一个整数X; (2)你猜一个数A; (3)若A>X,则输出“Gao”; (4)若A<X,则输出“Di”; (5)若A=X则输出“Ok”; (6)重复(2)(3)(4)(5)直到A=X。

program ex315;

Var t,x,a:integer; begin

randomize;

x:= Random(4800)+200; t:= 0; repeat t:= t+1;

write('[',t,'] Qing cai yi ge zheng shu :'); readln(a);

if a>x then writeln('Gao'); if a

练习题:

1.求两个自然数M和N的最小公倍数。(如果求三个或更多个数的最小公倍数呢?应如何解决)

program ex13;

var a,b,n,s:integer; begin

writeln('input a,b'); readln(a,b); n:=0; repeat n:=n+1; s:=a*n;

until (s mod b=0) and (s mod a=0); writeln(s); readln; end.

2.小会议室里有几条相同的长凳,有若干人参加开会。如果每条凳子坐6人,结果有一条凳子只坐有3人;如果每条凳子坐5人,就有4人不得不站着。求会议室里有多少人开会,有多少条长凳?

这道题目显然是用枚举法,一开始我们通常会用到让人一个个增加,凳子也一根根增加,但我们会发现,按照1个人,1根凳子的数量关系去枚举,那永远也找不到凳子和人。因为,凳子和人的关系不是1根凳子1个人的数量。枚举的1个人,1根凳子;2个人,2根凳子

因此找对人和凳子的关系是关键。我们先考虑是让人一个个增加还是让凳子一根根增加,如果人1个个增加的话,凳子表达出来就不可能是整数了。因此我们选择让凳子一个个增加,那么,凳子一根跟增加,人按照怎样的数量关系增加呢?那么凳子和人有啥关系呢?从第一句话我们可以看出,凳子×6—人=3,因此我们可以找到,当凳子增加一根的时候,人应该是增加3个。人=凳子×6-3。如何从凳子×6—人=3,得到人=凳子×6-3,需要妈妈教你。这样我们就可以按照这个数量关系进行循环枚举凳子数和人数,直到符合题目意思:(dz*6-r=3) and (r-dz*5=4)就可以了。 解法1:program ex01; var r,dz:integer; begin dz:=0; repeat

dz:=dz+1; r:=dz*6-3;

until (dz*6-r=3) and (r-dz*5=4); writeln('r=',r,' ','dz=',dz); readln; end.

答案:39人,7根凳子。

当然,神捷捷的话,也可以直接根据盈亏问题,用算术方法做。但我们做这种题目的目的是为了掌握循环语句的用法。

4.某次同学聚会,老同学见面个个喜气洋洋,互相握手问好。参加此次聚会者每人都与老同学握了一次手,共握903次,试求参加聚会的人数? 解法1:用直到型循环。

首先我们先枚举一下2个人握1次,3个人握3次,4个人握6次,5人握10次,我们经过分析可以得出,人数为r的话,握手数等于1+2+3+..+(r-1),那么我们按照1+2+3这样循环来计算握手数,一直循环到握手数等于903,即可知道r-1的值,那么+1就等于总人数 因此编程: program ex01; var r,s,i:integer; begin s:=0; i:=0; repeat i:=i+1; s:=s+i; until s=903; r:=i+1; writeln(r); readln; end.

得到答案43人,后验算正确,说明算法正确。

方法二,在了解握手数等于握手数等于1+2+3+..加到总人数减1,我们可以大致推算出总人数在50以内,因此可以用for的方法解答。 program ex01; var r,s,i:integer; begin s:=0;

for i:=1 to 50 do begin s:=s+i;

搜索更多关于: 挺好的pascal教程 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

数就是a,b的最小公倍数。 program ex13; var a,b,n,s:integer; begin writeln('input a,b'); readln(a,b); n:=0; repeat n:=n+1; s:=a*n; until (s mod b=0) and (s mod a=0); writeln(s); readln; end. 用这样的方法做,会易懂的多哦。 例3,校体操队到操场集合,排成每行2人,最后多出1人;排成每行3人,也多出1人;分别按每行排4,5,6人,都多出1人;当排成每行7人时,正好不多。求校体操队至少是多少人? 解: ①设校体操队为X人,根据题意X应

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com