文档库 最新最全的文档下载
当前位置:文档库 › 循环结构程序设计练习题内含答案

循环结构程序设计练习题内含答案

循环结构程序设计练习题内含答案
循环结构程序设计练习题内含答案

第三单元循环结构练习题

选择题:

1、有以下程序执行后的输出结果是( D )。

main( )

{ int i,s=0; for(i=1;i<10;i+=2)

s+=i+1;

printf("%d\n",s);}

A.自然数 1~9的累加和B.自然数 1~10 的累加和

C.自然数 1~9中的奇数之和D.自然数 1~10 中的偶数之和

2、以下关于 for 语句的说法不正确的是( A )。

A. for循环只能用于循环次数已经确定的情况

B. for循环是先判断表达式,后执行循环体语句

C. for循环中,可以用 break 跳出循环体

D. for循环体语句中,可以保含多条语句,但要用花括号括起来

3、若 i和 k 都是 int 类型变量,有以下 for语句

for(i=0,k=-1;k=1;k++) printf("*****\n");

下面关于语句执行情况的叙述中正确的是(d)。

A. 循环体执行两次

B.循环体执行一次

C.循环体一次也不执行

D. 构成无限循环

4、以下程序程序的执行后的输出结果是(c)。

main()

{int i,t[][3]={9,8,7,6,5,4,3,2,1};

for(i=0;i<3;i++) printf(“%d”,t[2 -i][i]);}

A.753

B.357

C.369

D.751

5、以下程序运行后的输出结果是( A )。

void fun(char*s)

{ while(*s)

{ if(*s%2==0)printf(“%c”,*s);s++;}

}

main()

{ char a[]={“good”};fun( a) ;printf(“ n”);}

注意:字母 a 的 ASCⅡ码值为 97

A.d

B.go

C.god

D.good

6、已知 int t=0 ; while ( t=1 ){...}则以下叙述正确的是( B)。

A)循环控制表达式的值为 0

B)循环控制表达式的值为 1

C)循环控制表达式不合法

D)以上说法都不对

7、设有以下程序段 B

int x=0,s=0;

while (!x!=0 ) s+=++x;

printf ( "%d",s );则

A)运行程序段后输出0

B)运行程序段后输出 1

C)程序段中的控制表达式是非法的

D)程序段执行无限次

8、设 i ,j ,k 均为 int型变量,则执行完下面的 for 语句后, k 的值为( C)。for ( i=0, j=10; i<=j; i++, j- -) k=i+j;

A.6

B.9

C.10

D.11

9、C语言中, break;语句可以用于循环语句和 ( B )语句中。

A.if

B.switch

C.for

D.while

10、for(i=0; i<=15;i++) printf("%d",i ); 循环结束后, i 的值为( C)。

A.14

B.15

C.16

D.17

11.有以下程序 ( B )

main()

{ char b,c; int i; b='a'; c='A';

for(i=0;i<6;i++)

{ if(i%2) putchar(i+b);

else putchar(i+c);

} printf("\n");}

程序运行后的输出结果是()

A. ABCDEF

B. AbCdEf

C. aBcDeF

D. abcdef

12、与语句“while(!x)”等价的语句是( A )。

A. while(x==0)

B.while(x!=0)

C.while(x==1)

D.while(x!=1)

13、下述程序段中,while循环执行次数是( A )。(分情况这题有问题);int k=0;

while(k=1) k++

A. 无限次

B.有语法错误,不能执行

C. 一次也不执行

D.执行一次

14、以下程序中, while 循环的次数是( b )。

#include

void main( )

{int i=0;

while(i<10) { if(i<1) continue; if(i= =5)break; i++;}}

A. 1

B.死循环,不能确定次数

C. 6

D. 10

15.下面程序段

int k=2;

while (k=0) {printf(“%d”,k);k--;}

则下面描述中正确的是

A ) while 循环执行 10 次

C )循环题语句一次也不执行

16. 以下程序段的循环次数是。

B)循环是无限循环

D)循环体语句执行一次B。

for (i=2; i==0; )printf(“%d”, i--) ;

A )无限次B)0次

17. 下面程序的输出结果是B C )1 次

