第5章循环上机题目
上机实验五-循环结构程序设计-答案

上机实验五-循环结构程序设计-答案上机实验五循环结构程序设计姓名:学号: 姓名:本次实验一共5个题目,4个必做,一个选做我建的浙师大c程序设计群,群号为:185106065,大家加入下,验证信息请写为班级+姓名。
我打算以后把每次实验的答案(我写的代码)都放到群共享里面,大家可以在群里讨论下不会的地方或者不同的实现方法。
重要提醒:邮件主题和本word文件名统一用班级+学号+姓名+实验几命名(学号和姓名记得不能少),不然我在检查作业提交情况时可能会漏掉一.目的要求1.掌握用for、while、do-while语句实现循环的基本技巧;2.掌握循环次数不确定的解题技巧;3.掌握break语句、continue语句在循环语句中的作用以及不同之处;4.掌握多重循环的编程技巧。
二.实验内容【实验题1】. 程序填空:分别用for、while、do-while语句编程,输出菲波那契数列的前20项,要求每行输出10项。
思考:line 5和line 8行中printf()函数的格式控制符均为”%6d”, 假如均改为”%d”, 输出结果有何不同?源程序2:用while语句实现#includevoid main(){ int i,x1,x2,x;x1=x2=1;printf("%6d%6d",x1,x2); /*输出前2项*/i= 3 ;while(i <= 20 ){x=x1+x2;printf("%6d",x);if(i%10 == 0 ) printf("\n"); /*每行输出10项*/x1= x2 ; x2=x ;i++ ;}}【实验题2】(课本p141第10题)有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求出这个分数序列的前20项之和。
源代码粘贴处#includevoid main(){int i;double x1,x2,x,sum = 0;x1=x2=1.0;//直接在上一题的程序上做简单修改for(i=1 ; i<=20; i++){x=x1+x2;sum = sum +x/x2;x1= x2 ; x2= x ;}printf("%f", sum);}【实验题3】(课本p141第11题)一个球从100米高度自由落下,每次落地后反跳回原来高度的一般,再落下,再反弹。
汇编语言程序设计_第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。
第5章-循环结构程序设计PPT优秀课件

5.3.1 前测型Do…Loop循环语句
格式:
Do [While | Until <条件表达式>] <语句块> [Exit Do] <语句块>
Loop
18
5.3.1 前测型Do…Loop循环语句
前测型Do…Loop循环的流程图
Do While…Loop流程图
Do Until…Loop流程图
条件表达式 值为真?
格式:
Do <语句块> [Exit Do] <语句块>
Loop [While | Until <条件表达式>]
23
5.3.1 后测型Do…Loop循环语句
说明:
后测型Do…Loop循环语句与前测型Do…Loop循环语句的主 要区别在于:
后测型要先执行一次循环体,再判断条件;而前测型要 先判断条件,然后根据判断结果决定是否执行循环体。因此 对于后测型,不管条件是否满足,循环体至少有一次执行机 会。
16
5.3 Do…Loop循环语句
导入:
Do…Loop循环也属于条件型循环,即根据条件的 成立与否来决定是否执行循环。Do…Loop循环的应 用具有很强的灵活性,主要体现在:它既能指定循环 开始条件,又能指定循环结束条件;既能构成前测型 Do…Loop循环语句,又能构成后测型Do…Loop循 环语句。
25
5.3.1 后测型Do…Loop循环语句 【例5-10】将400~600间能够被3整除的数 输出(上机练习)
【例5-11】(略)
26
5.4 循环嵌套
介绍:
一个循环结构中又包含一个或多个循环结构被称为 循环嵌套,或称多重循环。 多重循环对嵌套的层数没有限制。有几层嵌套,就 称为几重循环,如二重循环、三重循环、四重循环 等。一般地,把嵌套在一个循环体内部的另一个循 环结构称为内循环;这样,嵌套了其他内循环部分 的循环结构就称为外循环。 为了使多重循环结构具有较好的可读性,通常用缩 进方式书写相应的源代码。
第五次上机-循环语句

