循环结构1

循环结构1
循环结构1

第一节for 循环

for循环是一种自动计数型循环。

[例3.1] 试打印出1~20的自然数。

解:①用a代表1~20各数,同时也用a兼作计数,以控制循环次数;

②让a从1开始;

③输出a;

④a自动计数(加1),如果未超越所规定的循环范围则重复步骤③,否则结束循环。

Pascal程序:

Program Exam12;

Var a: byte;

Begin

for a:=1 to 20 do

Writeln (a);

Readln

End.

程序中for a:=1 to 20 do Writeln (a);是for循环语句。

for 循环语句有两种格式:

(1) for循环变量:=初值To 终值do 语句;

(2) for循环变量:=初值downto 终值do 语句;

第(1)种格式的初值小于等于终值,循环变量值按自动加1递增变化;

第(2)种格式的初值大于或等于终值,循环变量值按自动减1递减变化。for 循环是(以递增1或以递减1) 计数型循环。

比如: 若将[例3.1]程序改为倒计数(递减)循环,则输出20~1的自然数数:

Program Exam31;

Var a: byte;

Begin

for a:=20 downto 1 do

Writeln(a) ;

Readln

End.

[例3.2]打印出30至60的偶数。]

解:

方法一:

= 1 \* GB3 ①设a表示30至60的所有的数,可用for循环列出;

= 2 \* GB3 ②用式子 a mod 2=0筛选出其中的偶数并输出。

Pascal程序:

Program ex32;

Var a : integer;

Begin

For a := 30 to 60 do

If (a mod 2=0) then writeln(a);

Readln;

End.

在这个程序中,for循环后的循环语句是一个条件分支语句。

方法二:我们知道,在式子a=2*n中,若n取自然数1、2、3、…,时,则a依次得到偶数2、4、6、…。因此要想得到30至60的偶数,就可以让上面式子中的n取15至30的自然数就可以了。所以本题还可以按以下步骤处理:

= 1 \* GB3 ①设n表示15至30的所有自然数,可用for循环列出;

= 2 \* GB3 ②用式子 a := 2*n求出其中的偶数;

= 3 \* GB3 ③将结果输出至屏幕。

Pascal程序:

Program ex32;

Begin

For n := 15 to 30 do

Begin

a := 2*n;

Writeln(a);

End;

Readln;

End.

[例3.3]自然数求和:编一个程序,求从1至100的自然数的和。

解:①令S=0;

②令a表示1至100的自然数,用循环列出;

③将这些自然数用公式S:=S+a 逐一累加到S中去;

= 4 \* GB3 ④循环结束后,S即为1至100的自然数的和,输出即可。

Pascal程序:

Program ex33;

var s,a : integer;

Begin

S := 0;

For a := 1 to 100 do

S := S+a;

Writeln(‘S=’,S);

Readln;

End.

[例3.4]一个两位数x,将它的个位数字与十位数字对调后得到一个新数y,此时y恰好比x大36,请编程求出所有这样的两位数。

解:①用for循环列举出所有的两位数,x为循环变量;

②用公式a:= x div 10分离出x的十位数字;

③用公式b:= x mod 10分离出x的个位数字;

④用公式y:= b*10+a合成新数y;

= 5 \* GB3 ⑤用式子y-x=36筛选出符合条件的数x并输出。

Pascal程序:

Program ex34;

Begin

For x := 10 to 99 do

Begin

a := x div 10;

b := x mod 10;

y := b*10+a;

if y-x=36 then writeln(x);

End;

Readln;

End.

[例3.5] 把整数3025从中剪开分为30和25两个数,此时再将这两数之和平方,(30+25)2=3025计算结果又等于原数。求所有符合这样条件的四位数。

解:设符合条件的四位数为N,它应当是一个完全平方数,用(a*a)表示。

①为了确保N=(a*a)在四位数(1000~9999)范围内,可确定a在32~99循环;

②计算N=a*a;将四位数N拆分为两个数n1和n2;

③若满足条件(n1+n2)*(n1+n2)=N 就输出N 。

Pascal程序:

Program Exam35;

Var N,a,x,n1,n2: Integer;

Begin

for a:=32 to 99 do

begin

N:=a*a;

n1:= N div 100;{拆取四位数的前两位数}

n2:= N-n1*100;{拆取四位数的后两位数}

X:=n1+n2;

if x*x=N then writeln (N);

end;

Readln

End.

[例3.6]用“*”号打印出如下的长方形图案。

*********

*********

*********

*********

解:①上面给出的图例共有4行,我们可以用一个循环控制行的变化;

②在每行中又有9列,我们可以在前面控制行的循环中再套一个循环来控制列的变化。

Pascal程序:

Program ex36;

Begin

For a := 1 to 4 do {外循环控制行的变化}

Begin

For b := 1 to 9 do {内循环控制列的变化}

write(‘*’);

Writeln; {输出一行的“*”后换行}

End;

Readln;

End.

程序中的循环对于a的每个值都包含着一个b=(1~9)次的内循环。外循环for a 将内循环for b 包含在里面,称为for循环的嵌套。嵌套形式如:

for a:=n1 to n2 do

for b:=m1 to m2 do 循环体语句;

[例3.7] 打印出九九乘法表:

解:设a为被乘数,范围为1~9;b为乘数,范围为1~a;乘式为a*b=(a,b的乘积),则a=1: b=1~a 1*1=1

a=2: b=1~a 2*1=2 2*2=4

a=3: b=1~a 3*1=3 3*2=6 3*3=9

a=4: b=1~a 4*1=4 4*2=8 4*3=13 4*4=16

::

a=9 b=1~a 9*1=9 9*2=18 …9*9=81

⑴从上面分解的横行中看到共有9行,这里的“行”数变化与a的变化从1~9相同,可用a控制“行”的循环;

⑵每“行”里面相乘的次数与b的范围相关,由b控制每“行”里面的“内部”循环;

⑶内循环被包含在最里层,执行完每“行”的内部循环,就到下一“行”去执行新“行”里面的循环,每“行”都拥有形式相同的(b=1~a )内循环。

即每到一“行”都要执行该“行”的内循环。这里所指的“行”可以理解成抽象的行,不一定是实际上具体对应的行,可以是一个处理“块”。

Pascal程序:

Program Exam37;

Var a,b: byte;

Begin

for a:=1 to 9 do {外循环}

begin

for b:=1 to a do {内循环}

write(a,’* ’,b,’= ’,a*b,’’:3);

writeln

end;

Readln

End.