D)2 次

main ( )

{ char c='A’;

int k=0;

do {

switch (c++) {

case ‘A’

case ‘B’

case ‘C’

case ‘D’

case ‘E’default : k/=3 ;: k++ ; break ;

: k-- ;

: k+=2 ; break ;

: k%=2 ; continue ; : k*=10 ; break ;

}

k++;

} while (c<’G’) ;

printf (“k=%d”,k) ;

}

A ) k=3 B)k=4C)k=2D)k=0

19.下面程序的输出结果是。 B

main ( )

{ int x=9;

for (; x>0; x--) {

if (x%3==0) {

printf( “%d”,--x);

continue ;

} } }

A )741B)852C)963D)875421

20. int i=100;以下不是死循环的程序段是。A

A ) while (1) {i=i%100+1 ;if (i>100) break ;} B)for ( ; ; ) ;

C ) int k=0; do { ++k; } while (k>=0); D)int s=36;while(s) ;--s ;

21. 下述程序段的运行结果是C。

int a=1,b=2, c=3, t=4;

while (a

A ) 1,2,0B)2,1,0C)1,2,1D)2,1,1

22.下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个

数,选择 A 填空。 main ( )

{ int m=0,n=0;

char c;

while ((【】) !’ n’)

{

if (c>= ’A’ && c<= ’Z’) m++;

if (c>= ’a’ && c<= ’z’) n++;

} }

A ) c=getchar()B) getchar()C) c==getchar()D)scanf( “%c”,&c)

23. 下述语句执行后,变量k 的值是。A

while (k++<10) int k=1; ;

A )10B)11

24. 下面程序的输出结果是C)9D

。------B------ (

)无限循环,值不定

太麻烦不做了哎,还是

作罢!! )

main ( )

{ int k=0,m=0,i,j;

for (i=0; i<2; i++) {

for (j=0; j<3; j++)

k++ ;

k-=j ;

}

m = i+j ;

printf( “k=%d,m=%d”,k,m) ;

}

A ) k=0,m=3

B )k=0,m=5

C ) k=1,m=3

D )k=1,m=5

25.下面 for 循环语句。 B

int i,k;

for (i=0, k=-1; k=1; i++, k++)

printf(“***”);

A )判断循环结束的条件非法B)是无限循环

C )只循环一次D)一次也不循环

26. 语句 while (!E);括号中的表达式!E等价于A

A ) E==0

B )E!=1 C)E!=0D)E==1

27.以下是死循环的程序段是。A A )

for (i=1; ; ) {

if (i++%2==0) continue ;

if (i++%3==0) break ;

}

B) i=32767; do { if (i<0) break ; } while (++i) ;

C) for (i=1 ; ;) if (++I<10) continue ;

D. i=1 ; while (i--);

28. 执行语句 for (i=1;i++<4;) ;后变量i的值是

A)3 B)4C)5D)不定

B。

29.以下程序段。 A

x=-1;

do

{ x=x*x; }

while (!x);

A )是死循环

B )循环执行 2 次

C )循环执行 1 次

30. 下面程序的功能是在输入的一批正数中求最大者,输入D )有语法错误

0 结束循环,选择填

空。C main ( )

{ int a,max=0;

scanf(“%d”,&a);

while ( printf(【】) { if (max

“%d”,max);}

scanf (“%d”,&a);}

A ) a==0 B)a C)!a==1D)!a

31.以下不是死循环的语句是。A A )

for (y=9,x=1;x>++y;x=i++) i=x ; B )

for ( ; ; x++=i ) ;

C) while (1) { x++ ; }

D) for (i=10 ; ; i--) sum+=i ;

32.下面程序段的运行结果是。 ( 自己算算吧不难! )

x=y=0;

while (x<15) y++,x+=++y ;

printf(“%d,%d”,y,x);

A ) 20,7 B)6,12C)20,8D)8,20

33. 以下 for循环的执行次数是C。

for (x=0,y=0; (y=123) && (x<4) ; x++) ;

A )无限循环

B )循环次数不定

C )4 次

D )3 次

34.若运行以下程序时,输入 2473↙,则程序的运行结果是。 A main ( )