第五次上机-循环语句C/C++⼆级考试基础训练题******⼀. 选择结构******1.1.编⼀程序,通过键盘输⼊⼀个字符,判断该字符是数字字符、⼤写字母、⼩写字母、空格还是其他字符。
1.2.编程判断输⼊整数的正负性和奇偶性。
1.3.编⼀程序, 从键盘输⼊三⾓形的三条边, 然后进⾏判断。
打印出是否能构⾯三⾓形, 是否是等腰三⾓形, 是否是等边三⾓形,是否是直⾓三⾓形.1.4.编写程序,求解简单表达式。
输⼊⼀个形如“操作数运算符操作数”的四则运算表达式,输出运算结果。
[要求,对输⼊错误的四则运算,给出表达式错误的提⽰。
]1.5.输⼊三⾓形的三条边长,求三⾓形的⾯积1.6.输⼊两个⼗进制整数,输出这两个数的关系。
如若输⼊的数据为4,5;则输出结果为4<5,若输⼊数据为5,4;则输出结果为5>4.若输⼊数据为5,5;则输出结果为5=5.1.7.从键盘输⼊学⽣成绩,输出对应的等级(100分为A,90~99为B,80~89为C,70~79为D,60~69为E,⼩于60为F)(要求:程序运⾏时,能够实现从键盘输⼊⼀个学⽣成绩,学⽣成绩为整数,然后输出该成绩的等级)。
1.8.输⼊三个数,按从⼤到⼩的顺序输出。
[提⽰:程序不需要⽤循环语句,⽤条件语句即可]1.9.输⼊⼀个不多于4位的正整数,判断它是⼏位数。
如输⼊234,则输出结果为:234是3位数[要求,⽤条件语句进⾏判断即可,不⽤循环]。
1.10.编程设计⼀个简单的猜数游戏,先由计算机“想”⼀个1~100之间的数请⼈猜,如果⼈猜对了,则计算机给出提⽰“Right!”,否则提⽰“Wrong!”,并告诉⼈所猜的数是⼤还是⼩。
1.11.在屏幕上显⽰⼀张如下所⽰的时间表:*****Time*****1 morning2 afternoon3 nightPlease enter your choice:操作⼈员根据提⽰进⾏选择,程序根据输⼊的时间序号显⽰相应的问候信息,选择1时显⽰"Good morning",选择2时显⽰"Good afternoon",选择3时显⽰"Good night",对于其他选择显⽰"Selection error!",⽤switch语句编程实现。
第五章循环结构程序设计习题解答

5、设某县2000年工业产值为200亿元,如果该县预计平均 每年工业总产值增长率为4.5%,那么多少年后该县工业总 产值将超过500亿? 算法步骤: 第一步,输入2000年的年生产总值. 第二步,计算下一年的年生产总值. 第三步,判断所得的结果是否大于 500.若是,则输出该年的年份;否则,返 回第二步. (1)确定循环体:设a为某年的年生产 总值,t为年生产总值的年增长量,n为 年份,则循环体为t=0.045a,a=a+t,n=n+1. (2)初始化变量: n=2000, a=200. (3)循环控制条件: a>500
3、从键盘输入一个正整数n,计算该数的各位数字之和并输出。 #include <stdio.h> void main() { long n; int s, i=1,j=10; scanf("%ld",&n); s=n%10; while(n/j!=0) { s=s+n/j%10; j=j*10; i++; } printf("i=%d, s=%d ",i,s); }
11、 九· 九表----1
1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 4 4 8 12 16 20 24 28 32 36 5 5 10 15 20 25 30 35 40 45 6 6 12 18 24 30 36 42 48 54 7 7 14 21 28 35 42 49 56 63 8 8 16 24 32 40 48 56 64 72 9 9 18 27 36 45 54 63 72 81
2、输入一串字符,直到输入一个星号为止, 统计(输出)其中的字de <stdio.h> void main() { char ch; int char_num=0,int_num=0; ch=getchar(); while(ch!='*') { if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) char_num++; else if(ch>='1'&&ch<='9') int_num++; ch=getchar(); } printf("char_num = %d, int_num = %d\n",char_num,int_num); }
cyu第5章循环(新)

