循环程序设计习题及答案
第6章循环结构程序设计习题及答案

第6章循环结构程序设计6-1.比较while语句、do–while语句和for语句的异同。
答:(1)while语句、do-while语句用于条件循环,for语句用于计数循环。
(2)while语句、for语句是先判断循环条件,后执行循环体,如果循环条件一开始就不成立,则循环体一次也不被执行;而do-while语句是是先执行循环体,后判断循环条件,所以循环体至少被执行一次。
(3)知道循环的次数可选用for语句实现循环,不知道循环的次数可选用while语句或do-while语句实现循环.(4)一般而言,三种循环语句可等价实现.6-2 仔细阅读下面的程序,指出程序的运行结果.#include<stdio.h>void main(){ int i;for(i=0;++i;i<5){ if(i==3){printf("%d\n",++i);break;}printf("%d\n",++i);}}答:24思考:语句“for(“i=0;++i;i<5”)在编译时为何会给出语法警告错误?当将其改为“for(i=0;i<5;++i)”时,运行结果又将如何?6-3 仔细阅读下面的语的程序,指出程序的运行结果。
#include"stdio.h"void main(){ int i, a=0;for(i=1;i<=5;i++){do{i++;a++;} while(i<3);}i++;printf("a=%d,i=%d",a,i);}答:a=3,i=7思考:在for循环中嵌套着do-while循环,那么do-while循环中对i的修改会对for循环产生影响吗?6-4编写程序,用1000个单词”computer”填充屏幕,每行60个 .解:#include<stdio.h>void main(){ int i;for(i=1;i<=1000;i++){ printf("computer.");if(i%60==0)printf("\n");}}思考:在for循环中,”if(i%60==0)printf(“\n”);”语句的作用是什么?没有此语句将会是什么状况?6-5输入一行字符(以$结束),统计其中的数字字符、空格字符出现的次数。
汇编语言程序设计_第5章 分支循环程序设计(参考答案)

第5章分支、循环程序设计本章要点: 转移指令的寻址方式及其执行过程,控制转移类指令的使用,分支和循环程序的设计和应用。
程序调试的方法,常见问题的程序设计方法。
一、单项选择题5.1.1条件转移是根据标志寄存器中的标志位来判断的,条件判断的标志位共有( B )位。
A. 4B. 5C. 6D. 95.1.2用一条条件转移指令一次可以实现( A )个分支。
A. 2B. 3C. 4D. N5.1.3 条件转移指令的转移范围是(A)。
A. -128~127B. 0~255C. 0~65535D. -32768~327675.1.4 设A为字变量,B为标号,下列指令中不正确的是(D)。
A. MOV AX,AB. JNZ BC. JMP [SI]D. JMP B[BX]5.1.5 下述指令中影响CF标志位的是(A)。
A. SHL AL,1B. MOV AL,1C. JC LD. JNC L5.1.6 下述指令中不影响CF标志位的是(A)。
A. INC SIB. SUB SI,0C. NEG ALD. TEST AL,15.1.7 在多重循环程序设计中,每次通过外层循环进入内层循环时,其内层循环的初始条件(B)。
A. 不必考虑B. 必须重新设置C. 必须清0D. 必须置15.1.8 当设计一个程序时,最重要的是(B)。
A. 程序的结构化B. 能使程序正常运行并实现功能C. 程序的执行速度快D. 程序占用的存储空间小*5.1.9 如果“JNC L”指令的操作码放在0040H,转移后在0020H处取下一指令的操作码,那么这条指令的位移量是(C)。
A. 1EHB. 20HC. 0DEHD. 0E0H*5.1.10 如果“JGE P”指令的操作码放在0050H,该指令的位移量是34H,执行完这条指令转移取下一条指令的偏移地址是(C)。
A. 82HB. 84HC. 86HD. 88H二、填空题5.2.1 当下面循环程序中的划线处填上一个什么数字时,执行的循环次数最多?MOV CX,____0______MOV AX,0L:INC AXLOOP L5.2.2 当两个数进行比较后,执行__JE L(JZ L)表示两数相等则转移到L。
循环程序设计习题与答案