{ int c;

while ((c=getchar( )) ! =’ n’)

switch (c-‘2’) {

case 0 :

case 1 : putchar (c+4) ;

case 2 : putchar (c+4) ; break ;

case 3 : putchar (c+3) ;

default : putchar (c+2) ; break ;

}

printf( “ n”);

}

A ) 668977

B )668966

C )66778777

D ) 6688766

读程题:

1. 以下程序的输出结果是357。

main( )

{ int i,x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0; i<3; i++) printf("%d ",x[i][2-i]);

}

2. 以下程序的输出结果是0。

main()

{ int n[2] ,i ,j ;

for(i=0;i<2 ; i++)n[i]=0;

for(i=0;i <2;i++)

for(j=0;j<2 ; j++)n [j ]=n「 i 」+ 1;

printf( ”% n”, n[1]);}

3. 以下程序的输出结果是 3 5 7。

main()

{ int i, a[6]={2,3,4,5,6,7};

for(i=1; i<6; i+=2)

printf("%d ", a[i]);

}

4. 以下程序的输出结果是7800

4 5 6

2 0。

main()

{ int i, j, a[3][4]={{0,1,2},{3,4,5,6},{7,8}};

for(i=0;i<3;i++)

{ for(j=i;j<4;j++)

printf("%5d", a[2-i][j]);

printf("\n"); }

}

5、以下程序的输出结果是3。

main()

{ char s[ ]="012xy\08s34f4w2";

int i,n=0;

for(i=0;s[i]!=0;i++)

if(s[i]>='0'&&s[i]<='9') n++;

printf("%d\n",n); }

———— 20 70 ————6. 写出下面程序运行的结果。

main ( )

{ int x,i ;

for (i=1 ; i<=100 ; i++) {

x=i;

if (++x%2==0)

if (++x%3==0)

if(++x%7==0)

printf( “%d ”,x) ; }}

7.写出下面程序运行的结果。-------3 -1-----

main ( )

{ int i,b,k=0 ;

for (i=1; i<=5 ; i++) { b=i%2; while (b--) k++ ; }

printf( “%d,%d”,k,b);}

8. 写出下面程序运行的结果。----1-----

main ( )

{ int a,b;

for (a=1,b=1 ; a<=100 ; a++) {

if (b>=20) break;

if (b%3==1) { b+=3 ; continue ; }

b-=5;

}

printf( “%d n”,a);}

9. 写出下面程序运行的结果。_________36_________ main ( )

{ int k=1,n=263 ;

do { k*= n%10 ; n/=10 ; } while (n) ;

printf( “%d n”,k);}

10.写出下面程序运行的结果。---- 31-1----

main ( )

{ int i=5 ;

do {

switch (i%2) {

case 4 : i-- ; break ;

case 6 : i-- ; continue ;

}

i-- ; i-- ;

printf( “%d”,i);

}while (i>0) ;

}

11. 写出下面程序运行的结果。------3,1,-1,3,1,-1,-----main ( )

{ int i,j;

for (i=0;i<3;i++,i++) {

for (j=4 ; j>=0; j--) {

if ((j+i)%2) {

j-- ;

printf(

“%d,”,j);

continue ;

}

--i ; j-- ;

printf(“%d,”,j) ; }}}

12. 写出下面程序运行的结果。------a=16 y=60------main ( )

{ int a=10,y=0 ;

do {

a+=2 ; y+=a ;

if (y>50) break ;

} while (a=14) ;

printf( “a=%d y=%dn”,a,y) ;

}

-------i=6,k=4------

13. 写出下面程序运行的结果。

main ( )

{ int i,j,k=19;

while (i=k-1) {

k-=3 ;

if (k%5==0) { i++ ; continue ; }

else if (k<5) break ;

i++;

}

printf( “i=%d,k=%d n”,i,k);

}

14. 写出下面程序运行的结果。--------1,-2------

main ( )

{ int y=2,a=1;

while (y--!=-1)

do {

a*=y ;

a++ ;

} while (y--) ;

printf( “%d,%dn”,a,y);

}

15. 写出下面程序运行的结果。-----2,3------