根据这种格式还可以实现多层循环嵌套,例如:

for a:=n1 to n2 do

for b:=m1 to m2 do

for c:=k1 to k2 do 循环体语句;

[例3.8]从七张扑克牌中任取三张,有几种组合方法?请编程输出所有组合形式。

解:设每次取出三张分别为a,b,c。用三重循环分别从1~7的范围里取值;为了排除取到重号,用(a-b)*(b-c)*(a-c) < >0进行判断。

Pascal程序:

program Exam38;

const n=7;

var a,b,c,t: integer;

Begin

t:=0;

for a:=1 to n do

for b:=1 to n do

for c:=1 to n do

if (a-b) * (b-c) * (a-c) < >0 then

Begin

inc (t);

writeln (a:3, b:3, c:3)

End;

writeln ( total:, t :5);

readln

End.

[例3.9] 数学上把除了1和它本身,没有别的数能够整除它的自然数叫做素数(或质数)。现在由键盘输入一个自然数N,编程判断N是否是素数,是则输出“Yes”,否则输出“No”。

解:根据定义,对于给定的自然数N,只需判断除1和它本身外,还有没有第三个自然数即可。

①令K从1循环至N;

②根据N mod K是否为0可统计K的约数的个数;

③若N的约数的个数超过2个,则判定N不是素数。

Pascal程序:

Program Exam39;

Var n,m,k,t: integer;

Begin

write(‘N=’);

ReadLn(N);

t:=0;

for k:=1 to N do {外循环}

if N mod k=0 then t := t+1; {如果N是奇数}

if t>2 then writeln(‘No’)

else writeln(‘Yes’);

Readln;

End.

程序中的变量yse为布尔(或逻辑)类型(Boolean)。布尔值只有两个:

True(真) False(假)

布尔值与条件判断结果为真(条件成立)或为假(条件不成立)的作用相同,常用于条件语句和循环语句中。

上面程序中用if yes and (t mod 7=0) then writeln;实现每行打印七个素数换行,程序中布尔变量yes为真,在逻辑上表示是素数;关系式(t mod 7=0) 的值为真时,表示该行输出素数巳是7个;用and将这两个“条件”连起来是作一种布尔(逻辑)运算。

Pascal 共有四种逻辑运算符:

①and (与) 两条件都为True时,其结果值为True;否则为False;

②or (或) 两条件中只要有一个为True ;其结果值为True;否则为False;

③xor (异或) 两条件的逻辑值不相同时,其结果值为True;否则为False;

④not (非) 条件为True时,其结果值为False;否则为True;(取反)

第二节repeat 循环

Repeat循环是直到型循环。

试将上一节的例3.1(打印出1~20的平方数表)程序改为repeat 循环:

Program Exam31_1;

Var a: byte;

Begin

a:=1;writeln ( ' a ' : 8 , ' a*a ' : 8 ) ;

repeat

writeln ( a :8,a*a : 8);

inc(a);{改变a的值}

Until a>20;

Readln

Emd.

程序中的Repeat循环格式为:

repeat

循环体语句;

until 条件表达式;{直到条件为真}

Repeat循环首先执行由Repeat和Until括起来的循环体语句,然后检查Until后面的条件表达式:如果表达式结果为假,则继续执行循环体,接着继续检查Until后面的条件表达式,如此反复执行直到这个表达式结果为真时结束循环。Repeat循环体语句必须有能改变Until后面条件表达式值的语句,并最终使这个条件表达式的值为真,使循环自动结束。

程序中inc (a) 指令相当于a : =a+1,常用的同类指令格式如下:

(1) inc(x) 等同x:=x+1;

(2) inc(x, n) 等同x:=x+n;

(3) dec(x) 等同x:=x—1;

(4) dec(x,n) 等同x:=x—n;

[例3.10]求两个自然数M和N的最大公约数。

解:若自然数a既是M和约数,又是N的约数,则称a为M和N的公约数,其中最大的称为最大公约数。为了求得最大公约数,可以从最大可能的数(如M或N)向下寻找,找到的第一个公约数即是最大公约数。

Pascal程序:

Program ex310;

Begin

a := N+1;

Repeat

a := a-1;

Until (M mod a=0) and (N mod a=0);

writeln(a);

Readln;

End.

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

解:①设校体操队为X人,根据题意X应是7的倍数,因此X的初值为7,以后用inc(x,7)改变X值;

②为了控制循环, 用逻辑变量yes为真(True) 使循环结束;

③如果诸条件中有一个不满足, yes 的值就会为假(false),就继续循环。

Pascal程序:

program Exam311;

var x: word; yes : boolean;

begin

x:=0;

repeat

yes :=true; inc(x,7);

if x mod 2 < > 1 then yes:=false;

if x mod 3 < > 1 then yes:=false;

if x mod 4 < > 1 then yes:=false;

if x mod 5 < > 1 then yes:=false;

if x mod 6 < > 1 then yes:=false;

until yes; {直到yes的值为真}

writeln('All =', x) ; readln

end.

程序中对每个X值,都先给Yes 赋真值,只有在循环体各句对X进行判断时,都得到“通过”(此处不赋假值)才能保持真值。

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

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

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

(2)用X div 10将刚分离的个数数字删除,并将结果送回给X;

(3)重复(1)(2)直到X=0。

Pascal程序:

Program ex12;

var x,a,s : integer;

begin

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;

[例3.13]求1992个1992的乘积的末两位数是多少?

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

Pascal程序:

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.

[例3.14]尼科彻斯定理:将任何一个正整数的立方写成一组相邻奇数之和。

如: 33=7+9+11=27 43=13+15+17+19=64

解:从举例中发现:

(1) n3正好等于n个奇数之和;

(2) n个奇数中的最小奇数是从1开始的奇数序列中的第m个奇数,与n 的关系为:m=n (n —1) / 2+1。

(3) 奇数序列中第m个奇数的值为x,且x= 2m—1,比如: n=3时,m=3(3-1)/2+1=4,即3个奇数中最小的奇数是奇数序列中的第4个,它的值为x=(2m-1)=7,所以:33=7+9+11。

(4) 从最小的奇数值x开始,逐个递增2,连续n个,用t从1开始计数,直到t=n为止。

Pascal程序:

Program Exam35;

Var n,m,x,t,s : integer;

Begin

write(’input n:’);readln(n);{输入N }

m:=(n*(n-1) div 2)+1; {找到第m个奇数}

x:=2*m-1;t:=1;{算出第m个奇数的值x,是所求的第一个}

