pascal编程求助
1.计算S的值S=[1/(1+2)]+[1/(3+4)]+...+[1/(99+100)]2.齐王点兵的问题。让军队先后以3人一排5人一排7人一排列队,看各排排位人数。计...
1.计算S的值
S=[1/(1+2)]+[1/(3+4)]+...+[1/(99+100)]
2.齐王点兵的问题。
让军队先后以3人一排 5人一排 7人一排列队,看各排排位人数。计算总人数(<100)
输入:每次列队排尾人数。输出:总人数(<100)
3.输入两整数,输出其最小公倍数。
4.输出字母金字塔。(中间有空格隔开)
a
a b
a b c
.
.
a b ..y
a b c...z
5.求最小正整数m,n(0<n<m)为何值时
1989的n次方与1989的m次方末三位相同。
如果可以的话,请把各个题目的核心知识讲解一下把
拜托了~ 展开
S=[1/(1+2)]+[1/(3+4)]+...+[1/(99+100)]
2.齐王点兵的问题。
让军队先后以3人一排 5人一排 7人一排列队,看各排排位人数。计算总人数(<100)
输入:每次列队排尾人数。输出:总人数(<100)
3.输入两整数,输出其最小公倍数。
4.输出字母金字塔。(中间有空格隔开)
a
a b
a b c
.
.
a b ..y
a b c...z
5.求最小正整数m,n(0<n<m)为何值时
1989的n次方与1989的m次方末三位相同。
如果可以的话,请把各个题目的核心知识讲解一下把
拜托了~ 展开
5个回答
展开全部
1.
var
ans:real;//因为输出的肯定是小数,所以要用实型
i:integer;
begin
ans:=0;//赋初值,就是归零
for i:=1 to 50 do//之所以是50,是因为本人太吹毛求疵了,可以用一点小聪明,让它快一点点。
ans:=ans+(1/(i*2-1+i*2));//这就是小聪明,是所以是i*2-1+i*2,是因为经过本人严密的计算,发现(1~n)*2-1就是1~n*2里面的所有奇数。
writeln(ans:0:2);//之所以有:0:2,是因为是双场宽,前面一个就是几位,就是让输出的空(n-他的位数),小于等于零的话相当于没加,后面一个是保留几位小数。
end.
这道本人认为主要是考你的循环
因为我有时候在网上抄题,有些人像我这样加了这么多,去掉很烦,我就再给你一份原程序
var
ans:real;
i:integer;
begin
ans:=0;
for i:=1 to 50 do
ans:=ans+(1/(i*2-1+i*2));
writeln(ans:0:2);
end.
2.
var
a,b,c:longint;
begin
readln(a,b,c);
for i:=1 to 99 do
if (i mod 3=a) and (a mod 5=b) and (i mod 7=c) then//这道题比较简单,不用打很多字了,这边的for语句和if语句的意思就是把所有可能都来一遍,只有符合条件就打印,这种方法可能叫枚举,我记得很早以前我做这道题用了很久,因为只考虑数学方法。
begin writeln(i);break;end;//为什么要加break,这句语句的作用是
end.
这道也考循环(仅供参考,我还没学完呢(不过也快学完了))
var
a,b,c:longint;
begin
readln(a,b,c);
for i:=1 to 99 do
if (i mod 3=a) and (a mod 5=b) and (i mod 7=c) then
begin writeln(i);break;end;
end.
3.
var
i,j:longint;
begin
for i:=1 to 26 do
begin
write('':26-i);//你去试验一下,第i行行首要打印26-i个空格,你要小心了,两个单引号是连起来的,中间没有空格,否则会错掉。
for j:=1 to i-1 do write(chr(96+j),' ');//为什么是96+j呢,这是ascii码,用处很大,你要记牢几个常用字符的ascii码。
writeln(chr(96+i));
end;
end.
这道考的是字符输出
var
i,j:longint;
begin
for i:=1 to 26 do
begin
write('':26-i);
for j:=1 to i-1 do write(chr(96+j),' ');
writeln(chr(96+i));
end;
end.
我把你加为好友了,剩下几个在百度hi里给你
var
ans:real;//因为输出的肯定是小数,所以要用实型
i:integer;
begin
ans:=0;//赋初值,就是归零
for i:=1 to 50 do//之所以是50,是因为本人太吹毛求疵了,可以用一点小聪明,让它快一点点。
ans:=ans+(1/(i*2-1+i*2));//这就是小聪明,是所以是i*2-1+i*2,是因为经过本人严密的计算,发现(1~n)*2-1就是1~n*2里面的所有奇数。
writeln(ans:0:2);//之所以有:0:2,是因为是双场宽,前面一个就是几位,就是让输出的空(n-他的位数),小于等于零的话相当于没加,后面一个是保留几位小数。
end.
这道本人认为主要是考你的循环
因为我有时候在网上抄题,有些人像我这样加了这么多,去掉很烦,我就再给你一份原程序
var
ans:real;
i:integer;
begin
ans:=0;
for i:=1 to 50 do
ans:=ans+(1/(i*2-1+i*2));
writeln(ans:0:2);
end.
2.
var
a,b,c:longint;
begin
readln(a,b,c);
for i:=1 to 99 do
if (i mod 3=a) and (a mod 5=b) and (i mod 7=c) then//这道题比较简单,不用打很多字了,这边的for语句和if语句的意思就是把所有可能都来一遍,只有符合条件就打印,这种方法可能叫枚举,我记得很早以前我做这道题用了很久,因为只考虑数学方法。
begin writeln(i);break;end;//为什么要加break,这句语句的作用是
end.
这道也考循环(仅供参考,我还没学完呢(不过也快学完了))
var
a,b,c:longint;
begin
readln(a,b,c);
for i:=1 to 99 do
if (i mod 3=a) and (a mod 5=b) and (i mod 7=c) then
begin writeln(i);break;end;
end.
3.
var
i,j:longint;
begin
for i:=1 to 26 do
begin
write('':26-i);//你去试验一下,第i行行首要打印26-i个空格,你要小心了,两个单引号是连起来的,中间没有空格,否则会错掉。
for j:=1 to i-1 do write(chr(96+j),' ');//为什么是96+j呢,这是ascii码,用处很大,你要记牢几个常用字符的ascii码。
writeln(chr(96+i));
end;
end.
这道考的是字符输出
var
i,j:longint;
begin
for i:=1 to 26 do
begin
write('':26-i);
for j:=1 to i-1 do write(chr(96+j),' ');
writeln(chr(96+i));
end;
end.
我把你加为好友了,剩下几个在百度hi里给你
展开全部
一楼的答案有些错了
1
var i:integer;
s:real;
begin
s:=0;
for i:=1 to 50 do
s:=s+(1/(2*i-1+2*i));
writeln(s);
end.
2
var a3,a5,a7,i:integer;
begin
for i:=1 to 100 do
if (i mod 3=a3) and (i mod 5=a5) and (i mod 7=a7) then break;
writeln(i);
end.
3
var x,y,r,t:integer;
begin
readln(x,y);
if (y>x) then begin t:=x; x:=y; y:=t; end;
t:=x*y;
r:=x mod y;
while r<>0 do
begin
x:=y;
y:=r;
r:=x mod y;
end;
writeln(t div y);
end.
4
var i,j,k:longint;
begin
for i:=1 to 26 do begin
k:=0;
for j:=1 to 27-i do write(' ');
for j:=1 to i*2-1 do
if j mod 2=1 then begin
write (chr(97+k));k:=k+1;
end
else write(' ');
writeln;
end;
end.
5
var m,n,tm,tn:integer;
flag:boolean;
begin
flag:=true;
m:=2;
tm:=1989*1989 mod 1000;
while flag do
begin
n:=1;
tn:=1989 mod 1000;
while flag and (n<m) do
begin
if tm=tn then begin flag:=false;break; end;
tn:=tn *1989 mod 1000;
n:=n+1;
end;
if not flag then break;
tm:=tm*1989 mod 1000;
m:=m+1;
end;
writeln(m,' ',n);
end.
1
var i:integer;
s:real;
begin
s:=0;
for i:=1 to 50 do
s:=s+(1/(2*i-1+2*i));
writeln(s);
end.
2
var a3,a5,a7,i:integer;
begin
for i:=1 to 100 do
if (i mod 3=a3) and (i mod 5=a5) and (i mod 7=a7) then break;
writeln(i);
end.
3
var x,y,r,t:integer;
begin
readln(x,y);
if (y>x) then begin t:=x; x:=y; y:=t; end;
t:=x*y;
r:=x mod y;
while r<>0 do
begin
x:=y;
y:=r;
r:=x mod y;
end;
writeln(t div y);
end.
4
var i,j,k:longint;
begin
for i:=1 to 26 do begin
k:=0;
for j:=1 to 27-i do write(' ');
for j:=1 to i*2-1 do
if j mod 2=1 then begin
write (chr(97+k));k:=k+1;
end
else write(' ');
writeln;
end;
end.
5
var m,n,tm,tn:integer;
flag:boolean;
begin
flag:=true;
m:=2;
tm:=1989*1989 mod 1000;
while flag do
begin
n:=1;
tn:=1989 mod 1000;
while flag and (n<m) do
begin
if tm=tn then begin flag:=false;break; end;
tn:=tn *1989 mod 1000;
n:=n+1;
end;
if not flag then break;
tm:=tm*1989 mod 1000;
m:=m+1;
end;
writeln(m,' ',n);
end.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一、模拟
var i:integer;
s:real;
begin
for i:=1 to 99 do
s:=s+1/(i+i+1);
writeln (s:0:2);{保留二位,双厂宽}
end.
二、模拟
var i,a,b,c:integer;
begin
readln (a,b,c);
repeat
i:=i+1;
until (i mod 3=a) and (i mod 5=b) and (i mod 7=c);
writeln (i);
end.
三、辗转相减法
var a,b:integer;
begin
readln (a,b);
while a<>b do
if a>b then a:=a-b else b:=b-a;
writeln (a);
end.
四、模拟
var i,j,k:longint;
begin
for i:=1 to 26 do begin
k:=0;
for j:=1 to 27-i do write(' ');
for j:=1 to i*2-1 do
if j mod 2=1 then begin
write (chr(97+k));k:=k+1;
end
else write(' ');
writeln;
end;
end.
五、别做了,考试肯定不会考的
var i:integer;
s:real;
begin
for i:=1 to 99 do
s:=s+1/(i+i+1);
writeln (s:0:2);{保留二位,双厂宽}
end.
二、模拟
var i,a,b,c:integer;
begin
readln (a,b,c);
repeat
i:=i+1;
until (i mod 3=a) and (i mod 5=b) and (i mod 7=c);
writeln (i);
end.
三、辗转相减法
var a,b:integer;
begin
readln (a,b);
while a<>b do
if a>b then a:=a-b else b:=b-a;
writeln (a);
end.
四、模拟
var i,j,k:longint;
begin
for i:=1 to 26 do begin
k:=0;
for j:=1 to 27-i do write(' ');
for j:=1 to i*2-1 do
if j mod 2=1 then begin
write (chr(97+k));k:=k+1;
end
else write(' ');
writeln;
end;
end.
五、别做了,考试肯定不会考的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
打酱油……
1、2,:死做题
3:辗转相除法
4:二重循环
5:高精度乘法
1、2,:死做题
3:辗转相除法
4:二重循环
5:高精度乘法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-11-28
展开全部
好像那本竞赛书上的题啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询