当前位置:文档之家› 辗转相除2求最大公约数使用dowhile循环

辗转相除2求最大公约数使用dowhile循环

辗转相除2求最大公约数使用dowhile循环
辗转相除2求最大公约数使用dowhile循环

/*辗转相除2求最大公约数,使用do while循环PGYZ*/

#include

using namespace std;

int main(void)

{

int r,a,b;

cout<<"输入正整数两个数:";

do{

cin>>a>>b; /*输入有效性检测*/

if(a<=0||b<=0)

cout<<"\n输入有误,请再次输入:";

}while(a<=0||b<=0);

do{

r=a%b; a=b; b=r; /*最大公约数原本是b,但通过a=b,最大公约数为a*/ }while(r!=0);

cout<<"最大公约数为:"<

return 0;

}

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

实验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();

实验七循环结构序程序设计(二) 循环结构是三种基本程序结构之一,是用于解决复杂问题的一类程序结构。在实验六中已经学习了循环结构的基本概念,以及DO循环语句和DO WHILE循环语句的基本功能和使用规则,但这仅是循环结构的基本内容,还需要学习和掌握循环结构的综合应用,以及更复杂的循环结构,用于解决更复杂的问题。 循环结构允许嵌套,嵌套的循环结构称为多重循环,即一个循环结构的循环体中包含另一个循环结构,根据实际需要可使用多层嵌套。FORTRAN90新增了强制性终止循环语句CYCLE 和EXIT,使用这两条语句可在循环体执行过程中提前终止本次循环或者整个循环。这两条语句的使用虽然不符合结构化程序设计思想,但使用得当,可使用程序简洁、短小、高效。 本次实验是学习和掌握循环结构的综合应用的一次实系统验活动。通过本次实验,能够设计和编写比较复杂的循环结构程序。 一.实验目的 1.进一步掌握三种基本循环结构的使用。 2.掌握强制性终止循环语句EXIT和CYCLE的基本功能和使用规则,以及相互区别。 3.掌握嵌套循环结构概念和应用。 4.掌握顺序结构、选择结构和循环结构相互嵌套和综合应用。 5.掌握设计和编写较复杂程序的基本技能。 二.实验内容1 1.问题描述 公元五世纪末,我国古代数学家张丘建在《算经》中提出了“百钱买百鸡问题”:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问公鸡、母鸡、小鸡各几何?”意思是:公鸡每只5元,母鸡每只3元,小鸡一元三只。100元买100只鸡。公鸡、母鸡、小鸡各买多少只?编写程序实现之。 2.算法设计 求解本题,有两个限定条件:其一是所有的鸡共计100只;其二是所有买鸡的钱共计100元。根据这两个条件可列出下面两个方程式:(设公鸡、母鸡和小鸡数分别为x、y、z) x+y+z=100 5x+3y+z/3=100 这是一个三元一次方程组,但是其限定条件也就是方程式只有两个,这就意味着它是一个多解题。求解该问题,有多种解法,可利用计算机快速计算的特点采用试探法求解该问题。

第三单元循环结构练习题 选择题: 1、有以下程序执行后的输出结果是()。 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. for循环只能用于循环次数已经确定的情况 B. for循环是先判断表达式,后执行循环体语句 C. for循环中,可以用break跳出循环体 D. for循环体语句中,可以保含多条语句,但要用花括号括起来 3、若i和k都是int类型变量,有以下for语句 for(i=0,k=-1;k=1;k++) printf("*****\n"); 下面关于语句执行情况的叙述中正确的是()。 A.循环体执行两次 B.循环体执行一次 C.循环体一次也不执行 D.构成无限循环 4、已知 int t=0; while(t=1){...} 则以下叙述正确的是()。 A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 5、设有以下程序段 int x=0,s=0; while(!x!=0)s+=++x; printf("%d",s); 则 A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序段执行无限次 6、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为()。for(i=0, j=10; i<=j; i++, j- -) k=i+j; A.6 B.9 C.10 D.11 7、C语言中,break; 语句可以用于循环语句和( )语句中。 A.if B.switch C.for D.while 8、for(i=0; i<=15; i++) printf("%d", i ); 循环结束后,i 的值为()。 A.14 B.15 C.16 D.17 9、与语句“while(!x)”等价的语句是()。 A. while(x==0) B. while(x!=0) C. while(x==1) D. while(x!=1) 10、下述程序段中,while循环执行次数是()。 int k=0;

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π

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

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