for( ; ; ) { printf("这将一直进行下去 这将一直进行下去"); 这将一直进行下去 i = getchar(); if(i == 'X' || i == 'x') break; }
int i=1;s=0; while(i<1) ( ) { s=s+i; i=i+1; } printf("s=%d\n",s); ( ) }
17
int i=1,s=0; do { s=s+i; i=i+1; } while(i<1); printf("s=%d\n",s);
左边的程序结果为:s=0,而右边的程序结果为 而右边的程序结果为:s=1。 左边的程序结果为 而右边的程序结果为 。
折扣(y) 无 1% 2% 5% 10%
3
本章目标
理பைடு நூலகம்为什么使用循环结构 熟练掌握while循环的使用 熟练掌握do-while循环的使用 理解while 和 do-while 循环的区别
4
循环的必要性
int a1,a2,a3, a4,a5; a1 = 1 * 10; printf("1 × 10 = %d a2 = 2 * 10; printf("2 × 10 = %d a3 = 3 * 10; printf("3 × 10 = %d a4 = 4 * 10; printf("4 × 10 = %d a5 = 5 * 10; printf("5 × 10 = %d \n",a1); \n",a2); \n",a3); \n",a4); \n",a5);
《c语言程序设计教程》林芳,易云飞版第五章循环结构例题练习题详解
例1/****************************************************************************** *****题目:计算n的阶乘!设计:狼影时间:2012-03-05 19:59******************************************************************************* ********//****************************************************************************** ***注意!下面所求数的阶乘不能超过31,要请求更大数的阶乘!请参照第二个阶乘函数!哈!第二个能看懂的就看啊!思想是用数组来保存数据,然后在输出数组中的数!(下面对它做了充分的解释,祝你能看懂哈!!)******************************************************************************* ******//***********************第一个函数*******************************/# if 1# include <stdio.h>main(){int n, i;unsigned long sum = 1;//请求用户输入数据,不能超过12,所以为了避免溢出出错,在下面限制了数的大小printf("请输入要求什么数的阶乘\n");scanf("%d", &n);//限制数的大小if(n<0 || n>12)printf("你输入错误!\n");if(n==0 ||n == 1)printf("此数的阶乘为1\n");//求当n大于一时的阶乘!if(n>1 && n<=12){for(i = 2; i<=n; i++){sum *= i;}printf("%d!=%d\n" ,n, sum);}}# endif/****************************************************************************** *****************请输入要求什么数的阶乘1212!=479001600Press any key to continue******************************************************************************* ******************请输入要求什么数的阶乘13你输入错误!Press any key to continue******************************************************************************* *********************//**********************************************第二个函数利用数组求大数阶乘!*******************************//****************************************************************************** *************************重点!要将数组中的每一位元素都乘以2到n的数;规范数组元素,看每位数组元素保留几位数;在规范中,如何计算进位?解决:用数组元素整除位数加一的最小数例如:保留3位,就要用数组元素整除1000 ;123/1000 = 0,进位为01234/1000 = 1,进位为1;如何保证每位数组元素有一定的位数?解决:用数组元素整除位数加一的最小数求余如:保留3位123%1000 = 123; 1234%1000 = 234;当有进位时,数组下标要加一;如何判断有进位?当当前的下标元素加一的数组元素>零时,说明有进位;正确输出(要逆序输出数组,从右向左);例如:7!= 5040 假如每位数组元素保留3位数则在数组中7!的表示法为40 / 5(为了方便看每位数组元素用/隔开)由上知数组逆序输出,因为产生的进位都会加到数组的下一位;由上可以看到如果按上面的逆序输出得到的是540,少了一个零,为了保证零的不缺失,所以输出时除了最高位的都要用03d%保证三位,不足三位的在左边补零。
C语言基础 五、循环
五、循环结构程序设计本章概述:以笔试和上机两种形式考核。
笔试中,多出现在选择题第20-23题。
填空题第8、9题。
分值约占12%。
上机中,三种题型中均有体现,抽中几率约为37%。
考生要熟练掌握。
大纲要求:1.for循环结构。
2.while和do-while循环结构。
3.continue语句和break语句。
4.循环的嵌套。
重点难点:1.for循环结构。
2.continue语句和break语句。
3.循环的嵌套。
考点分析:while 语句while 语句一般形式:while (条件表达式){循环体}while 语句执行过程:先判断条件是否成立,只要条件成立则一直执行循环体语句,直到条件不成立则结束循环,结束while语句。
说明:(1)while语句的特点是先判断,再执行。
因此,若条件表达式的值一开始就为“假”,那么循环体一次也不执行。
(2)当循环体为多个语句组成,必须用{}括起来,形成复合语句。
(3)在循环体中应有使循环趋于结束的语句,以避免“死循环”的发生。
试题解析1.要求通过while循环不断读入字符,当读入字母N时结束循环。
若变量已正确定义,以下正确的程序段是(A)A)while((ch=getchar())!=′N′)printf("%c",ch);B)while(ch=getchar()!=′N′)printf("%c",ch);C)while(ch=getchar()==′N′)printf("%c",ch);D)while((ch=getchar())==′N′)printf("%c",ch);解析:while语句的功能是:计算表达式的值,如为真,则执行循环体语句,执行完毕后,再计算表达式的值,若仍为真,则重复执行循环体语句。
直到表达式的值为假时,结束循环。
ch=getchar()应加一个括号,表示输入字符的函数。
C语言5
当型循环
2012-7-15
直到型循环
3
5.1 while语句
格式:
Program Design in C Language
while (< 表达式 >) 循环体语句;
流程图:
0 (假)
•先判断循环条件,若条件成立
(表达式的值为非0),则执行循 环体语句,
2012-7-15
17
5.3 for语句 格式:
Program Design in C Language
for ( [ 表达式 1] ; [表达式2 ] ;[ 表达式3])
循环体语句; 各部分解释:
表达式1 :一般用来给循环变量赋初值。
表达式3 :一般用来修改循环变量的值。
表达式2 :循环条件判断,若省略,则认为循环条件恒为“真”。
8
流程图与程序: main ( ) { int i, s=0; i=1;
{ }在此处表示循环体 的范围,一定不能少
定 义 变 量 s, i
s =0 , i=1 ;
i≤ 1 0 0
N
while ( i <= 100 ) { s+=i; i++; }
循环变量修改
循环条件
Y
s +=i ;
i++;
printf(“1+2+…+100=%d\n", s); }
循环体可以为空语句(分号不能省
Program Design in C Language
)\单语句\复合语句。 循环体为复合语句时,不要漏掉花括号。如果不加花括 弧,则while语句的范围只到while后的第一个分号处。 循环体语句为: s+=i;
C语言上机实验5-12
17.5实验5循环结构程序设计1.实验目的(1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。
(2)掌握在程序设计中循环的方法实现一些常用的算法(如穷举、迭代、递推等)。
(3)进一步学习调试程序。
2.实验内容编程并上机调试运行(1)输入一行字符、分别统计出其中的英文字母、空格、数字和其他字符的个数(本题是教材第5章第4题)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。
(2)输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。
例如,153是一个水仙花数,因为153=1³+5³+3³(本题是教材第五章第8题)。
(3)猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃,只剩一个桃子了。
求第一天共摘了多少桃子(本题是教材第五章第12题)。
再得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。
请修改程序并运行,检查结果是否正确。
(4)用牛顿迭代法求方程2X³=4x²+3x-6=0在1.5附近的根(本题是教材第五章第13题,学过高等数学的读者可选做此题)。
再得到正确结果后,请修改程序所设的X初始值由1.5改为100,1000,1000,再运行,观察结果,分析不同的x初值对结果有什么影响,为什么?修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。
3.预习内容预习教材第5章。
17.6实验6数组1.实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。
(2)掌握字符数组和字符串函数的使用。
(3)掌握与数组有关的算法(特别是排序算法)。
2.实验内容编程序并上机调试运行。