main ( )

{ int i,k=0;

for (i=1; ; i++) {

k++ ;

while (k

k++ ;

if (k%3==0) goto loop ;

}

}

loop:

printf( “%d,%dn”,i,k);

}

编程题:

1.输入两个正整数 m和 n,求其最大公约数和最小公倍数。

2.输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。

3.求(即求 1!+2!+3!+,+19!+20! )。

4.打印出所有的“水仙花数”,所谓“水仙花数”是指一个 3 位数,其各位数字立方之和等于该数本身。

5. 编写程序,求 s=1+2+3+,,+n,直到累加和大于或等于5000 为止,输出 s 及

n的值。

6.编写程序输出如下图形。

*

**

***

****

*****

(1)#include "stdio.h"

main()

{ int a,b,num1,num2,temp;

printf("please input two numbers:\n");

scanf("%d,%d",&num1,&num2);

if(num1

num1=num2;

num2=temp;

}

a=num1;

b=num2;

while(b!=0)/*利用辗除法,直到 b 为 0 为止 */

{

temp=a%b;

a=b;

b=temp; }

printf("gongyueshu:%d\n",a);

printf("gongbeishu:%d\n",num1*num2/a);

}

(2)

#include

#include

#include

using namespace std;

void main()

{

char c;

int letters=0,space=0,digit=0,others=0;

cout<<"please input some characters"<

while((c=getchar())!='\n')

{

if(c>='a'&&c<='z'||c>='A'&&c<='Z')

letters++;

else if(c==' ')

space++;

else if(c>='0'&&c<='9')

digit++;

else

others++;

}

cout<<" 字母 "<

(2)#include "stdio.h"

main()

{char c;

int letters=0,space=0,digit=0,others=0;

printf("please input some characters\n");

while((c=getchar())!='\n')

{

if(c>='a'&&c<='z'||c>='A'&&c<='Z')

letters++;

else if(c==' ')

space++;

else if(c>='0'&&c<='9')

digit++;

else

others++;

}

printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,

space,digit,others);

}

(3)#include "stdio.h"

main()

{

int i,j;

long a,total=0;

for(i=1;i<21;i++)

{

a=1;

for(j=1;j

a*=j;

total+=a;

}

printf("%d\n",total);

}

(4)#include

int main()

{

int n=0,i=0,j=0,k=0;//n表示这个三位数,i,j,k 分别代表百位,十位 ,个位 . for(n=100; n<=999; n++)

{

i = n / 100;//i表示百位数

j = (n / 10) % 10;//j表示十位数

k = n % 10;//k表示个位数

if(n == (i*i*i + j*j*j + k*k*k))

{

printf("%d ",n);

}

}

}

include

main()

{

int i,j,k;

for(i=1;i<10;i++)

for(j=0;j<10;j++)

for(k=0;k<10;k++)

if( (i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k)))

printf("%d%d%d ",i,j,k);

}

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

循环结构程序设计习题及答案 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;

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级)

实验2-循环结构程序设计

实验2 循环结构程序设计 一、实验目的 1.学习循环语句for、while和do-while语句的使用方法。 2.学习用循环语句实现各种算法,例如穷举法、迭代法等。 3.进一步熟悉C语言集成环境的使用方法 二、实验内容 1.用while循环实现数据统计问题。:从键盘输入一批任意数量的整数,统 计其中不大于100的非负数数值的个数。 2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问 题。调试数据仍参照上面给出的几种情况设计使用。 3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。 4.阶乘累加问题。编写程序,求1+2!+3!+…+n!的值。 三、实验指导 1.用while循环实现数据统计问题。 ?编程分析 由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不确定的。在进行程序设计时,确定循环控制的方法是本实验的一个关键问题。循环控制条件可以有多种确定方法: (1).使用一个负数作为数据输入结束标志。 (2).输入一个数据后通过进行询问的方式决定是否继续输入下一个数 据。 ?参考程序 参考程序一 /* 使用负数作为数据输入结束标志的程序 */ #include "stdio.h" void main()