实验报告 班级:电信13-1班学号:130******** 姓名:谢朗星成绩: 实验四循环结构 一、实验目的 1.掌握循环结构C程序的编写和调试方法。 2.掌握循环结构C程序中使用while语句和do while语句。 二、实验内容和步骤 1.调试下面三个程序,分析执行的结果。 1. #include int main( ) { int sum=0,i=1; while(i<=100) { sum=sum+i; i++; } printf(“%d\n”,sum); return 0; } 5050 在该程序中,先判断i是否<=100,如果是,在循环体先执行了sum=sum+i,接着再执行i++,然后再返回判断i是否<=100,接着再重复上步骤,直到i>100,然后输出最终结果,结束该程序。 2. #include int main( ) { int sum=0,i=1; while(i<=100) { sum=sum+i; i++; printf(“%d\n”,sum);} return 0;

} 在该程序中,先判断i是否<=100,如果是,在循环体先执行了sum=sum+i,接着再执行i++,然后输出当次运行的结果,然后再返回判断i是否<=100,接着再重复上步骤,直到i>100,结束该程序。 3.#include int main( ) { int sum=0,i=1; do { sum=sum+i; i++; printf(“%d\n”,sum); }while(i<=100); return 0; } 在该程序中,在循环体中先执行了sum=sum+i,接着再执行i++,然后输出当次运行的结果,接着再判断i是否<=100,如果是,返回执行循环体,接着再重复上步骤,直到i>100,结束该程序。 2.编写如下2道题目的程序,要求详细写出程序编写、编译、运行的过程,源程序关键执 行语句需要给出注释。 (a)统计全单位人员的平均工资。单位的人数不固定,工资数从键盘先后输入,当输入-1 时表示输入结束(前面输入的是有效数据) 分析:循环执行的条件while(i!=-1) , 循环结束条件是单位的人数n,循环体采用累加的方法。 (b)求∑= 20 1 n !n 分析:循环体采用累加和累乘。(a) #include int main() {

1、若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是 for (i=5;i;i--) for (j=0;j<4;j++){...} A) 20 B) 25 C) 24 D) 30 A 2、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为 for(i=0,j=10;i<=j;i++,j--) k=i+j; A) 12 B) 10 C) 11 D) 9 B 3、当执行以下程序段时 x=-1; do { x=x*x;} while( !x); A)循环体将执行一次 B) 循环体将执行两次 C) 循环体将执行无限次 D) 系统将提示有语法错误 A 4、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。 while( (ch=getchar())!='e' ) printf("*"); A) 5 B) 4 C) 6 D) 1 B 5、有以下程序段 int k=0; while (k=1) k++; while循环执行的次数是 A)无限次B) 有语法错,不能执行 C) 一次也不执行D) 执行一次 A 6、语句while(!e);中的条件!e 等价于( )。 A) e==0 B) e!=1 C) e!=0 D) ~e A 7、以下for循环是( )。 for(x=0,y=0;(y!=123) && (x<4);x++) A) 无限循环B) 循环次数不定 C) 执行4次D) 执行3次 C 8、C语言中while 和do-while 循环的主要区别是( )。 A) do-while的循环体至少无条件执行一次 B) while 的循环控制条件比do-while 的循环控制条件严格 C) do-while 允许从外部转到循环体内 D) do-while 的循环体不能是复合语句 A 9、以下叙述正确的是( )。 A) continue语句的作用是结束整个循环的执行 B) 只能在循环体内和switch语句体内使用break语句 C) 在循环体内使用break语句或continue语句的作用相同 D) 从多层循环嵌套中退出时,只能使用goto语句 B 10、对下面程序段,描述正确的是( )。 for(t=1;t<=100;t++) { scanf("%d",&x); if (x<0) continue; printf("%d\n",t); } A) 当x<0时,整个循环结束 B) 当x>=0时,什么也不输出 C) printf函数永远也不执行 D) 最多允许输出100个非负整数 D 11、在下列选项中,没有构成死循环的程序段是 A) int i=100; while (1) { i=i%100+1; if (i>100) break; } B) for( ; ; ); C) int k=1000; do {++k;} while (k>=1000) ; D) int s=36; while (s) --s; D 12、以下程序的输出结果是 main( ) { int a,b; for(a=1,b=1;a<=100;a++) { if (b>=10) break; if (b%5==1) { b+=5; continue; } } printf("%d\n",a); } A) 101 B) 6 C) 4 D) 3 D 13、