循环程序设计习题与答案模块三循环程序设计习题及答案一、填空题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!=0C、dn == 0D、dn != 13、以下程序段,while 循环执行的次数是()int k=0;while( k == 1) k++;A、无限次B、有语法错,不能执行C、一次也不执行D、执行 1 次4、在C语言中,当do while 语句中的条件为()时,结束该循环。
A、0B、1C、TRUED、非05、下面程序段的输出结果是()do{ b-=a;a++;}while(b--<0);A、10,-1B、2,8C、9,0D、4,-36、以下描述正确的是()A、由于do while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
B、do while 循环由do 开始,用while 结束,在while( 表达式)后面不能写分号C、在do while 循环体中,一定要有能使while 后面匠值变为零的操作D、do while 循环中,根据情况可以省略while7、若有如下程序段,其中s、a、b、c 均已定义为整型变量,且a、c 均已赋值(c大于0)。
java运用循环编程题及答案

1.编写一个数的阶乘和。
eg. Sum=1!+2!+3!+4!+5! publicclass j1_20 {publicstaticvoid main(String[] args) {int a,sum,b=0,i;sum=0;for(b=1;b<=5;b++){a=1;for(i=1;i<=b;i++){a=a*i;}sum+=a;}System.out.println("1到5的结成和"+sum);}}结果2.把一个数组里的数字按照从小到大的顺序排列出来publicclass j_sort {publicstaticvoid main(String[] args) {int a[]=newint[]{12,15,63,56,21,71,91,3,16,43}; for(int i=0;i<10;i++){for(int j=i+1;j<10;j++){if(a[i]>a[j]){int t;t=a[i];a[i]=a[j];a[j]=t;}}}System.out.println("从小到大的顺序为:"); for(int i=0;i<10;i++){System.out.print(a[i]+" ");}}}结果是3.输出一个三角形publicclass j_triangle1 {publicstaticvoid main(String[] args) {int a=5,b=5;for(int i=1;i<5;i++){for(int j=0;j<5-i;j++){System.out.print(" ");}for(int e=1;e<=i;e++){System.out.print(""+" ");}System.out.println("");}System.out.println("-----------");for(int i=1;i<5;i++){for(int j=0;j<5-i;j++){System.out.print(" ");}for(int e=1;e<2*i;e++){System.out.print("");}System.out.println("");}}}结果是4,.输出最小公约数是publicclass j_prime {publicstaticvoid main(String[] args) {int a=3,b=4,i;for(i=1;i>0 ;i++){if(i%a==0&&i%b==0){System.out.print("最小公约数是:"+i); break;}}}}结果是5.最大公约数publicclass j偶数和 {publicstaticvoid main(String[] args) {int a,sum=0;for(a=1;a<=100;a++){if(a%2==0){sum+=a;}}System.out.println("一百以内的偶数和"+sum);}}6.输出99乘法口诀publicclass j99表 {publicstaticvoid main(String[] args) {// 效果1int a,b,sum;for(a=1;a<10;a++){for(b=1;b<=a;b++){char c=(char)a;char d=(char)b;System.out.printf("%d"+"*"+"%d"+"="+a*b+"\t",a,b);}System.out.println(" ");}// //效果2// int i,j,k;// for(i=1;i<=9;i++)// {// for(j=1;j<=i;j++)// {// k=i*j;// System.out.print( " \t" +k);// }// System.out.print( "\n" );// }}}结果是7.统计个位数是 6 ,并且能被 3 整除的 5 位数共有多少个?publicclass j3_6 {publicstaticvoid main(String[] args) {int a,i=1000,sum=0;for(i=1000;i<10000;i++){a=10*i+6;if(a%6==0){sum+=1;}}System.out.print("统计个位数是 6 ,并且能被 3 整除的 5 位数共有:"+sum+"个!");}}结果是8.输出100以内的所有质数publicclass j100内质数 {publicstaticvoid main(String[] args) {int a,b,sum=0;for(a=2;a<=100;a++){boolean flag=true;for(b=2;b<a;b++){if(a%b==0) flag=false;}if(flag){System.out.println(a);sum+=1;}}System.out.println("一共有"+sum+"质数");}}结果是10.输出大于200的最小质数publicclass j4 {publicstaticvoid main(String[] args) {int a=200,b=2;for (a=200; ;a++){boolean flag=true;for(b=2;b<a;b++) {if (a%b==0) flag=false;}if(flag){System.out.println("大于200的最小质数是:"+a); break;}}}}结果是。
第5章 循环结构程序设计习题解答

第5章循环结构程序设计习题解答1.输入n个整数,求这n个数之中的偶数平均值,并输出。
#include<stdio.h>void main(){int n,i,x,k=0,s=0;printf("Input a number(n):");scanf("%d",&n);printf("Input %d numbers:",n);for(i=0;i<n;i++){scanf("%d",&x);if(x%2==0){s+=x;k++;}}s/=k;printf("average=%d\n",s);}2.输入一串字符,直到输入一个星号*为止,统计(输出)其中字母个数和数字字符个数。
#include<stdio.h>void main(){int n=0,m=0;char c;printf("Input a string character:");do{scanf("%c",&c);if(c>='0'&&c<='9')n++;else if(c>='A'&&c<='Z'||c>='a'&&c<='z')m++;}while(c!='*');printf("number_char=%d\n",n);printf("letter_char=%d\n",m);}3.从键盘输入一正整数n,计算该数各位数字之和并输出。
例如,输入数是5246,则计算5+2+4+6=17并输出。
#include<stdio.h>void main(){int n,r,m=0,s=0;printf("Input a number(int):");scanf("%d",&n);do{r=n%10;s=s+r;n/=10;if(m==0)printf("%d",r);//加式中的第1项不带“+”elseprintf("+%d",r);m++;}while(n>0);printf("=%d\n",s);}4.输入一个字符串,将其中的大写字母改为小写字母,小写字母改为大写字母,然后输出。
循环结构程序设计练习题 内含答案

第三单元循环结构练习题选择题: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 3B. 3 5 7C.3 6 9D.7 5 15、以下程序运行后的输出结果是( 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Ⅱ码值为97A.dB.goC.godD.good6、已知 int t=0; while(t=1){...} 则以下叙述正确的是( B )。
A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对7、设有以下程序段 Bint x=0,s=0;while(!x!=0)s+=++x;printf("%d",s); 则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次8、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为( C )。
循环结构程序设计练习题内含答案

第三单元循环结构练习题选择题: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.753B.357C.369D.7515、以下程序运行后的输出结果是( 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Ⅱ码值为 97A.dB.goC.godD.good6、已知 int t=0 ; while ( t=1 ){...}则以下叙述正确的是( B)。
A)循环控制表达式的值为 0B)循环控制表达式的值为 1C)循环控制表达式不合法D)以上说法都不对7、设有以下程序段 Bint x=0,s=0;while (!x!=0 ) s+=++x;printf ( "%d",s );则A)运行程序段后输出0B)运行程序段后输出 1C)程序段中的控制表达式是非法的D)程序段执行无限次8、设 i ,j ,k 均为 int型变量,则执行完下面的 for 语句后, k 的值为( C)。
实验3、循环结构程序设计(有答案)