{ int m,counter=0; while(1) { printf("请输入一个整数:"); scanf("%d",&m); if(m<0) break; if(m<=100) counter++; printf("\n"); } printf("符合要求的整数个数为: %d\n",counter); } 参考程序二 /* 通过进行询问的方式决定是否继续输入下一个数据的程序 */ #include int main() { int m,counter=0; char ask; while(1) { printf("请输入一个整数:"); scanf("%d",&m); getchar(); if(m>=0&&m<=100) counter++; printf("继续输入下一个数据?(Y/N)"); ask=getchar();

循环结构程序设计练习题 内含答案

第三单元循环结构练习题 选择题: 1、有以下程序执行后的输出结果是( D )。 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf("%d\n",s);} A.自然数1~9的累加和 B.自然数1~10的累加和 C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和 2、以下关于for语句的说法不正确的是( A )。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先判断表达式,后执行循环体语句 C. for循环中,可以用break跳出循环体 D. for循环体语句中,可以保含多条语句,但要用花括号括起来 3、若i和k都是int类型变量,有以下for语句 for(i=0,k=-1;k=1;k++) printf("*****\n"); 下面关于语句执行情况的叙述中正确的是( d )。 A.循环体执行两次 B.循环体执行一次 C.循环体一次也不执行 D.构成无限循环 4、以下程序程序的执行后的输出结果是( c )。 main() {int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf(“%d”,t[2-i][i]);} A.7 5 3 B. 3 5 7 C.3 6 9 D.7 5 1 5、以下程序运行后的输出结果是( A )。 void fun(char*s) { while(*s) { if(*s%2==0) printf(“%c”,*s); s++;} } main() { char a[]={“good”};fun(a);printf(“\n”);} 注意:字母a的ASCⅡ码值为97 A.d B.go C.god D.good 6、已知 int t=0; while(t=1){...} 则以下叙述正确的是( B )。 A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 7、设有以下程序段 B int x=0,s=0; while(!x!=0)s+=++x; printf("%d",s); 则 A)运行程序段后输出0

循环结构程序设计代码

实验五代码: 基础能力落实: 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);

循环练习

1.下面程序的循环次数是: int k=0; while(k<10) {if(k<1) continue; if(k==5) break; k++; } A. 5 B 6 C 4 D 死循环,不能确定循环次数 2.运行下面程序: main() { int i=10,j=0; do { j=j+i; i--; }while(i>5); printf(“%d\n”,j); } 输出结果是: A 45 B 40 C 34 D 55 3.运行下面程序 #include “stdio.h” main() { int k=0,a=1; while(k<10) { for( ; ;) { if((k%10)==0) break; else k--; } k+=11; a+=k; } printf(“%d %d\n”,k,a); } 则输出的结果是() A 21 32 B 21 33 C 11 12 D 10 11

4.以下叙述正确的是: A.do---while语句构成的循环不能用其他语句构成的循环来代替。 B.do---while语句构成的循环只能用break语句退出。 C.用do---while语句构成的循环,在while 后的表达式为非零时结束循环。 D.用do---while语句构成的循环,在while后的表达式为零时结束循环。 5.有如下程序: main() { int x=3; do{ printf(“%d”,x--); }while(!x); } 该程序的执行结果是: A 3 2 1 B 2 1 0 C 3 D 2 6.若k为整型变量,则下面while循环执行的次数为: k=10; while(k==0) k=k-1; A 0 B 1 C 10 D无限次 7.执行以下程序后,输出结果是: main() { int y=10; do { y--;}while(--y); printf(“%d”,y--); } A -1 B 1 C 8 D 0 8.求1-2+3-4+…+99-100。 9.计算1---100以内的所有含6的数的和。 10.输出所有的3位水仙花数。所谓水仙花数是指所有位的数字的立方之和等于该数,例如:153=13+33+53

实验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的所有数。 算法分析:

循环结构(While_Do循环)

