循环结构例题和习题

循环结构例题和习题
循环结构例题和习题

循环结构用于执行一些重复的操作。常见的重复操作有,

(1)累加、累积:重复累积一批可以有规律地计算出来的数据。

(2)递推:反复地从一个中间结果计算出来下一个中间结果。

(3)对一系列类似的数据进行同样的加工处理。

如果重复操作的次数比较多,或者需要重复的次数无法事先确定,就需要通过循环结构实现。

在循环结构程序中,各个语句是按照位置的先后顺序执行的,且顺序结构中的每个语句都会被执行到。

【例1】编写程序,输入n,求1! + 2! + ... + 20!的值。

该问题中有一个重复的累加,累加的次数由变量n的值确定,应当考虑用循环实现。

/*程序功能:计算平方和*/

int main ( )

{

long i, j;

long prod;

long sum = 0;

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

{

prod = 1;

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

{

prod = prod * j;

}

sum = sum + prod;

}

printf ( "sum = %ld\n", sum );

return 0;

}

程序的运行情况:

sum = 268040729

例7.1、例7.2、例7.3的功能都是重复累计一批可以有规律地计算出来的数据。

【例2】编写程序,输出1-200之间的完全平方数。

判断一个整数n是否为完全平方数,可以从1开始,逐个检查小于不超过n的整数,看其平方是否等于n。如果存在某个数的平方等于n,则说明n是完全平方数。否则,n不是完全平方数。

第一个完全平方数为a1=12;

一般地,设第i个完全平方数为a i=i2,则第i+1个完全平方数应该是

a i+1=(i+1)2 =i2+2i+1=a i+2i+1。

由于计算a i+1的值需要a i的值,所以可以使用循环。

/*程序功能:输出1-200之间的完全平方数*/

int main ( )

{

int i = 0;

int num;

for ( num = 1; num <= 200; num = num + 2 * i + 1 )

{

i = i + 1;

printf ( "No.%d complete square number is: %ld\n", i, num );

}

return 0;

}

程序运行结果:

No.1 complete square number is:1

No.2 complete square number is:4

No.3 complete square number is:9

No.4 complete square number is:16

No.5 complete square number is:25

No.6 complete square number is:36

No.7 complete square number is:49

No.8 complete square number is:64

No.9 complete square number is:81

No.10 complete square number is:11

No.11 complete square number is:121

No.12 complete square number is:144

No.13 complete square number is:169

No.14 complete square number is:196

【例3】某人上楼梯,他一步可以迈一个台阶,也可以一步迈两个台阶。现有n个台阶,问有多少种上法。

当n=1时,有a1=1种上法,n=2时有a2=2种上法。

设n=k(k>2)时的上法为a k种上法;

则n=k+1时,第一步有两类上法,可以先上一个台阶,剩下的k阶台阶共有a k种上法;也可以先上两个台阶,剩下的k-1阶台阶共有a k-1种上法。

所以a k+1=a k+a k-1。

由于计算a k+1(k>2)的值,需要使用a k和a k-1的值。所以应该使用循环结构实现这一递推运算。

/*程序功能:台阶问题求解*/

int main ( )

{

long step1, step2;

int i = 1, n;

step1 = 1;

step2 = 2;

printf ( "Input the number of steps: " );

scanf ( "%d", &n );

while ( i < = n )

{

printf ( "%12ld %12ld", step1, step2 );

if ( i % 2 == 0 )

{

printf ( "\n" );

}

step1 = step1 + step2;

step2 = step2 + step1;

i = i + 1;

}

return 0;

}

程序运行结果:

Input the number of steps:12

1 2 3 5

8 13 21 34

55 89 144 233

377 610 987 1597

2584 4181 6765 10946

17711 28657 46368 75025

【例4】编写程序,输入若干个表达式,计算表达式的值,直到输入字符‘q’停止计算。每个表达式包含两个数和一个算术运算符。

