m:=m*i;
writeln(‘m=’,m);
end.
例7.计算:s=1+2+3+4+5+??+99+100。 Var
s,i:integer; begin s:=0;
for i:=1 to 100 do
s:=s+i; writeln(s); end.
For语句练习:
例8、输出1到300之间的能够被3整除的数。 program xumin21; var
m:integer; begin
for m:=1 to 300 do
if m mod 3=0 then write(m,' '); readln; end.
例9、统计1到1000之间能够同时被3和7整除的数的个数,并计算他们的和。 program xumin22;
var m,gs,he:integer; begin
gs:=0; he:=0;
for m:=1 to 1000 do
if (m mod 3=0) and (m mod 7=0) then begin
he:=he+m; gs:=gs+1; end;
writeln('gs=',gs,' ','he=',he); writeln;end.
例10、编程求100到500之间有多少个其各位数字之和为5的倍数,并逐个输出。(例如,172,1+7+2=10) program xumin23;
var a,b,c,gs,m:integer; begin gs:=0;
for m:=100 to 500 do div mod begin
a:=m div 100;
b:=m mod 100 div 10;(掌握如何把某整数各数字拆开) c:=m mod 10; if (a+b+c) mod 5 =0 then begin
gs:=gs+1; write(m,' '); end;
end; writeln('gs=',gs); writeln; end.
例11.计算s=1+3+5+??+99。 Var
s:=0; i,m,s:integer; For i:=1 to 50 do s:=s+2*i-1; begin
writeln(s); s:=0; for i:=1 to 99 do
if i mod 2<>0 then s:=s+i; writeln(s); end.
例12.输入30个数,统计其中正数、负数、零的个数。 var i,n,zs,fs,ling:integer; Begin
zs:=0; fs:=0; ling:=0; For i:=1 to 30 do Begin
Read(n);
If n>0 then zs:=zs+1
Else if n=0 then ling:=ling+1 Else fs:=fs+1; End;
Writeln(zs:4,ling:4,fs:4); End.
当型循环(while)语句
使用for语句编写程序时,必须要事先知道循环次数,如果遇到不能确定循环次数的问题就无法使用了,当型循环语句提供了解决此类问题的方法。
while语句用于“当满足某一条件时进行循环”的情况。
while语句的语法格式:
while 布尔表达式 do
语句;
循环结束条件在进入循环体之前测试,若最初的测试值为false,则根本不进入循环体,也就是说while循环是是属于当型循环。为了能使while重复能终止,循环体中一定要有影响布尔表达式的操作,否则该循环就是一个死循环。 例1:求s=2+6+10+??+98的值。
分析:用x代表累加的数据,x赋初值为2,每次循环后增加4。设s为累加器,取x≤98作为布尔表达式。
Program e11; Var
s,x:integer; begin
x:=2;s:=0;
while x<=98 do {当x满足条件时执行do后面的复合语句}
begin
s:=s+x; x:=x+4; end;
writeln('s=',s); end.
例2.计算从0到某个数之间所有奇数的和。1+3+5??+66 program jishu;
var odds,limit,sum:integer; begin
readln(limit); sum:=0; odds:=1;
while odds<=limit do begin
sum:=sum+odds; odds:=odds+2;
end;
writeln(sum); end.