循环结构程序设计1.程序填空下面程序的功能为:计算1~100之间的偶数之和,完成以下的程序并运行出正确的结果。
# include <stdio.h>void main(){int i,s=0;/**************found*************/i=2 ;while(i<=100){s=s+i;/**************found**************/i+=2 ;}printf(“s=%d”,s);}运行结果:S=25502.程序改错(1) 下面程序的功能为:计算10!,修改以下的程序并上机运行通过。
#include <stdio.h>void main(){int n,t;for(n=1,t=1,t<10,t++);n=n*t;printf(“10!=%d\n”,n);}正确的程序:#include <stdio.h>void main(){int n,t;for(n=1,t=1;t<=10;t++) //句尾不能有“;”n=n*t;printf(“10!=%d\n”,n);}运行结果:10!=3628800(2) 下面程序的功能为:计算1~100之间能被3和7整除的数之和,修改以下的程序并上机运行通过。
#include <stdio.h>void main(){int i,s;s=0;while(i<=100);{if(i%3==0||i%7==0)s+=i;i=i+1;}printf(“s=%d”,s);}正确的程序:#include <stdio.h>void main(){int i,s;s=0; i=1;while(i<=100) //句尾不能有“;”{if(i%3==0&&i%7==0)s+=i;i=i+1;}printf(“s=%d”,s);}运行结果:S=2103、有一个分数序列:2/1、3/2、5/3、8/5、13/8、……,编写一个C程序,求出这个数列的前30项之和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A、d=a+b; B、d=a+c; C、d=a-b; D、d=a-c
9、下列关于for循环的说法正确的是()
A、for循环只能用于循环次数已经确定的情况
}
x=3;
}
printf("x=%d,i=%d",x,i);
}
程序运行结果:
4、#include"stdio.h"
main()
{
int i , j ;
for(i=4;i>=1;i--)
{
printf("*");
for(j=1;j<=4-i;j++)
printf("*");
printf("\n");
}6.分号无限源自7.无限8. 59. continue
10.循环体
11.循环变量赋初值循环测试条件
二、填空题
1.A
2. C
3. C
4. A
5. B
6. C
7. C
8. D
9. D
10. A
三、程序填空题
1. sum+=a sum<100 n- -
2. s+i*t t=-t
3. i<10 j%3==0 j
s=s/2;
t=t*10;
}
printf("该数的二进制数为%d\n",e);
}
2.
#include"stdio.h"
main()
{
int i,n,s=0;
printf("请输入n的值:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
s+=i*i;
printf("%d",s);
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 == 0D、dn != 1
{
b+=3;
continue;
}
b-=5;
}
printf("%d\n",a);
}
程序运行结果:
2、#include"stdio.h"
main()
{
int i;
for(i=1;i<=5;i++)
switch(i%5)
{
case 0:printf("*");break;
case 1:printf("#");break;
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后面匠值变为零的操作
main()
{
int i,j;
for(i=0;;i++)
{ j=i*10+6;
if()
printf("%d ",);
}
}
四、程序运行结果
1、#include"stdio.h"
main()
{
int a,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1)
四、程序阅读
1. 8
2. $&
*
3. x=3,i=51
4. *
**
***
****
五、编写程序
1.
#include"stdio.h"
main()
{
int s,t=1;
long e=0;
printf("请输入一个十进制数:\n");
scanf("%d",&s);
while(s!=0)
{
e=e+(s%2)*t;
模块三 循环程序设计习题及答案
一、填空题
1、当在数据处理中要重复执行相同的操作时,宜采用程序结构来实现。
2、循环的3要素是、、。
3、在循环语句体中包含另一个循环语句的用法称为。
4、执行循环语句体中的break语句后将使用包含它的循环语句。
5、要结束当前正在执行循环体语句而直接进入下一循环周期,需要执行语句。
6、在for语句中表达式允许省略,但不能少,语句for( ; ;) ;构成的是循环。
7、在for语句中,省略表达式2时,则循环为循环。
8、执行语句for(i=1;i++<4; );后变量i的值是。
9、要使用循环程序提前结束本次循环周期并开始下一个循环周期,应在循环体内有条件使用语句。
10、在每次循环周期均要执行一次的语句,称为。
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;
}
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;
}
程序运行结果:
五、编程题
1、用C语言编程实现任意输入一个十进制数,将其转换为二进制数并输出。
2、输入n的值,编程计算并输出s(n)=1*1+2*2+3*3+……+n*n
模块三循环程序设计答案
一、填空题
1.循环
2.循环条件循环体循环控制变量
3.循环嵌套(嵌套循环)
4.提前结束包含它的循环语句的执行
5. continue
case 2:printf("&");break;
default:printf("\n");
}
}
程序运行结果:
3、#include"stdio.h"
main()
{
int i,x;
for(i=1,x=1;i<=50;i++)
{
if(x>=10) break;
if(x%2==1)
{
x+=5;
continue;
D、for(i=10; ;i--) sum+=i;
三、程序填空题
1、等比数列的第一项a=1,公比q=2,下列程序是求满足前n项和小于100的最大n。
main()
{ int a,q,n,sum=0;
a=1;q=2;n=0;
do
{;
n++;
a*=q;
}while();
;
printf(“%d\n”,n);
}
2、计算1-3+5-7+…-99+101的值。
#include"stdio.h"
main()
{
int i;t=1,s=0;
for(i=1;i<=101;i+=2)
{;
;
}
printf("1-3+5+...-99+101=%d",y);
}
3、输出100以内个位数为6且能被3整除的数。
#include"stdio.h"
B、for循环是先执行循环体语句,后判断表达式2
C、在for循环中,不能用break语句跳出循环体
D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
10、下列语句中能跳出循环的是()
A、for(y=0,x=1;x>++y;x=i++) i=x;
B、for( ; ;x++)
C、while(1) {x++; }