四. While循环 1.While循环的格式: While <条件表达式> 循环体 Wend 说明:<条件表达式>为关系或逻辑表达式。 2.执行过程:判断条件;条件满足,执行循环体语句;再继续判断条件,继续执行循环; 直到条件不满足,结束循环。 结合下面我们熟悉的For程序,来说明: For I = 1 To 10 S = S + I Next I Print I 改用While循环表示: I = 1 ‘初值 While I<=10 ‘循环条件 S=S+I I=I+1 ‘变量自增,加步长 Wend Print S 3.While循环的说明 For循环语句必须给出初值、终值、步长值;循环条件也就给出了。 While循环语句中只给出循环条件和终值,所以一定要注意给出初值和增量。如上面程序段中的3处颜色部分语句。 例如:以下程序段循环几次,y值结果如何。 y = 2 While y < = 8 y = y + y Wend Print y 分析: 循环条件:y<=8 执行过程如下: Y=2,y<=8 满足,执行语句:y = y + y,y=4;遇到Wend返回继续判断条件。 Y=4,y<=8 满足,执行语句:y = y + y,y=8;遇到Wend返回继续判断条件。 Y=8,y<=8 满足,执行语句:y = y + y ,y=16;遇到Wend返回继续判断条件。 Y=16,y<=8 不满足,结束循环。 循环执行了3次。

五.Do循环 Do循环是在While循环基础上做了一点修改。整个格式结构和执行过程基本一样。 但增加了一种格式:条件不满足就循环,满足就结束循环。 格式1:Do While (条件) 循环体 Loop I=1 Do While I<4 S=S+1 I=I+1 Loop Print S I=1 Do Until I>=40 S=S+1 I=I+1 Loop 格式2:Do 循环体 Loop While (条件) 说明:格式1、格式2和While基本一样,格式2不同在于先执行一次循环,再判断条件是否满足。 格式3:Do Until(条件) 循环体 Loop 格式4:Do 循环体 Loop Until(条件) 说明:Until和While的不同在于条件不满足才循环。 注意:为了避免循环条件的混淆,我们一般是将Until 循环转换为While 循环做题。即将Until改为While,后面的条件改取相反值条件。

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

4.3 循环结构程序设计2 【注意事项: (1)题中页码均为《C语言程序设计教程》中的页码 (2)题后为原程序文件名 (3)仅提交名为【*.c】的源程序文件,可一起提交,也可逐题提交 调试程序中常见问题及处理方法: (1)出现死循环时:关闭运行窗口即可。 】 1、按照下面的流程图书程序,用for语句实现。 【提示:参见p97—例4.23 ,并按照下面的左流程图书写007张三511.c,右流程图书写007张三512.c 程序运行结果: s=2550 】 2、用for语句编程,求300~500之间的水仙花数(如135:153=13+53+33)。(007张三52.c) 【程序运行结果: 300~500之间的全部水仙花数如下:??370??371??407 】 3、判断输入的数是否为素数。【提示:素数是只能被1和其自身和整除的数,】(007张三53.c) 【提示:参见p114—例4.36 程序运行时:程序运行结果: 请输入一个正整数:25?25不是素数 请输入一个正整数:12?125不是素数 请输入一个正整数:13?13是素数 】 4、判断输入的一个不超过32767的正整数是几位数。(007张三54.c)【提示:按照右侧的N-S图编程 运行时:运行结果: 请输入一个正整数(1~32767): 135?135是3位数请输入一个正整数(1~32767): 1356?1356是4位数请输入一个正整数(1~32767): 28906?28906是5位数】

附加题: 1、求出100~200间的所有素数。(007张三5附加1.c )。 【 运行结果: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 】 2、根据以下公式求π值(直到最后一项小于10 –6 为止)(007张三5附加2.c ) 【 运行结果: pi=3.141590 】 3、百钱百鸡问题中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?(007张三5附加3.c ) 【提示:在编程之前,需先根据题意列出方程, 如: 设鸡翁x 只,鸡母y 只,鸡雏z 只 则有下列方程: x+y+z=100 和 5x+3y+z/3=100 因为2个方程,3个未知数,故为不定方程,需用穷举法解题。 运行结果: x=0??? y=25??z=75?? x=4??? y=18??z=78?? x=8??? y=11??z=81?? x=12?? y=4???z=84?? 】 参考解答: 1、~2、略 3、 #include void main( ) { int x, I, k; printf(“请输入一个正整数:”); scanf("%d", &x); k=x/2; while ( i <=k ) { if( x%i ==0 ) break; } if ( i>k ) { printf(“%d is \n”, x); } ??????+???+??+?++=9 4 73523173523152313112π

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