实验五 循环结构(续) 【实验目的】 1.掌握range()函数的使用 2. 掌握For 语句的使用。 3.掌握循环嵌套的使用。 4.掌握一些常用的算法(求素数、穷举法、求和与乘积、递推法)。 【实验内容】 000000000 1、 填空 (1) 在命令行中显示1 到10的数字 range(1,11) 。 (2) 在命令行中显示 1到10的所有偶数 range(2,11,2) 。 (3) 显示所有的大写字符。 for i in range(65,91) : print chr(i) (4) 显示1--100能被3整除的数,并且每5个数打印一行。 i=0 ‘记录能被3整除的个数 for j in range(1,101): if j%3==0: print j, i+=1 if i%5==0: print 2、输出斐波那契级数1、1、2、 3、5、8、13……,此级数项的规律是:前两项的值各为1,从第3项起,每一项是前2项的和。(要求一行输出6项)。 (1) 当某项的数值大于或等于30000时结束。 (2) 求前100项之和。 (1)1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 (2 3、编写程序,输入一个数,判断该数是否为完数。例如6是一个完数,因为6=1+2+3。 x=input ("Enter an integer:") i=1 while True : x=x-i i+=1 if x==i: print "A perfect number." break if x==30000: break print c, if i%6==0: print (2) a=1 b=1 sum=2 i=2 #计数 while True: i+=1 #计数:第i 次 c=a+b a=b b=c sum+=c if i==100: #完成第100次求和后退出循环 break print sum

循环结构程序设计典型例题 例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. 实验目的 熟练使用for语句控制循环。 2. 实验任务 (1)实验内容:打印输出所有"水仙花数"。所谓"水仙花数"是指一个三位的正整数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=13+53+33。 (2)实验要求:没有输入,输出所有"水仙花数"。 程序输出以下4个"水仙花数": 153 370 371 407 3. 实验分析 (1)问题分析:用循环语句循环测试每一个三位数是否符合"水仙花数"的规则。即对所有100至999的数,把每个数分解出个位数,十位数和百位数,再判断是否符合条件。 (2)实现要点:用一次穷举循环就可以了。因为是固定次数的循环,一般采用for语句。对于每个当前的整数,用取余和整除运算分解出各位的数字。对于三位的正整数n,个位数g = n%10,十位数s = (n%100)/10,百位数b = n/100。 4. 参考代码 #include int main(void) { int n, g, s, b; for (n=100; n<=999; n++) { b = n / 100; s = n / 10 % 10; g = n % 10; if ( g*g*g + b*b*b + s*s*s==n) printf("%d ",n); } return 0; } 5. 思考题 什么情况下采用穷举循环是比较合适的? 【教学案例二】 1. 实验目的 (1)熟练使用while 语句和理解该语句的执行顺序,掌握累加和计算的算法。 (2)熟练运用断点调试。 2. 实验任务 74

(1)实验内容:根据下面关系式,求π的值,直到最后一项的值小于epsilon 。epsilon 的值由键盘输入。 12!3!!12335357357n p =++++???????…+…(2n+1) (2)实验要求:改正下面的错误程序,达到满足如下表的运行示例结果。测试用例: /* 1 */ #include /* 2 */ int main(void)/* 3 */ { /* 4 */double sum,item;/* 5 */double epsilon;/* 6 */int i; /* 7 */printf("Enter Epsilon:");/* 8 */scanf("%lf",&epsilon);/* 9 */item = 1; /* 10*/sum = 0; /*调试时设置断点*//* 11*/while (item >= epsilon)/* 12*/{/* 13*/sum += item;/* 14*/i++;/* 15*/item *= i;/* 16*/item /=(2*i-1);/* 17*/} /* 18*/printf("Pi=%.6lf\n",2*sum); /*调试时设置断点*//* 19*/return 0; /* 20*/ } 3. 实验分析 (1)程序分析:这是一个求累加和的问题。为解决这个问题,首先抽取出具有共性的算式:sum=sum + item ,其中sum 存放累加和,item 表示第i 项的内容。题目没有显式地给出循环次数,只是提出了精度要求。在反复计算累加的过程中,一旦第i 项的绝对值小于Epsilon ,就达到了给定的精度,计算终止,这说明精度要求实际上给出了循环的结束条件,

循环结构汇编语言程序设 计实验报告 实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和内存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验内容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示: 四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:+。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序汇编(翻译)后生成二进制目标程序,文件名为 (3)目标程序需要经连接生成可执行程序,文件名为 2)汇编环境