对每一个输入的表达式,都需要对表达式进行类似的分析处理。可以使用循环结构实现。但循环的次数不能事先确定,所以需要使用特殊的方法来终止循环。

/*程序功能:简单的计算器*/

int main ( )

{

int num1, num2;

char ch;

printf( "Input a expression( num1 (+、-、*、/)num2):\n" );

do

{

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

switch( ch )

{

case '+': printf ( "%d %c %d = %d \n", num1, ch, num2, num1 + num2 );

break;

case '-': printf ( "%d %c %d = %d \n", num1, ch, num2, num1 - num2 );

break;

case '*': printf ( "%d %c %d = %d \n", num1, ch, num2, num1 * num2 );

break;

case '/': printf ( "%d %c %d = %d \n", num1, ch, num2, num1 / num2 );

break;

default: printf( "Input error!\n" );

break;

}

printf( "Quit? Press 'q' or 'Q'!\n" );

ch = getchar();

}while( ch != ‘q’ && ch != ‘Q’ );/*当输入字符‘q’或‘Q’时,退出循环*/

return 0;

}

程序的运行情况:

Input a expression( num1 (+、-、*、/)num2):

4+5?

4 +

5 = 9

Quit? Press 'q' or 'Q'!

3–7?

3 – 7 = –4

Quit? Press 'q' or 'Q'!

9*8?

9 * 8 = 72

Quit? Press 'q' or 'Q'!

q?

习题

1.选择题

(1)下列说法正确的是()。

A) do-while的循环体至少执行一次

B) while的循环体至少执行一次

C) do-while的循环体不能是复合语句

D) while的循环体不能是复合语句

(2)下列程序段的输出是()。

total = 50;

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

total = total - i;

printf( "%d", total );

A)没有输出 B) 50 C) -5 D) 40

(3)以下程序的输出结果为()。

#include

int main ( )

{

int i, sum;

i = 0;

sum = 0;

while( i <= 100)

sum = sum + i;

i = i + 1;

printf( "%d", sum );

return 0;

}

A) 0 B) 5050 C) 1 D)程序无法终止

(4)以下说法正确的是()。

A) continue和break只能用在循环体中

B) continue只能用在循环体中

C) break只能用在循环体中

D) continue只能用在循环体外

(5)下列程序的输出为()。

#include

int main ( )

{

for( i = 2; i > 0; i = i – 1 ) for( j = 0; j < i; j = j + 1 ) printf( "*" ); return 0;

}

A) ** B) *** C) **** D) *****

(6)执行下列程序后,输出结果为()。

#include

int main ( )

{

int x = 1;

do x = x + 1;

while( x <= 3 );

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

return 0;

}

A) 1 B) 2 C) 3 D) 4

(7)以下程序的执行结果是()。

#include

int main ( )

{

int k;

for( k = 0; k <= 5; k = k + 1 )

do k = k + 1;

while( k < 5 );

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

return 0;

}

A) 5 B) 6 C) 7 D) 8

(8)以下的结论,错误的是()。

A)用while语句实现的循环,一定可以用for语句实现

B)用for语句实现的循环,一定可以用while语句实现

C)用do-while语句实现的循环,一定可以用for语句实现

D)用for语句能够实现的循环,用while语句或do-while语句不一定能够实现

(9)设某网站成立第一天有10人点击,以后每天的点击数目都是前一天的三倍多10人。下列程序是计算第11天有多少人点击的,其中缺少的是()。

#include

int main ( )

{

long k = 10;

int i;

for( __________ )

s = 3 * s + 10;

printf( "%ld\n", k );

return 0;

}

A) i = 1; i <= 11; i = i + 1;

B) i = 1; i <= 12; i = i + 1;

C) i = 2; i <= 11; i = i + 1;

D) i = 2; i <= 12; i = i + 1;

(10)下列程序段中,不能使得变量m的值等于10的程序段是()。

A) m = 0; while ( ( m = m + 1) < 9 );

B) do m = 0; while( ( m = m + 1 ) < 10 );