循环结构程序设计典型例题 例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

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

循环结构程序设计习题及答案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

循环程序设计习题及答案

模块三循环程序设计习题及答案 一、填空题 1、当在数据处理中要重复执行相同的操作时,宜采用程序结构来实现。 2、循环的3要素是、、。 3、在循环语句体中包含另一个循环语句的用法称为。 4、执行循环语句体中的break语句后将使用包含它的循环语句。 5、要结束当前正在执行循环体语句而直接进入下一循环周期,需要执行语句。 6、在for语句中表达式允许省略,但不能少,语句for( ; ;) ;构成的是循环。 7、在for语句中,省略表达式2时,则循环为循环。 8、执行语句for(i=1;i++<4; );后变量i的值是。 9、要使用循环程序提前结束本次循环周期并开始下一个循环周期,应在循环体内有条件使用语句。 10、在每次循环周期均要执行一次的语句,称为。 11、for语句括号内的3个表达式的作用分别是、和循环控制变量的更新。 二、选择题 1、若k为整形变量,则while循环共循环()。 k=5; while(k>=0) k-1; A、无限循环 B、6次 C、5次 D、4次 2、与while( ! n) ; 中表达式!dn等价的是()。 A、dn>=0 B 、dn!=0 C、dn == 0 D、dn != 1 3、以下程序段,while循环执行的次数是() int k=0;

while( k == 1) k++; A、无限次 B、有语法错,不能执行 C、一次也不执行 D、执行1次 4、在C语言中,当do while语句中的条件为()时,结束该循环。 A、0 B、1 C、TRUE D、非0 5、下面程序段的输出结果是() do { b-=a; a++; }while(b--<0); A、10,-1 B、2,8 C、9,0 D、4,-3 6、以下描述正确的是() A、由于do while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B、do while循环由do开始,用while结束,在while(表达式)后面不能写分号 C、在do while循环体中,一定要有能使while后面匠值变为零的操作 D、do while循环中,根据情况可以省略while 7、若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)。 s=c; 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; 8、假定a,b,c,d均已定义为整型变量,且a、c均已赋值,a大于0,c大于0,则与程序段for(d=a,b=1;b<=c;b++) d--;功能等价的语句是() A、d=a+b; B、d=a+c; C、d=a-b; D、d=a-c 9、下列关于for循环的说法正确的是() A、for循环只能用于循环次数已经确定的情况

while循环结构例题

引子 #include "stdio.h" main() { int i=1; for(i=1;i<=10000;i++) printf(“%d\t”,i); } 题型1 输入输出多个数据 eg1、输出1~10000之间所有的整数#include "stdio.h" main() { int i=1; while(i<=1000) {printf(“%d\t”,i); i++;} } 拓展:1、换成所有的奇数 2、换成所有的偶数 题型2 有限个数连加和连乘

eg2.1、求1+2+3+4+………+100的值 #include "stdio.h" main() { int i=1,s=0; while(i<=100) {s=s+i; i++;} printf(“%d\n”,s); } 拓展:1、求1+2+3+4+………+n的值 2、求12+22+32+………+n2的值 3、求1+1/2+1/3+………+1/n的值eg2.2、求n!的值 #include "stdio.h" main() { int i=1,n,p=1; scanf(“%d”,&n); while(i<=n) {p=p*i; i++;} printf(“%d\n”,p); }

拓展:求1!+2!+3!+………+n!的值 #include "stdio.h" main() { int i=1,n,p=1,s; scanf(“%d”,&n); while(i<=n) {p=p*i; s=s+p; i++;} printf(“%d\n”,s); } 题型3 无限个数连加 eg3、求1-1/3+1/5-1/7+………的近似值,要求精度要达到10-4 #include "stdio.h" #include "math.h" main() { float n=1,s=0,f=1,t=1; while(fabs(t)>=1e-4) {t=f/(2*n-1); s=s+t;

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