最基本的汇编环境只需要两个文件:和。将这两个文件拷入到已经建好的文件夹(例如huibian)中,并将文件夹huibian放在硬盘根目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入 数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数 据为13,0,59,900,587,1,657,234,34,48) 六、实验心得 通过本次循环结构汇编语言程序设计的实验,我初步了解了汇编语言的基本语法,利用汇编语言的循环结构实现了对于数组A中元素的排序以及求得元素中的最大值最小值。另外,在实验过程中,我也了解到了,我们要时刻细心严谨,认真做好每一步,避免出现低级错误。 七、汇编语言代码 1、利用冒泡排序实现求最大值最小值的代码 data segment mes1 db 'the max:$' mes2 db 'the min:$' a dw 13,0,59,900,587,1,657,234,34,48 data ends code segment main proc far assume cs:code,ds:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax ;以下是起泡排序核心代码 mov cx,10 dec cx loop1: mov di,cx mov bx,0

实验6 循环结构程序设计(2) 一、实验目的: 1、继续熟悉循环程序设计,掌握不确定次数循环判定条件的设置; 2、掌握多重循环的使用,能够熟悉应用穷举法、迭代法、判定素数、求最大公约定等典型算法; 3、熟悉break语句和continue语句在循环中的应用,并区分两者的不同。 二、实验内容 1、(基础题)编写程序,输出从公元2000年到3000年所有闰年的年份,每行输出10个年份。判定闰年的条件是: (1)年份能被4整除,但不能被100整除,则是闰年; (2)年份能被400整除也是闰年。 (提示:循环变量从2000变化到3000,然后去判断每一个年份是否为闰年,若是,则输出。由于每行只能输出10年份,还要定义一个整型变量用于计数) 程序运行效果图如下图所示: 2、在全系1000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。请根据题目要求完善代码。

思路:①循环次数不确定,但最多循环1000次:在循环体中累计捐款总数,用if语句检查是否达到10万元,如果达到就不再继续执行循环,终止累加;②计算人均捐款数。 #include ______________//定义符号常量SUM,值为100000 int main() { float amount,aver,total; int i; for (i=1,total=0;i<=1000;i++) { printf("please enter amount:"); scanf("%f",_____);//输入用户捐款数额,存入amount变量 ___________;//用户捐款数额累加进total变量中 if(total>=SUM) //判断捐款数额是否已够 _______; } //计算平均每人捐款的数目 if(i>1000) //循环正常结束 aver=total/(i-1); else //循环提前结束 ________; printf("num=%d\naver=%10.2f\n",i,aver); return 0; }