write(n’*’,n,’*’,n,’=’,x);{输出第一个}

s:=x; {用S计算和}

if n>1 then

Repeat

inc(x,2);{ 计算下一个奇数}

write (’+ ’,x) ;{加上下一个奇数}

inc (t );inc (s,x);{ 计个数并累加和}

Until t=n;{直到n个}

Writeln (’= ’,s ) ;

Readln

End.

[例3.15]猜价格:中央电视台的“幸运52”栏目深受观众喜爱,其中的“猜商品价格”的节目更是脍炙人口,现在请你编一个程序模拟这一游戏:由计算机随机产生200至5000之间的一个整数,作为某件商品的价格,然后由你去猜是多少,若你猜的数大了,则计算机输出提示“Gao”,若你猜的数小了,则计算机输出提示“Di”,然后你根据提示继续猜,直到你猜对了,计算机会提示“Ok”,并统计你猜的总次数。

解:本题的游戏规则大家都清楚,要完成程序,必须把处理步骤理清:

(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。

Pascal程序:

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

if a=x then writeln(‘Ok’);

Until A=X;

Readln;

End.

第三节While 循环

While循环是当型循环。

[例3.8] 前面第一章[例1.2]的鸡兔同笼,头30,脚90, 求鸡兔各几只?在此用下面方法编程求解。

解: 设鸡为J只,兔为T只。已知头为H, 脚为F。

①让鸡的只数逐次加1进行递推计算,初始时J=0;

②计算兔的只数T=H-J;

③当总脚数(4*T+2*J) < > F就做 (J=J+1,T=H-J);

④当4*T+2*J=F时,说明所推算的J和T是正确的,应结束循环,并输出T, J。

Pascal程序:

Program Exam38;

Const H=30;

F=90;

Var J,T : integer;

Begin

J:=0; T:=H-J; {初始时让J从0开始计算 }

While 4*T+2*J<>F do {当条件为真就做do后面的循环体 }

begin

inc(J); { 递推改变J值 }

T:=H-J {计算兔的只数 }

end;

Writeln('T=',T,' ':6, 'J=', J ) ;

Readln

End.

程序中采用While当型循环,While循环语句的格式为:

While 条件式 do 语句;

其中do后面的“语句”是被重复执行的,称为循环体;若循环体是多个语句,必须用begin--end包起来成为复合语句。

While循环首先判断条件式,当条件式的值为真就执行do 后面的语句(循环体)。

While的循环体内也必须包含能改变控制变量取值语句,影响条件式的值,最终使条件式为false (假),才能结束循环。

[例3.9] 输入任一的自然数A, B, 求A , B的最小公倍数。

解:这里采用适合计算机查找的方法:设D是它们的最小公倍数。先找出A, B当中的较大者并存放在A中,将较小者存放在B中, 让D=A,当D能够整除B时, 则D是所求的最小公倍数;当D不能整除B,就逐次地让D增加A。例如:A=18, B=12,步骤如下:

①让D=A (D=18)

②当(D mod B)<>0 为真时 ( D不能整除B ) 就做 D=D+A, 重复②;

③当(D mod B)<>0 为假时结束循环,并输出D。

Pascal程序:

program Exam39;

var a,b,d,t : word;

begin

write('input a,b: '); readln(a , b);

if a

begin

t:=a; a:=b; b:=t

end;

d:=a;

while d mod b < >0 do {当条件为真时就做do后面的语句 } inc(d,a);

writeln('[', a, ' , ' , b, ']=', d) ;

readln

End.

Pascal语言的三种基本循环方式, for循环对循环范围有明确规定,且循环变量只能是递增加1或递减1自动计数控制;而repeat--until循环和while--do循环比较灵活,只要对条件表达式的值能控制满足一定要求就能组成循环,但在循环体中必须有改变循环变量值的语句,使条件判断(逻辑值)最终为True或flase, 让循环能够终止。

[例3.10]求自然数A, B的最大公约数。

解:采用如下方法步骤:

(1)求A除以B的余数;

(2)当余数<>0就做n=a; a=b; b=n mod b, 重复(1)和(2);

(3)当余数=0就结束循环,并输出b值。

比如a=18, b=12时,处理步骤为:

(1) = ,得余数为6;

(2) 此余数不为零,让a = 12, b = 6;

(3) 重复 = ,得余数为0;

(4) 结束循环,输出6(余数为零时的b值即是所求的最大公约数)。

此方法称为辗转相除法求最大公约数。

Pascal程序:

program Exam310;

var a,b, n : word;

begin

write('input a,b: '); readln (a,b);

write('(', a, ' , ' , b, ')=' ) ;

while a mod b < > 0 do

begin

n:=a; a:=b; b:=n mod b;

end;

writeln(b);

readln

End.

[例3.11]将一根长为369cm的钢管截成长为69cm和39cm两种规格的短料。在这两种规格的短料至少各截一根的前提下,如何截才能余料最少。

解:设两种规格的短料分别为:

规格为69cm的x根,可在1至(369-39)/69范围循环取值;

规格为39cm的y根,用y = (369-69*X)/39)计算;

余料R=369-69*X-39*Y。

①设最小余料的初始值min=369;

②在X循环范围内,每一个X值都计算出对应的Y和R;

③如果R<min, 就将R存入min, x存入n, y存入m,记录余料最小时的x和y ;

④重复步骤②,当x值超出 ((369—39)/ 69) 时结束循环。

Pascal程序:

program exam311;

var x,y,r,min,n,m,a: integer;

begin

min:=369;

a:=(369-39) div 69; x:=1;

while x<=a do

begin

y:=(369-69*x) div 39;

r:=369-69*x-39*y;

if r

begin

min:=r; n:=x; m:=y

end;

inc(x);

end;

writeln('min=', min, ' x=', n, ' y=', m) ;

readln

end.

在有些情况中,三种循环方法可以互相换用。

[例3.12]甲、乙、丙三人都是业余射击爱好者,在一次练习中他们枪枪中靶:甲射了八发子弹,取得225环成绩,乙射了七发,也取得225环;丙只射了六发,同样取得225环。下面是成绩表,请编程完成下表中空项的填数。

解:①设N为发射子弹数, 只有8, 7, 6三个数字,正好又可用来代表甲、乙、丙;

②设A为中50环的子弹数,最小为0, 最大为(225 div 50=4);

B为中35环的子弹数,最小为0, 最大为(225 div 35=6);

C为中25环的子弹数, C=N-A-B, 但必须C>0才可能正确;