C) for( m = 8; m < 10; m = m + 1 );

D) for( m = 9; m < 10; m = m + 2 );

2.填空题

(1)用for语句实现对语句s重复执行n(>0)次的程序段是__________。

(2)用while语句实现对语句s重复执行n(>0)次的程序段是__________。

(3)用do-whilefor语句实现对语句s重复执行n(>0)次的程序段是__________。(4)下列程序段中,循环体执行的次数是__________。

int num = 12345;

do n / 10;

while( n );

(5)下列程序的输出结果是__________。

int main ( )

{

int n = 10;

while ( n < 19 )

{

if ( ( n % 5 = = 0 ) || ! ( n % 11 ) ) printf( "%5d", n );

n = n + 1;

}

return 0;

}

(6)下列程序的输出结果是__________。

int main ( )

{

int m = 20, n;

for( ; m > 10; m = m - 1 )

{

for( n = m; n > 9; n = n – 1 )

if( m % n )

break;

if( n <= m – 1 )

printf( "%5d", m );

}

return 0;

}

(7)下列程序的主要功能是输出以下图形。试填写程序中缺少的内容。

**

****

******

********

#include

int main ( )

{

int i, j;

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

{

for( j = 1; j <=__________; j = j + 1 )

printf( "%c", ' ' );

for( j = 1; __________; j = j + 1 )

printf( "%c%c", '*', '*' );

printf( "\n" );

}

return 0;

}

3.编写程序,求1~20之间所有的奇数的乘积。

4.编写程序,求1~50之间所有的7的倍数之和。

5.编写程序,求1!- 2!+ 3!- 4!+ ...- 10!。

6.某人工资为1600元,若每年增长工资的3%,求五年后此人的工资是多少。7.编写程序,求1~100中2、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;

循环结构程序设计(C语言实验报告)

仲恺农业工程学院实验报告纸 信息学院(院、系) 专业 班 C 语言程序设计 课 实验目的: (1)熟练掌握用三种循环语句实现循环的方法。 (2)掌握在程序设计中用循环方法实现的一些常用算法。 (3)进一步学习调试程序。 实验内容与总结: 编程练习 1、打印出所有“水仙花数”——教材P129-6.6 程序如下: #include void main() { int i,j,k,n; for(n=100;n<1000;n++) { i=n/100; j=(n-i*100)/10; k=n-i*100-j*10; if(n==i*i*i+j*j*j+k*k*k) printf("水仙花数为:%d\n",n); } } (1)程序编制要点: ①用for 语句实现循环; ②立方的表示; ③if 语句的表达。 (2)该题目涉及的知识点和难点: ①for 语句的输入与使用; ②if 语句的使用。 2、用迭代法求a x = 。求平方根的公式为:)(211n n n x a x x +=+ 程序如下:

#include #include void main () { float x1,x2=1,a; printf("请输入求平方跟的数a="); scanf("%f",&a); do { x1=x2; x2=(x1+a/x1)/2; } while (fabs(x2-x1)>1e-5); printf("x的平方根是:%f\n",x2); } (1)程序编制要点: ①用do…while语句实现循环; ②平方根公式的输入; ③前后两次求出的x的差的绝对值小于1E-5。 (2)该题目涉及的知识点和难点: ①scanf函数,求绝对值函数fabs; ②do…while语句的输入与使用。 3、猜数字:编程先由计算机“想”一个1到100之间的整数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则结束游戏。 程序如下: #include #include /*使用srand和rand函数*/ #include /*使用time函数*/ void main() { int magic,guess,count=0; srand(time(NULL)); magic = rand() % 100 + 1; /*magic得到一个1到100的随机数*/ printf("请输入一个1到100之间的数,你共有10次机会:\n"); do { scanf("%d",&guess); count++; if((guess<=0)||(guess>=100))