一、循环结构(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){

C语言循环结构测习题带答案

精心整理 第5章循环结构程序设计 5.1基本知识点 ?while语句的使用格式和注意事项 ?do-while语句的使用格式和注意事项 ?for语句的使用格式和注意事项 ?break和continue语句在循环语句中的应用 ? ? ? ? 1. C. A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 (5)以下程序段C。 intx=-1; do { x=x*x; } while(!x);

A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误 (6)下列语句段中不是死循环的是__C__。 A.i=100; while(1) { i=i%100+1; if(i==20)break; } B.for(i=1;;i++) sum=sum+1; C. C. COUT< main() { intnum=0; while(num<=2) {

num++; cout< else ++i; }while(s<15); Cout< main() { inti,j; for(i=4;i>=1;i--) {

while循环练习

一、选择题 1.设有程序段 int k=10; while(k=0)k=k-1; 这下面描述中正确的是_________. a)while循环执行10次 b)循环是无限循环 c)循环体语句以此也不执行 d)循环体语句执行一次 a)E==0 b)E!=1 c)E!=0 d)E==1 2.语句while(!E);中的表达式!E等价于________. 3.下面程序段的运行结果是__________. int n=0; while(n++<=2);printf("%d",n); a)2 b)3 c)4 d)有语法错 4.下面程序的运行结果是____. #include main() { int num=0; while(num<=2) { num++; printf("%d\n",num); } } a)1 b)1 c)1 d)1 2 2 2 3 3 4 二、编程计算 1、求1~100中所有偶数的和。 2、下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数。 3、计算并输出1-3+5-7+……-99+101的值。

三、写一个小型计算器。 界面如下: 要求: 1.有简单运算选择界面 2.采用循环实现菜单显示 3.采用switch结构实现菜单的选择 4.运算对象为两个操作数,从键盘输入 5.运算结果输出 1、计算下列式子的值: (1)1+3+……+99 (2)1+2+4+8+……+128+256 2、输入一个整数,计算它各位上数字的和。(注意:是任意位的整数) 3、输入一整数A,判断它是否质数。(提示:若从2到A的平方根的范围内,没有一个数能整除A,则A是质数。) 4、求两个数的最小公倍数和最大公约数。(提示:公约数一定小于等于两数中的小数,且能整除两数中的大数。公倍数一定大于等于两数中的大数,且是大数的倍数,又能给两数中的小数整除。) 5、编写一个译码程序,把一个英语句子译成数字代码。译码规则是以数字1代替字母A,数字2代替字母B,……,26代替字母Z,如遇空格则打印一个星号…*?,英文句子以….…结束。 6、求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc 是水仙花数。 7、“百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?与之相似,有"鸡兔同笼"问题。

C语言循环结构练习题带答案

第5章循环结构程序设计 练习题 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是__C__。

第5章循环结构程序设计35 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B.for (i=1;;i++) sum=sum+1; C.k=0; do { ++k; } while (k<=0); D.s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是_B___。 #include main() { int i; for (i=4;i<=10;i++) { if (i%3==0) continue; COUT<

第5章 循环结构程序设计作业参考答案

第5章循环结构程序设计作业参考答案 班级学号姓名 【第140页】 5-1、请画出课本里5.6中给出的3个程序段的传统流程图。 (1)程序1: #include int main() { int i,j,n=0; for (i=1;i<=4;i++) for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 printf("%d\t",i*j); } printf("\n"); return 0; } (2)程序2: #include int main() { int i,j,n=0; for (i=1;i<=4;i++) for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 if (i==3 && j==1) break; //遇到第3行第1列,终止内循环 printf("%d\t",i*j); } printf("\n"); return 0; } (3)程序3: #include int main() { int i,j,n=0; for (i=1;i<=4;i++)

for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 if (i==3 && j==1) continue; //遇到第3行第1列,提前结束执行本次内循环体 printf("%d\t",i*j); } printf("\n"); return 0; } (1)程序1流程图(2)程序2流程图(3)程序3流程图 5-3、输入两个正整数m和n,求其最大公约数和最小公倍数。 #include int main()

相关文档
相关文档 最新文档