③先让N=8, A取值(0~4), B取值 (0~6)用循环逐个选定,在C>0的情况下若能满足条件A*50+B*35+C*25=225就能确定一组填数。然后选N的下一数值,重复同样的过程。

Pascal程序:

program exam312;

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

begin

writeln('n':3, 'a':3, 'b':3, 'c':3, 's':5) ;

n:=8;

while n<=6 do

begin

a:=0;

while a < = 4 do

begin

b:=0;

while b < = 6 do

begin

c:=n-a-b;

if c>0 then

begin

s:=50*a+35*b+25*c;

if s=225 then writeln(n:3,a:3,b:3,c:3,s:5);

end;

inc(b);

end;

inc(a);

end;

dec(n);

end;

readln

end.

程序运行结果获得两组填数答案。如果改用for循环,程序将更加简明:

Program Exam312_1;

Var a,b,c,n,s : Integer;

Begin

Writeln('N':3, 'A':3, 'B':3, 'C':3, 'S':5) ;

for n:=8 downto 6 do {N取值8,7,6,并分别代表甲、乙、丙 }

for a:=0 to 4 do {中50环的可能范围 }

for b:=0 to 6 do {中30环的可能范围 }

begin

c:=n-a-b; { 计算中25环的子弹数 }

if c>0 then begin {如果不是负数 }

s:=50*a+35*6+25*c; {计算总成绩 }

if s=225 then writeln(n:3,a:3,b:3,c:3,s:5);

end

end;

readln

End.

C语言 循环结构程序设计模拟题

第五章循环结构程序设计 一、选择题 1.while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定有能使此表达式的值变为的操作,否则,循环将会无限制地进行下去。(0级) A)0 B)1 C)成立D)2 2.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的不能丢,它表示do-while语句的结束。(0级) A)0 B)1 C);D), 3.for语句中的表达式可以部分或全部省略,但两个不可省略。但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。(0级)A)0 B)1 C);D), 4.程序段如下 int k=-20; while(k=0) k=k+1; 则以下说法中正确的是。(1级) A)while循环执行20次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次5.程序段如下 int k=1; while(!k==0) {k=k+1;printf("%d\n",k);} 说法正确的是。(1级) A)while循环执行2次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次6.以下for循环是。(1级) for(a=0,b=0;(b!=123)&&(a<=4);a++) A)无限循环B)循环次数不定C)执行4次D)执行5次7.在下列程序中,while循环的循环次数是。(1级) main( ) { int i=0; while(i<10) {if(i<1) continue; if(i= =5) break; i++; } ...... } A)1 B)10 C)6 D)死循环、不能确定次数8.程序段如下 int k=0; while(k++<=2) printf("%d\n",k); 则执行结果是。(1级)

循环结构程序设计代码

实验五代码: 基础能力落实: 1)编写一个程序,将用分钟表示的时间转化成以小时和分钟表示的时间。使用#define 或者const来创建一个代表60的字符常量。使用while循环来允许用户重复键入值,并且当键入一个小于等于0的时间时终止循环。要求用while语句 #include int main(void) { const int minperhour = 60; int minutes, hours, mins; printf("Enter the number of minutes to convert: "); scanf("%d", &minutes); while (minutes > 0 ) { hours = minutes / minperhour; mins = minutes % minperhour; printf("%d minutes = %d hours, %d minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d", &minutes); } printf("Bye\n"); return 0; } 2)编写一个程序打印一个表,表的每一行都给出一个整数,它的平方以及它的立方,要求用户输入表的上限和下限。使用一个for循环。 #include int main( void ) { int lower, upper, index; int square, cube; printf("Enter starting integer: "); scanf("%d", &lower);

实验4_循环结构程序设计1题目及解答

4.3 循环结构程序设计1 【(1)题中页码均为《C 语言程序设计教程》中的页码 (2)题后为原程序文件名 (3)仅提交名为【*.c 】的源程序文件,可一起提交,也可逐题提交 】 1、 按照右边给出的流程图用while 语句求1~100之间的偶数之和。(007张三t411.c, 007张三t412.c ) 【提示:参见p89—例4.18 ,并按照下面的左流程图书写007张三t411.c ,右流程图书写007张三t412.c 程序运行结果: s=2550 】 2、 按照右边给出的流程图用while 语句求出所有的水仙花数(如135: 153=13+53+33)。(007张三t42.c )【限制用一重循环实现】 【提示: 程序运行结果: 全部水仙花数如下:??153??370??371??407 】 3、 根据公式,求)(1n n 1 4313212 11 ....+????++++ 的前n 项之和。 (007张三t431.c ,007张三t432.c ) 【提示:参见p90—例4.19了解类似算法的实现 参见p93--例4.18了解do-while 语句的应用 007张三t431.c---用while 语句实现, 007张三t432.c 用do —while 语句实现 程序运行时: 程序运行结果: 请输入n :10? 前10项之和=0.91 请输入n :20? 前20项之和=0.95 】

4、求1!+2!+……+n!(007张三441.c和007张三442.c)【要求n≤10】 【提示:参见p90—例4.20,注意当n=10时,结果超过int 的最大值,建议用长整型(long int--%ld)007张三441.c---用while语句实现, 007张三442.c 用do—while语句实现 程序运行时:程序运行结果: 请输入n:1?1!~1!之和=1 请输入n:3?1!~3!之和=9 请输入n:10?1!~10!之和=4037913 请输入n:20?20超出本程序的求解范围! 请输入n:0?0超出本程序的求解范围! 】 5、输出个位数字是6,且能被3整除的所有3位数(007张三45.c)【要求:输出时,每个数字占4位,右对齐】 程序运行结果: 附加题: 1、编制一个能破解4位数字组成的数字密码的程序(即密码不能以0开头),假设数字密码为:1234(007张三4附加1.c)。【程序运行结果: 密码是:1234 】 2、鸡兔同笼问题,已知鸡和兔的总头数为a,总脚数为b,求鸡和兔的有多少只?(007张三4附加21.c,007张三4附加 22.c)【要求:(1)用循环结构实现,存于007张三4附加21.c (2)顺序结构实现,存于007张三4附加22.c 【程序运行时:程序运行结果: 请输入鸡和兔的总头数和总脚数:4 8?当4个头,8只脚时:鸡4只, 兔0只 请输入鸡和兔的总头数和总脚数:4 12?当4个头,12只脚时:鸡2只, 兔2只 】

循环结构程序设计典型例题

循环结构程序设计典型例题 例1有数列2/3、4/5、6/9、10/15……求此数列前30项的和。 算法分析: 对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,用for语句来编写比较方便。 此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一 项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前30项的和,循环执行30次。 1.初值i=2,j=3,s=0; 2.用n从1到30循环 3.s=s+ i/j; 4.c=i; i=j+1; j=c+j; 5输出s; 程序: #in clude mai n() { int i=2,j=3, n,c; float s=0; for(n=1; n<=30 ;n++) { s=s+(float)i/j; c=i; i=j+1; j=c+j; } printf( "n%f” ,s); } 此题中的n与循环体中的执行语句没有数值上的联系,仅仅用做决定循环执行的次数。 例2:下面这个程序,想想它实现的是什么功能? #in clude mai n() { int i,s=0; for(i=1;i<=100;i++) {if(i%5==0) continue; s=s+i; } printf( n“d' ,s); } 在左边的程序中,i从1到100循环,当i是5的倍数时,直接进入下一个i,当i不是5的倍数时,把i累加到s,最后输出s。所以,这个程序实现的是求1~100中间所有非5的倍数的数之和。 例3:输出n~m中(0<*m)能被3整除,且至少有一个数字是5的所有数。 算法分析:

循环结构程序设计课后习题及答案

循环结构程序设计习题及答案 1、循环语句的三要素分别是、、。 2、for语句括号内的3个表达式的作用分别 是、、。 3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整 地,只有当时,才结束整个循环。 4、在循环结构中,break语句的作用是;continue语句的作用是。 5、当循环条件一开始就为假时,对于while语句、do…while语句、for语句,分别执行循环体次、次、次。 6、下面程序段的执行次数: int a=0; while(a=0) { printf("good\n"); a--; } 7、下面程序段的执行次数: int a=0; while(a==0) { printf("good\n"); a--; } 8、下面程序段的执行次数: int a=1; while(a=1) { printf("good\n"); a++; } 9、下面程序段的执行次数: int a=1; while(a==1) { printf("good\n"); a++; } 10、下列程序段的运行结果是。 for(i=5;i>=0;i--) printf(“%d “,i); 11、下列程序段的运行结果是。 for(n=1;n<20;n=n+3) printf(“%d “,n); 12、下列程序段的运行结果是。 for( ch='a' ;ch<='e' ;ch++) printf(“%d“,ch-97);

13、下列程序段的运行结果是。 for(i=1,j=5 ; i100) break; } C、int a=0; D、int x=21; do while(x) { ++a; --x; }while(a>=0); 三、阅读程序,写出程序运行结果。 1、#include"stdio.h" main() { int i=0,sum=1; do { sum+=i; i++; }while(i<5); printf("%d\n",sum); } 程序运行结果: 2、 #include"stdio.h" main() { int a,b;