读书破万卷下笔如有神 上机实验五循环结构程序设计 姓名:学号: 一.目的要求 1.掌握用for、while、do-while语句实现循环的基本技巧; 2.掌握循环次数不确定的解题技巧; 3.掌握break语句、continue语句在循环语句中的作用以及不同之处; 4.掌握多重循环的编程技巧。 二.实验内容 【实验题1】. 程序填空:分别用for、while、do-while语句编程,输出菲波那契数列的前20项,要求每行输出10项。 源程序1:用for语句实现 编译、连接并运行该程序,则显示 思考:line 5和line 8行中printf()函数的格式控制符均为”m”, 假如均改为”%d”, 输出结果有何不同?

输出的数据无间隔 源程序2:用while语句实现 #include void main() { int i,x1,x2,x; x1=x2=1; printf(mm,x1,x2); /*输出前2项*/ i= 3 ; while( i<=20 ){ x=x1+x2; printf(m,x); */项10每行输出/* printf(\ ); ) !(i_x0010_) (if 读书破万卷下笔如有神 x1= x2 ; x2= x ; i++ ; } } 源程序3:用do-while语句实现 -5。x的值,计算下列算式的值,直到最后一项的绝对值小于10【实验题2】程序填充:输入double 型变量23456xxxxxs?x??????...2!3!4!5!6!源程序如下:

读书破万卷下笔如有神 编译、连接并运行程序,输入0.5, 则显示:;输入 1 ,则显示:;输入1.7,则显示:。 略 line 21中的表达式“f*=i”,等同于表达式“f=f*i ”;同理,line 11中的表达式“s= s+item”也可替换为“s+=item ”. 【实验题3】程序填空:验证哥德巴赫猜想——任何一个大于6的偶数均可表示为两个素数之和。例如:6=3+3, 8=3+5,10=5+5,…,18=7+11。要求将6-100之间的偶数均表示为素数之和,一行输出5组。【分析】 1. 本程序采用双层循环:外层循环负责对6~100之间的偶数逐个输出加法式子;内层循环负责为一个特定的偶数k, 找出相应的素数a和b. 2. 对于偶数k(k>=6),符合条件的两个素数a和b必然位于区间[3, k-1].(为什么不从2开始?) 3. 由于k=a+b,通过内层循环试探性地找出第一个加数a后,第二个加数b可用推算而得,再调用函数prime()来判断a、b是否是素数,如果两者均为素数,则停止寻找素数,并输出k=a+b. 源程序如下:

第三单元循环结构练习题 选择题:(有答案) 1、有以下程序执行后的输出结果是()。 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. for循环只能用于循环次数已经确定的情况 B. for循环是先判断表达式,后执行循环体语句 C. for循环中,可以用break跳出循环体 D. for循环体语句中,可以保含多条语句,但要用花括号括起来 3、若i和k都是int类型变量,有以下for语句 for(i=0,k=-1;k=1;k++) printf("*****\n"); 下面关于语句执行情况的叙述中正确的是()。 A.循环体执行两次 B.循环体执行一次 C.循环体一次也不执行 D.构成无限循环 4、若运行以下程序时,输入2473↙,则程序的运行结果是:() 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 ; } pr intf(“\n”); } A)668977 B)668966 C)66778777 D)6688766 5、以下for循环的执行次数是:()。 for (x=0,y=0; (y=123) && (x<4) ; x++) ; A)无限循环 B)循环次数不定 C)4次 D)3次 6、已知 int t=0; while(t=1){...} 则以下叙述正确的是()。 A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 7、设有以下程序段() 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的值为()。for(i=0, j=10; i<=j; i++, j- -)k=i+j; A.6 B.9 C.10 D.11 9、C语言中,break; 语句可以用于循环语句和( )语句中。 A.if B.switch C.for D.while 10、for(i=0; i<=15; i++) printf("%d", i ); 循环结束后,i 的值为()。 A.14 B.15 C.16 D.17

