六安皋城中学信息学教程

2026/1/27 7:02:40

六安一中信息学奥赛教程第1部分——语言篇 by jjh

var e,p:real; i:longint; begin

e:=1;p:=1;i:=1; while p>=1e-7 do

begin p:=p/i; e:=e+p; inc(i); end;

writeln(?e=?,e); end.

程序2-12:求ex的值。(保留4位小数)

x2x3xixiexp(x)?1?x???...?(??10?10)

2!3!i!i!var i,x:integer;

t,s:real; begin

readln(x); i:=0;t:=1;s:=1;

while abs(t)>1e-10 do

begin inc(i); t:=t*x/i; s:=s+t; end;

writeln(s:0:4); end.

21

六安一中信息学奥赛教程第1部分——语言篇 by jjh

2.3 文件操作

程序2-13:数据统计

从“d1.txt”文本文件中读入数据,求出它们的最小值,最大值和平均值(保留3位小数),并把它们输出到“d2.txt”文本文件中。保证“d1.txt”里的这些数都是不超过1000的整数。 样例输入(d1.txt):

2 8 3 5 1 7 3 6 样例输出(d2.txt): 1 8 4.375

var x,n,s,min,max:longint; f1,f2:text; begin

assign(f1,'d1.txt');reset(f1); assign(f2,'d2.txt');rewrite(f2); n:=0;s:=0;min:=0;max:=0; while not eof(f1) do begin

read(f1,x); s:=s+x;

if xmax then max:=x; inc(n); end; close(f1);

writeln(f2,min,max,s/n); close(f2); end.

本程序中有一语句:s:=s+x,s在前面一直没有出现赋初值,这有可能导致结果不正确。 提示:变量在未赋值之前的值是不确定的。特别地,它不一定等于0。

本程序中使用了使用文件输入输出,而非标准输入输出。在使用文件输入输出时,首先申明文件类型的变量:f1,f2:text;

在输入输出之前需要初始化: 读文件:assign(f1,”d1.txt”);reset(f1); 写文件:assign(f2,”d2.txt”);rewrite(f2);

输入输出以后一定要关闭文件: close(f1);close(f2);

程序2-14:正因子个数

输入正整数n,统计它的正因子个数,并保存到文本文件“a1.out”中。n<=1012。 样例输入:30 样例输出:8 【分析】

本题可以直接枚举,如果i是n的约数,则n div i也是n的约数,除非i=n div i。i和n div i恰好有一个不超过n的算术平方根。这样,从1枚举到sqrt(n)即可。 var i,n:longint; f1:text;

22

六安一中信息学奥赛教程第1部分——语言篇 by jjh

begin

assign(f1,”a1.out”);rewrite(f1); readln(n); tot:=0;

for i:=1 to trunc(sqrt(n)) do if n mod i=0 then inc(tot); writeln(f1,tot); close(f1); end.

上机练习

1.位数(digit.pas)

输入一个不超过109的正整数,输出它的位数。例如12735的位数是5。请不要使用任何数学函数,只用四则运算和循环结构实现。 2.水仙花数(daffodil.pas)

输入100—999中的所有水仙花数。若3位数ABC满足ABC=A3+B3+C3,则称其为水仙花数。例如153=13+53+33,所以153是水仙花数。 3.最大公约数(gcd.pas)

输入两个数m和n,求m和n的最大公约数。 4.韩信点兵(hanxin.pas)

相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。 样例输入:2 1 6 样例输出:41 样例输入:2 1 3

样例输出:No answer 5.字母塔(ztower.pas) 输入n,输出n行的字母塔。 例如n=4时,输出

A ABA ABCBA ABCDCBA ABCBA ABA A

6.调和级数(harmony.pas)

输入正整数n,输出H(n)?1?样例输入:3 样例输出:1.833

7.近似计算(approximation.pas)

23

111??...?的值,保留3位小数。 23n六安一中信息学奥赛教程第1部分——语言篇 by jjh

计算

?111?1????...,直到最后一项小于10-6。 4357111,保留5位小数。 ??...?n2(n?1)2m28.子序列的和(subsequence.pas)

输入两个正整数n

样例输入1:2 4

样例输出1:0.42361

样例输入2:65536 655360 样例输出2:0.00001 注意:本题有陷阱。

9.分数化小数(decimal.pas)

输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b<=106,c<=100。 样例输入:1 6 4 样例输出:0.1667

10.排列(permutation.pas)

用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。输出所有解。 11.逻辑判断(logic.pas)

四个学生上地理课时,回答我国四大淡水湖的大小时这样说。 甲:“最大洞庭湖,最小洪泽湖,鄱阳湖第三”; 乙:“最大洪泽湖,最小洞庭湖,鄱阳湖第二,太湖第三”; 丙:“最小洪泽湖,洞庭湖第三”; 丁:“最大鄱阳湖,最小太湖,洪泽湖第二,洞庭湖第三”;对于每个湖的大小,每个学生仅答对一个,请编程确定四个湖的大小。 12.亲密数对(qmnum.pas)

求2—1000中的亲密数对(如果a的因子和等于b,b的因子和等于a,且a<>b,则称a,b为亲密数对)。

24


六安皋城中学信息学教程.doc 将本文的Word文档下载到电脑
搜索更多关于: 六安皋城中学信息学教程 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219