Java_循环结构二_教案

第6章循环结构二 一、整章授课思路 ........................................................................................................................... - 2 - 二、回顾、预习检查、任务、目标部分: [10分钟] ...................................................................... - 3 - 三、课程知识点讲解: ................................................................................................................... - 3 - 1.for循环结构:[30分钟] .............................................................................................................................. - 3 - 2.关键字break和continue:[20分钟] .......................................................................................................... - 4 - 3.二重循环:[30分钟] .................................................................................................................................... - 5 - 四、本章总结[10分钟] ................................................................................................................ - 6 - 五、学员问题汇总 ........................................................................................................................... - 6 - 六、作业 ........................................................................................................................................... - 6 -

循环结构程序设计典型例题

循环结构程序设计典型例题 例1:有数列2/3、4/5、6/9、10/15……求此数列前30项的和。 算法分析: 对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,用for语句来编写比较方便。 此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前30项的和,循环执行30次。 1. 初值i=2,j=3,s=0; 2. 用n从1到30循环 3. s=s+ i/j; 4. c=i; i=j+1; j=c+j; 5.输出s; 程序: #include<> main( ) { int i=2,j=3,n,c; float s=0; for(n=1;n<=30;n++) { s=s+(float)i/j; c=i; i=j+1; j=c+j; } printf(“\n%f”,s); } 此题中的n与循环体中的执行语句没有数值上的联系,仅仅用做决定循环执行的次数。 例2:下面这个程序,想想它实现的是什么功能? #include<> main( ) { int i,s=0; for(i=1;i<=100;i++) {if(i%5==0) continue; s=s+i; } printf(“\n%d”,s); } 在左边的程序中,i从1到100循环,当i是5的倍数时,直接进入下一个i,当i不是5的倍数时,把i累加到s,最后输出s。所以,这个程序实现的是求1~100中间所有非5的倍数的数之和。 例3:输出n~m中(0

循环结构(答案)

第4章循环结构 一、选择题 1、有以下程序段 int k=0; while(k=1)k++; while 循环执行的次数是( A) A) 无限次B) 有语法错,不能执行 C) 一次也不执行D) 执行1次 2、t为int类型,进入下面的循环之前,t的值为0 while( t=1) { …… } 则以下叙述中正确的是( B) A) 循环控制表达式的值为0 B) 循环控制表达式的值为1 C) 循环控制表达式不合法 D) 以上说法都不对 3、在C程序中,与while(m)中表达式m完全等价的是(B ) A) m==0 B) m!=0 C) m==1 D) m!=1 4、有以下程序,程序运行后的输出结果是(C )。 main() {int i=1,sum=0; while(i<=4) { sum=sum+i; i=i+1; } printf(“%d\n”,sum);} A)4 B)5 C)10 D)死循环 5、有以下程序,程序运行后的输出结果是(D )。 main() { int i=1,sum=0; while(i<=4) sum=sum+i; i=i+1; printf(“%d\n”,sum); } A)4 B)5 C)10 D)死循环 6、有如下程序 main(){ int n=9; while(n>6){n--;printf(“%d”,n);} } 该程序段的输出结果是(B) A) 987 B) 876 C) 8765 D) 9876