实验二简单循环结构的实现 实验目的 (1)计数型循环结构的构建 (2)for语句 实验内容 任务一:改错输出华氏摄氏温度转换表 1.打开程序文件error1-10.cpp #include int main(void) { int fahr , lower, upper; /* fahr表示华氏度 */ double celsius; /* celsius表示摄氏度 */ lower = 30; /* 变量 lower 给定转换范围的下限 */ upper = 35; /* 变量 upper 给定转换范围的上限 */ printf("fahr celsius\n"); /* 显示表头 */ for (fahr = lower , fahr <= upper, fahr ++) ; celsius = 5 /9 * (fahr - 32.0); /* 温度转换 */ printf("%3.0f %6.1f\n", fahr, celsius); return 0; } 2. 程序的功能是输出30-35度的华氏温度与摄氏温度的对应表。请根据VC6的compile和link错误信息改正错误,使程序可以运行。 #include void main() { int fahr , lower, upper; /* fahr表示华氏度 */ double celsius; /* celsius表示摄氏度 */ lower = 30; /* 变量 lower 给定转换范围的下限 */ upper = 35; /* 变量 upper 给定转换范围的上限 */ printf("fahr celsius\n"); /* 显示表头 */

1. 摩尔理想气体在400K 与300K 之间完成一个卡诺循环,在400K 的等温线上,起始体积为0.0010m 3,最后体积为0.0050m 3,试计算气体在此循环中所作的功,以及从高温热源吸收的热量和传给低温热源的热量。 解答 卡诺循环的效率 %25400 300 1112=-=- =T T η (2分) 从高温热源吸收的热量 2110.005 ln 8.31400ln 53500.001 V Q RT V ==??=(J ) (3分) 循环中所作的功 10.2553501338A Q η==?=(J ) (2分) 传给低温热源的热量 21(1)(10.25)53504013Q Q η=-=-?=(J ) (3分) 2. 一热机在1000K 和300K 的两热源之间工作。如果⑴高温热源提高到1100K ,⑵低温热源降到200K ,求理论上的热机效率各增加多少?为了提高热机效率哪一种方案更好? 解答: (1) 效率 %701000300 1112=-=- =T T η 2分 效率 %7.721100 300 1112=-=- ='T T η 2分 效率增加 %7.2%70%7.72=-=-'='?ηηη 2分 (2) 效率 %801000 2001112=-=- =''T T η 2分 效率增加 %10%70%80=-=-''=''?ηηη 2分 提高高温热源交果好

3.以理想气体为工作热质的热机循环,如图所示。试证明其效率为 1112121-??? ? ??-???? ??-=P P V V γη 解答: )(22211V p V p R C T C M M Q V V mol -=?= 3分 )(22122V p V p R C T C M M Q p P mol -=?= 3分 )1()1( 1)()(112 12 1 222122121 2---=--- =- =p p V V V p V p C V p V p C Q Q V p γη 4. 如图所示,AB 、DC 是绝热过程,CEA 是等温过程,BED 是任意过程,组成一个循环。若图中EDCE 所包围的面积为70 J ,EABE 所包围的面积为30 J ,过程中系统放热100 J ,求BED 过程中系统吸热为多少? 解:正循环EDCE 包围的面积为70 J ,表示系统对外作正功70 J ;EABE 的面积为30 J ,因图中表示为逆循环,故系统对外作负功,所以整个循环过程系统对外 作功为: W =70+(-30)=40 J 3 分 设CEA 过程中吸热Q 1,BED 过程中吸热Q 2 ,由热一律, W =Q 1+ Q 2 =40 J 3 分 p V O A B E D C 2 V 1 V p p

相关主题
文本预览
相关文档 最新文档