顺序结构选择结构和循环结构的程序设计典型例题分析与解答

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答 1 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构 【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。【答案】多分支 2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。 【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。 【答案】直到型 3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。 【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。【答案】#include"stdio.h"或#include<stdio.h> 4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( ) ①'A'/②A/③x=A/ ④x=A,y=12/ 12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键 【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符, 在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。【答案】④ 5 设有下列程序段,则执行该程序段后的输出是( ) int i=012; float f=1.234E-2; printf("i=%-5df=%5.3f",i,f); ... ①i=__012f=1.234 ②i=10___f=0.012 ③10___O.012 ④___100.012 注:答案中的_代表一个空格。 【分析】输出语句的格式控制符串中的“i=”、“f=”都是非格式控制符,在输出时必须原样,原位置输出,所以只有备选答案①和②才符合这个要求;格式控制符“%-5d”的格式控制是数据左对齐、宽度为5的整型数据,备选答案①中的数据是右对齐的;此外,该答案中的实数“1.234E-2”应该代表“0.01234”,而不是“1.234”。只有备选答案②符合题意。【答案】② 6 在Turbo C的主屏幕中,将当前编辑的源程序以原名存盘,可以选用___________菜单项,也可以直热键________。 【分析】如果选用“File/Save”菜单项,或者使用热键(f12),当前编辑的源程序将以原来的文件名存盘;如果选用“File /Write to”,当前编辑的源程序将以新的文件名存盘。 【答案】File/Save F2 7 下列各种选择结构的问题中,最适合用if-else语句来解决的是( ) ①控制单个操作做或不做的问题 ②控制两个操作中选取一个操作执行的问题 ③控制三个操作中选取一个操作执行的问题 ④控制10个操作中选取一个操作执行的问题 【分析】if-else语句是专门解决“双分支结构”的,而“双分支结构”的问题就是用单个条件控制从两个操作中选取一个操作来执行的问题。 【答案】② 8 下列程序是输入一个小写字母,转换成对应大写字母的后一个字母输出。例如:'a'将转换成’B’、…、‘y’将转换成’Z’,其中的’Z’将转换成’A’。请填写程序中所缺少的语句。 main() {char ch ; scanf(”%c”,&ch〕; ch=ch- 32+1; ___________________; printf("%c\n",ch); } 【分析】分析程序库中的“ch=ch- 32+ 1;”语句,可知是将字符型变量 ch中的小写字母转换成对应的大写字母(- 32)的后一个字母(+ l)。如果ch中的字母是' a'、' b'、··,'y',转换结果都不会出错,但是,如果 ch中的字母是'Z',则-32后是大写字母'Z',再+l后将不是大写字母了。为了使其转换成'A',需要用一个单分支结构来实现:如果ch的值等于'Z'+ l,则硬性将 ch的值改成'A'。完成这个任务的语句是一条单分支语句,正是所缺少的语句。 【答案】 if (ch=='Z'+l) h='A'; 9不能正确计算下列分段函数的程序段是_________ |-1 x<0 y=|0 x=0 x>0 ① switch(x< 0)② if(x> 0) {case1:y=-1;break; y=1; case 0:switch(x==0)else {casel:y=0;break;if(x==0) case 0: y= l;y=0 } else } &ny=-l ③ y= l;④ y= l; if(x==0)if(x<0) y=0; y =-l; else else y=- l; if(x== 0) y=0; 【分析】先来分析备选答案①:表达式“x<0”的值只有两种可能性,成立值为1、不成立值为on如果“x<0”的值为 1(即 x< 0),则执行“easel:”后的语句“y=-l”后,退出 switch语句,符合分段函数要求。如果“x<0”的值为0(即x>=0),则执行“case 0:”后的switch语句。该switch语句的表达式是“x==0”,结果也有两种:成立为1、不成立为0.如果“x==0”的值为1(即x=0),则执行“case l:”后的语句“y=0”后,退出 switch语句,符合分段函数要求。如果“x==0”的值为0(即x>0),则执行“case 0:”后的语句“y=1”,也符合分段函数要求。再分析备选答案②:这是标准的用嵌套双分支结构来实现三分支的分段函数,结果显然是能求解分段函数的。分析备选答案③:双分支语句的条件是“x==0”,条件成立时,y值为0,符合分段函数的要求,条件不成立时(包含x>0和x<0两种情况),结果y值为-l,显然不符合分段函数的要求,所以本题要选该答案。至于备选答案④,是能正确计算分段函数的,首先置y为1;接着用双分支结构处理“x<0”和“x>=0”的两种情况:前者使得y值为一l;后者再执行一个单分支结构,如果“x==0”则使y值为0,否则不改变y值,保持y的原值1,符合分段函数的要求。 【答案】③ 10 三种循环语句都能解决循环次数已经确定的次数型循环,其中__________循环语句最适合。 【分析】当“for(表达式 1;表达式 2;表达式 3)语句;”中的表达式1为:整型变量 k=l;表达式 2为:整型变量 k<= n;表达式 3为:整型变量 k++;则这个 for循环就是次数为n次的标准次数型循环结构。 【答案】for 11执行下列程序段后的输出是() x=l; while(x<=3) x++,y=x+++x; printf("%d,%d",x,y); ① 6,10 ②5,8 ③4,6 ④3,4 【分析】我们可以使用逐步记录运行结果的方法来获得输出结果,记录如下: x=1; 进入循环,条件满足执行循环体:计算x+十得x为2,计算y=x+++x,得y为4、x为3; 继续循环,条件满足执行循环体:计算x+十得x为4,计算y=x+++x,得y为8、x为5; 继续循环,条件不满足退出循环; 输出x和y的值为5,8。 【答案】② 12 执行下列程序段,其中的do-while循环一共执行_次。 static int x; do x+=x*x; while (x); 【分析】对静态型变量,不赋初值也有值,对整型变量,其值为 0。执行循环语句 do-while 的循环体,x+=x* x是x=x+(x*

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