7、以下程序的输出结果是( B ) main() { int num= 0; while(num<=2) { num++; printf(“%d\n”,num);} } A) 1 B) 1 C)1 D) l 2 2 2 3 3 4 8、有以下程序,若运行时输入<回车>,则输出的结果是( B)。main() {float x,y,z; scanf(“%f%f”,&x,&y); z=x/y; while(1){ if(fabs(z)> { x=y; y=z; z=x/y;} else break;} printf(“%f\n”,y);} A) B)1.600000 C) D) 9、执行以下程序段时 x=-1; do { x=x*x; } while(! x); 则下面描述正确的是(A ) A) 循环体将执行一次B) 循环体将执行两次 C) 循环体将执行无限次D) 系统将提示有语法错误 10、有以下程序段其输出结果是(C ) int x=3; do { printf("%d",x-=2); } while (!(--x)); A) 1 B) 3 0 C) 1 -2D) 死循环 11、有如下程序 main(){ int x=23; do {

循环结构1

第一节for 循环 for循环是一种自动计数型循环。 [例3.1] 试打印出1~20的自然数。 解:①用a代表1~20各数,同时也用a兼作计数,以控制循环次数; ②让a从1开始; ③输出a; ④a自动计数(加1),如果未超越所规定的循环范围则重复步骤③,否则结束循环。 Pascal程序: Program Exam12; Var a: byte; Begin for a:=1 to 20 do Writeln (a); Readln End. 程序中for a:=1 to 20 do Writeln (a);是for循环语句。 for 循环语句有两种格式: (1) for循环变量:=初值To 终值do 语句; (2) for循环变量:=初值downto 终值do 语句; 第(1)种格式的初值小于等于终值,循环变量值按自动加1递增变化; 第(2)种格式的初值大于或等于终值,循环变量值按自动减1递减变化。for 循环是(以递增1或以递减1) 计数型循环。 比如: 若将[例3.1]程序改为倒计数(递减)循环,则输出20~1的自然数数: Program Exam31; Var a: byte; Begin for a:=20 downto 1 do Writeln(a) ; Readln End. [例3.2]打印出30至60的偶数。] 解: 方法一: = 1 \* GB3 ①设a表示30至60的所有的数,可用for循环列出; = 2 \* GB3 ②用式子 a mod 2=0筛选出其中的偶数并输出。 Pascal程序: Program ex32; Var a : integer; Begin For a := 30 to 60 do If (a mod 2=0) then writeln(a);

实验2-循环结构题目

实验2 循环结构 程序填空 1. 本题分值:10 题目描述:马克思曾经出过这样一道趣味数学题:有30个人在一家小饭馆里用餐,其中有男人、女人和小孩。每个男人花了3先今,每个女人花了2先令,每个小孩花了1先令,一共花去50先令。问男人、女人以及小孩各有几个人。以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上调试程序,以测试填入的部分是否正确。 代码: #include using namespace std; int main() { int n; //n记录解的个数 int a,b,c; //分别记录男、女、小孩的人数 n=__(1)__; //初始化n的值 for(a=1;a<=30;a++) { for(b=1;b<=30;b++) { c=__(2)__; if( __(3)__ ) { cout<<"男人有:"< using namespace std;

{ int n, k=1, s=0, m ; for (n=1 ; n<=100 ; n++) { k=1 ; s=0 ; __(1)__; while ( __(2)__ ) { k*=m%10; s+=m%10; __(3)__; } if (k>s) cout< using namespace std; int main() { int n,s,i,count=0; cout<<"1000以内的完数为:"; for(n=1;n<1000;n++) { s=0; for(i=1;i

循环结构 Word版含解析 (1)

课时作业(五) 1.下列说法不正确的是() A.顺序结构是由若干个依次执行的处理步骤组成的,每一个算法都离不开顺序结构B.循环结构中一定包含条件结构 C.循环结构中不一定包含条件结构 D.循环结构中反复执行的步骤叫做循环体 ★答案★ C 解析循环结构不能是永无终止的“死循环”,一定要在某个条件下终止循环,这就需要条件结构来做出判断,故循环结构中一定包含条件结构.所以选C. 2. 如图所示是一个循环结构的算法,下列说法不正确的是() A.①是循环变量初始值,循环就要开始 B.②为循环体 C.③是判断是否继续循环的终止条件 D.①可以省略不写 ★答案★ D 解析①②③都是循环结构中必须具备的. 3. 读右图所示的程序框图,运行相应的程序,输出的结果是() A.2B.4 C.8 D.16 ★答案★ C 解析输入S=2,n=1;当n=1时,S= 1 1-2 =-1;

当n =2时,S =11-(-1)=12 ;当n =4时,S =1 1-12=2,n =8. 符合条件,故输出8. 4.某程序框图如图所示,若输出的S =57,则判断框内为( ) A .k>4? B .k>5? C .k>6? D .k>7? ★答案★ A 解析 第一次执行后,k =2,S =2+2=4;第二次执行后,k =3,S =8+3=11;第三次执行后,k =4,S =22+4=26;第四次执行后,k =5,S =52+5=57,此时结束循环,故判断框中填k>4?. 5.(高考真题·全国新课标Ⅰ卷)执行下面的程序框图,如果输入的N 是6,那么输出的p 是 ( ) A .120 B .720 C .1 440 D .5 040 ★答案★ B 解析 由程序框图可得,输出的p =1×2×3×4×5×6=720. 6.如图所示,程序框图所进行的求和运算是( )

循环结构程序设计:三种循环语句

一、循环结构(Iteration Structure)的概述 1.目的 为了解决含有重复处理内容的问题,必须采用循环语句(Loop Statement)来编程实现。 2.类型 (1)当型循环结构 (2)直到型循环结构 二、循环语句 1.while语句 ①功能:实现当型循环结构。 ②形式 while(表达式){ 循环体 } ③特点:先判断后执行。 ④举例:(累加和问题)编程计算整数1~100的和。 int i ; //循环变量 int sum = 0 ; //累加和清0 i = 1 ; //循环变量i赋初值 while( i <= 100){ sum = sum + i ; //循环变量累加到sum中 i = i + 1; //改变循环变量i的值 } 2.do-while语句 ①功能:实现直到型循环结构。 ②形式 do{ 循环体

}while(表达式); //注意最后的分号 ③特点:先执行后判断。 ④举例:修改上例。 /*利用do-while语句编程实现整数1~100的和。*/ int i ; //循环变量 int sum = 0 ; //累加和清0 i = 1 ; //循环变量i赋初值 do{ sum = sum + i ; //循环变量累加到sum中 i = i + 1; //改变循环变量i的值 }while(i<=100);//注意最后的分号 3.for语句 ①功能:实现当型循环结构。 ②形式 for(表达式1;表达式2;表达式3){ 循环体 } ③特点:先判断后执行;使用频率最高。 ④举例:修改上例。 /*使用for语句编程计算整数1~100的和。*/ int i ; //循环变量 int sum = 0 ; //累加和清0 for( i = 1 ; i <=100 ; i++ ){//第一个表达式完成循环变量i赋初值;第三个表达式实现改变循环变量i的值 sum = sum + i ; //循环变量累加到sum中 } 4.几种循环语句的比较 ①由于while语句和for语句均实现当型循环结构,两者是完全等价的。 for(表达式1;表达式2;表达式3){

循环结构程序设计课后习题及答案

循环结构程序设计习题及答案1、循环语句的三要素分别 是、、。 2、for语句括号内的3个表达式的作用分别 是、、。 3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整地,只有当时,才结束整个循环。 4、在循环结构中,break语句的作用是;continue语句的作用是。 5、当循环条件一开始就为假时,对于while语句、do…while语句、for 语句,分别执行循环体次、次、 次。 6、下面程序段的执行次数: int a=0; while(a=0) { printf("good\n"); a--; } 7、下面程序段的执行次数: int a=0; while(a==0)

{ printf("good\n"); a--; } 8、下面程序段的执行次数: int a=1; while(a=1) { printf("good\n"); a++; } 9、下面程序段的执行次数: int a=1; while(a==1) { printf("good\n"); a++; } 10、下列程序段的运行结果是。 for(i=5;i>=0;i--) printf(“%d “,i); 11、下列程序段的运行结果是。 for(n=1;n<20;n=n+3) printf(“%d “,n); 12、下列程序段的运行结果是。

for( ch='a' ;ch<='e' ;ch++) printf(“%d“,ch-97); 13、下列程序段的运行结果是。 for(i=1,j=5 ; i

循环结构(答案)

作业3 循环结构学号姓名 1.有以下程序 main() { int y=10; while(y--); printf("y=%d\n",y); } 程序执行后的输出结果是B A)y=0 B)y=-1C)y=1 D)while构成无限循环2.有以下程序 main() { int k=5; while(--k) printf("%d",k-=3); printf("\n"); } 执行后的输出结果是A A)1 B)2 C)4 D)死循环 3.若变量已正确定义,有以下程序段 i=0; do printf("%d,",i); while(i++); printf("%d\n",i) 其输出结果是B A)0,0 B)0,1 C)1,1 D)程序进入无限循环4.有以下程序段D int n,t=1,s=0; scanf("%d",&n); do{ s=s+t; t=t-2; }while (t!=n); 为使此程序段不陷入死循环,从键盘输入的数据应该是 A)任意正奇数B)任意负偶数C)任意正偶数 D)任意负奇数 5.有以下程序 #include main() { int x=8; for( ; x>0; x--) { if(x%3) {

printf("%d, ",x--); continue; } printf("%d, ",--x); } } 程序的运行结果是D A)7,4,2 B)8,7,5,2 C)9,7,6,4 D)8,5,4,2 6.以下不构成无限循环的语句或者语句组是A A)n=0; B)n=0; do{++n;}while(n<=0); while(1){n++;} C)n=10; D)for(n=0,i=1; ;i++) n+=i; while(n); {n--;} 7.有以下程序 main( ) { int i,n=0; for(i=2;i<5;i++) { do { if(i%3) continue; n++; } while(!i); n++; } printf("n=%d\n",n); } 程序执行后的输出结果是D A)n=5 B)n=2 C)n=3 D)n=4 8.有以下程序 main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2) continue; x++;

实验三 循环结构程序设计(教案)

实验教案 一、实验目的 (1) 掌握while、do~while、for语句的使用。 (2) 掌握循环体内使用break、continue语句的作用。 (3) 掌握循环及嵌套循环结构的程序设计方法。 二、实验准备 1.C语言实现循环的方法 ①goto 和if 构成的循环:由于goto是无条件转向,不符合结构化程序设计思想,所以不建议使用。 ②while循环:实现“当型”循环,首先判断循环条件,当条件为真,执行循环体,再判断循环条件……此种循环有可能一次也不执行循环体。 ③do~while循环:实现“直到型”循环,与while循环的区别是先执行循环体,再判断循环条件,当循环条件为真,再执行循环体……此种循环至少执行一次循环体。 ④for循环:与while循环类似,一般用于知道循环变量初值、终值及步长值的循环。 2.break 和continue 语句 ①break 语句:可用在循环体或switch语句中,作用是跳出其所在的控制结构。若是在循环体中,则是跳出其所在的循环,使得循环不止一个出口。 ②continue语句:只能用在循环体中,其作用是结束本层本次循环,注意不是退出循环。 3.阅读以下程序,并分析其功能,调试运行程序后再分析其运行结果。 ①掌握三种方法求1到100的累加和。 文件名为ex3-1-1.c,内容如下: # include main() { int sum=0,i=1; while(i<=100) sum+=i++; // 等价于:{ sum=sum+i; i++; } printf("sum is %d\n",sum); } 文件名为ex3-1-2.c,内容如下: # include main() { int sum=0,i=1; do sum+=i++; while(i<=100); printf("sum is %d\n",sum); } 文件名为ex3-1-3.c,内容如下: # include main()

水循环基本过程

水循环基本过程 水循环是指地球上各种形态的水,在太阳辐射、地心引力等作用下,通过蒸发、水汽输送、凝结降水、下渗以及径流等环节,不断地发生相态转换和周而复始运动的过程。 从全球整体角度来说,这个循环过程可以设想从海洋的蒸发开始;蒸发的水汽升入空中,并被气流输送至各地,大部分留在海洋上空,少部分深入内陆,在适当条件下,这些水汽凝结降水。其中海面上的降水直接回归海洋,降落到陆地表面的雨雪,除重新蒸发升入空中的水汽外,一部分成为地面径流补给江河、湖泊,另一部分渗入岩土层中,转化为壤中流与地下径流。地面径流,壤中流与地下径流,最后亦流入海洋,构成全球性统一的,连续有序的动态大系统。 为全球海陆间水循环过程的概化图。整个过程可分解为水汽蒸发、水汽输送、凝结降水、水分入渗,以及地表、地下径流等5个基本环节。这5个环节相互联系、相互影响,又交错并存、相对独立,并在不同的环境条件下,呈现不同的组合,在全球各地形成一系列不同规模的地区水循环。 水循环机理 第一,水循环服从于质量守恒定律。整个循环过程保持着连续性,既无开始,也没有结尾。从实质上说,水循环乃是物质与能量的传输、储存和转化过程,而且存在于每一环节。在蒸发环节中,伴随液态水转化为气态水的是热能的消耗,伴随着凝结降水的是潜热的释放,所以蒸发与降水就是地面向大气输送热量的过程。据测算,全球海陆日平均蒸发量为1.5808万亿立米,是长江全年入海径流量的1.6倍,蒸发这些水汽的总耗热量高达3.878×1021 焦耳,如折合电能为10.77×1014千瓦时,等于1990年全世界各国总发电量的近100倍,所以地面潜热交换成为大气的热量主要来源。由降水转化为地面与地下径流的过程,则是势能转化为动能的过程。这些动能成为水流的动力,消耗于沿途的冲刷,搬运和堆积作用,直到注入海洋才消耗殆尽。 第二,太阳辐射与重力作用,是水循环的基本动力。此动力不消失,水循环将永恒存在,水的物理性质,在常温常压条件下液态、气态、固态三相变化的特性是水循环的前提条件;外部环境包括地理纬度、海陆分布、地貌形态等则制约了水循环的路径、规模与强度。 第三,水循环广及整个水圈,并深入大气圈、岩石圈及生物圈。其循环路径并非单一的,而是通过无数条路线实现循环和相变的,所以水循环系统是由无数不同尺度、不同规模的局部水循环所组合而成的复杂巨系统。 第四,全球水循环是闭合系统,但局部水循环却是开放系统。因为地球与宇宙空间之间虽亦存在水分交换,但每年交换的水量还不到地球上总贮水量的1/15亿,所以可将全球水循环系统近似的视为既无输入,又无输出的一个封闭系统,但对地球内部各大圈层,对海洋、陆地或陆地上某一特定地区,某个水体而言,既有水分输入,又有水分输出,因而是开放系统。 第五,地球上的水分在交替循环过程中,总是溶解并携带着某些物质一起运动,诸如溶于水中的各种化学元素、气体以及泥沙等固体杂质等。不过这些物质不可能象水分那样,构成完整的循环系统,所以通常意义上的水文循环仅指水分循环,简称水循环。