第三单元循环结构练习题 选择题: 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.下面程序的循环次数是: 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

C语言循环结构程序设计实验报告

甘肃政法学院 本科生实验报告 ( 五) 姓名:赵明翔 学院:公安技术学院 专业:安全防范工程 班级: 2015级安全防范工程班 实验课程名称:程序设计 实验日期:2016年月日 开课时间:2015学年第二学期

(2)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字李方和等于该数本身。例如,153是水仙花数,因为153=12+53+33程序如下: #include int main() { int i,j,k,n; printf("paicissus numbers are"); for (n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%d",n); } printf("\n"); return 0; } 运行结果: (3)猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又

多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下了1个桃子了。求第一天共摘了多少桃子。 程序如下: #include int main() { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2; x2=x1; day--; } printf("total=%d\n",x1); return 0; } 运行结果: (4)①用牛顿迭代法求方程0634223=-+-x x x 在1.5附近的根. #include #include int main() {double x1,x0,f,f1; x1=1.5; do {x0=x1; f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x1=x0-f/f1;

C语言循环结构复习题

循环结构程序设计复习题 一.选择题 1.以下while循环中,循环体执行的次数是:() k=1; while (--k) k=10; a) 10次b) 无限次c) 一次也不执行d) 1次2.有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=0; while (!x!=0) x++; a) 退出while循环后,x的值为0 b) 退出while循环后,x的值为1 c) while的控制表达式是非法的 d) while循环执行无限次 3. 有以下程序段,其中n为整型变量,执行后输出结果是:() n=20 ; while(n--) ; printf(“%d”,n) ; a) 2 b) 10 c) -1 d) 0 4. 有以下程序段,其中t为整型变量,以下选项中叙述正确的是:() t=1;

while (-1) { t--; if(t) break;} a) 循环一次也不执行 b) 循环执行一次 c) 循环控制表达式(-1)不合法 d) 循环执行2次 5. 有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=-1; do {;} while (x++); printf(“x=%d”,x); a) 该循环没有循环体,程序错误 b) 输出x=1 c) 输出x=0 d) 输出x=-1 6. 有以下程序段,其中x,y为整型变量,程序输出结果是:() for(x=0,y=0;(x<=1)&&(y=1);x++,y--) ; printf(“x=%d,y=%d”,x,y); a) x=2,y=0 b) x=1,y=0