循环结构程序设计(1)

实验报告_实验5 循环结构程序设计(1)(学号_姓名) 一、实验目的: 1、熟悉循环结构的循环控制部分和循环体部分; 2、掌握for语句、while语句、do…while语句的使用,并能相互代替; 3、熟悉累加、连乘积、分类统计等算法,能根据实际需要构建循环语句; 4、熟悉随机函数rand()、三角函数sin(x)、cos(x)的使用。 二、实验内容 1、(基础题)用for语句编写程序,计算1-3+5-7+…-99+101的值。 程序代码: #include int main() { int sign=-1,sum=0; int i; for(i=1;i<=101;i+=2) { sign=-sign; sum=sum+sign*i; } printf("1-3+5-7+…--99+101=%d\n\n",sum); while(1); return 0;

2、(基础题)用while语句编写程序,如下图所示:输出角度0、10、20、30、……180的正弦、余弦值。 程序代码: #include #include #define PI 3.1415926 int main()

int i=10; double x; while(i<=180) { x=i/180.0*PI; printf("角?度¨¨: %4d\t",i); printf("正y弦¨°: %10.6f\t",sin(x)); printf("余?¨¤弦¨°: %10.6f\n",cos(x)); i+=10; } return 0; }

第五章循环结构的程序设计补充习题(1)

第五章循环结构的程序设计补充习题(1) 一、单选题 1. 以下叙述正确的是 A) do-while语句构成的循环不能用其它语句构成的循环来代替。 B) do-while语句构成的循环只能用break语句退出。 C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。 2. 设有程序段 int k=10; while(k=0) k=k-1; 则下面描述中正确的是。 A)while循环执行10次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次 3. 有如下程序 main() { int x=23; do { printf("%d",x--);} while(!x); } 该程序的执行结果是 A) 321 B) 23 C) 不输出任何内容D) 陷入死循环 4. 有如下程序 main() { int n=9; while(n>6) {n--;p rintf(“%d”,n);} } 该程序段的输出结果是 A) 987 B) 876 C) 8765 D) 9876 5. 有以下程序 main() { int s=0,a=1,n; scanf("%d",&n); do { s+=1; a=a-2; } while(a!=n); printf("%d\n",s); } 若要使程序的输出值为2,则应该从键盘给n输入的值是 A)-1 B)-3 C)-5 D)0 6.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是 A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c; 7. 标有/**/的语句的执行次数是: int y , i ; for(i=0;i<20;i++) { if( i%2==0) continue ; y+=i ; /**/ } A) 20 B)19 C)10 D) 9 8.要求以下程序的功能是计算:s= 1+1/2+1/3+……+1/10 main()

程序的循环结构(一)for循环(1)

2.4 程序的循环结构(一) ------ For-Next循环结构教学方案设计教学时间:2017年4月24日下午第三节 授课教师:李通德 教学地点:计算机教室105 课题:程序的循环结构(一)---For-Next循环 一、教学设计思想 本节课先通过创设情境,设置悬念,吸引学生的注意力,引起学生的学习兴趣,再提出学习任务和要求,让学生带着问题进入下一环节的学习。 在教学过程中,重点引导学生从生活中的实际问题出发,发现生活中已有的问题,思考如何联系所学的知识来解决问题,将学习到的知识与生活实际问题紧密联系起来。 整个教学设计过程强调以学生为主体,但并不忽略老师的主导作用,学生是信息加工的主体,是知识意义的主动建构者,教师则是教学过程的组织者、指导者,教师要对学生的意义建构过程起促进和帮助作用。 二、教学目标 1.知识与技能 (1)掌握For-Next循环结构的一般格式和使用方法; (2)结合For-Next循环语句的执行流程图理解For循环结构程序的执行过程; (3)能对简单的For-Next循环程序进行分析和就具体问题使用For-Next循环结构编写简单的程序。 2.过程与方法 (1)从生活中的实际问题出发创设情景,经历分析、实践、讲解、探究、归纳,通过循序渐进、层层深入,逐步深化对循环思想和执行过程的理解; (2)在教师提示下学生联系所学的知识点上机操作,进而完成知识的巩固。 3.情感态度与价值观 本节课所创设的悬疑式的教学情境、设计以学生为主体的教学活动以及所营造的教学氛围能够激发学生学习的动机,充分调动学生学习信息技术的兴趣,并能够培养学生的自主学习的能力和发现解决问题的能力,提高他们的逻辑思维能力和分析问题的能力,激发学生的学习热情。 三、教学内容分析 《VB循环结构》是本章内容的一个重点及难点内容。For-Next循环结构的程序设计既需要前面知识的铺垫,同时还要学生打破之前的思维习惯,因此在讲授的过程中有一定的难度,要让学生多去实践、多去探究,让他们在主动学习中理解、体验和感受,提高自身的能力。 四、学生分析

相关文档
最新文档