x=0,y=0 d) x=1,y=1 c) 解析:在开始时 x=0,y=0; 进入循环判断(x<=1)&&(y= 1) 条件成立,同时把1赋给y,此时x=0,y=1; 然后执行 x++,y--,执行之后x=1,y=0; 再进入循环判断(x<=1)&&(y= 1),条件成立,同时同时把1赋给y,此时x=1,y=1; 然后执行 x++,y--,执行之后x=2,y=0; 再进入循环判断(x<=1)&&(y= 1),条件不成立,跳出循环 输出x=2,y=0 。 7. 有以下程序: main() { int x=0,y=0; while(x<5&&++y) y--,x++; printf(“%d,%d”,y,x); } 程序的输出结果是:() a) 0,5 b) 1,5 c) 0,4 d) 1,4 8. 有以下程序:main() int num=0; { do ,num); } { num++ ;printf(“%d\n” while(num<=2); } 程序的输出结果是:() 1 1c) 1 d)

循环结构程序设计(汇编语言)

循环结构程序设计(汇编语言)

汇编语言实验报告 实验名称:循环结构程序设计 姓名: 学号: 班级:

一、实验内容 1. 用多种循环方法实现1+2+3+…+20的程序(至少二种方法); 2. 编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z 或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入;(选做) 3、编写一个汇编语言程序,要求将BX寄存器内的小写字母用大写字母显示出来。 4、ADDR单元是存放数据的内存单元,要求将该内存单元中的字依次用十六进制数显示出来。 二、实验目的 1. 掌握循环程序的结构。 2. 掌握循环程序的设计、编写及调试方法。 3. 掌握循环程序设计的基本方法。主要掌握几种基本的循环程序设计技巧,如计数法程序设计、当循环、直到循环等程序设计技术。 三、实验结果 1、将内存中的数据块中(BUFF为起始地址)奇数和偶数分别存入以ADDR1和ADDR2开始的存储块中,并分别统计其中的奇、偶数,将统计结果存放在RESULT 开始的两个字存储单元中。 实验代码:(1.ASM 1.OBJ 1.EXE) data segment buff dw 6,35,99,17,80,69,50,33 addr1 dw 8 dup(?) addr2 dw 8 dup(?) result dw 0,0 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cx,8d

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

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

循环结构(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,后面的条件改取相反值条件。

循环结构程序设计代码

实验五代码: 基础能力落实: 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. 用 +-+-≈7 1513114π公式求π的近似值,直到发现某一项的绝对值小于10-6 为止(该项不累计加)。 #include #include int main() { int sign=1; double pi=0,n=1,term=1; while(fabs(term)>=1e-6) { pi=pi+term; n=n+2; sign=-sign; term=sign/n; } pi=pi*4; printf("pi=%10.8f\n",pi); return 0; } 2. 输入一个大于3的整数n ,判定它是否素数(prime ,又称质数) #include int main() { int n,i; printf(“n=?"); scanf("%d",&n); for (i=2;i<=n-1;i++) if(n%i==0) break; if(i int main() { int n,i,k; printf(“n=?"); scanf("%d",&n); k=sqrt(n); for (i=2; i<=k; i++) if(n%i==0) break; if(i<=k) printf("%d is not\n",n); else printf("%d is\n",n); return 0; } 3. 求100~200间的全部素数, 并控制换行。 #include "math.h" main( ) { int m, i, k, c=0; printf("\n"); for(m=101; m<200; m=m+2)

循环程序设计习题及答案

模块三循环程序设计习题及答案 一、填空题 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只鸡,那么各有公鸡、母鸡、小鸡多少只?与之相似,有"鸡兔同笼"问题。

相关文档
最新文档