实验2-循环结构题目 ( 2 )

实验2-循环结构题目 ( 2 )
实验2-循环结构题目 ( 2 )

实验2 循环结构

程序填空

1.

本题分值:10

题目描述:有30个人在一家小饭馆里用餐,其中有男人、女人和小孩。每个男人花了3先今,每个女人花了2先令,每个小孩花了1先令,一共花去50先令。问男人、女人以及小孩各有几个人。以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上调试程序,以测试填入的部分是否正确。

代码:

#include

using namespace std;

int main()

{

int n; //n记录解的个数

int a,b,c; //分别记录男、女、小孩的人数

n=__(1)__; //初始化n的值

for(a=1;a<=30;a++)

{

for(b=1;b<=30;b++)

{

c=__(2)__;

if( __(3)__ )

{

cout<<"男人有:"<

n++;

}

}

}

cout<<"共有"<

return 0;

}

2.

本题分值:10

题目描述:下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填空使程序完整,并在计算机上调试程序,以测试填入的部分是否正确。

代码:

#include

using namespace std;

int main()

{

int n, k=1, s=0, m ;

for (n=1 ; n<=100 ; n++)

{

k=1 ; s=0 ;

__(1)__;

while ( __(2)__ )

{

k*=m%10;

s+=m%10;

__(3)__;

}

if (k>s) cout<

}

return 0;

}

3.

本题分值:10

题目描述:一个数如果恰好等于除它本身的所有因子之和,这个数就称为完数。例如,6=1+2+3, 6就称为完数。输出1000以内所有满足完数条件的数及其个数。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。

代码:

#include

using namespace std;

int main()

{

int n,s,i,count=0;

cout<<"1000以内的完数为:";

for(n=1;n<1000;n++)

{

s=0;

for(i=1;i

if (n%i__(1)__) s=s+i; //如果i是n的因数

if (s==__(2)__) //判断是否满足完数的条件

{

cout<

count=count+1; //完数的个数+1

}

}

cout<

return 0;

}

4.

本题分值:10

题目描述:求100以内能被3整除且个位数字为9的所有正整数。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。

代码:

#include

using namespace std;

int main()

{

int i;

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

{

if(i%3__(2)__ && i%__(3)__==9)

cout<

}

return 0;

}

5.

本题分值:10

题目描述:求输入的两个正整数的最大公约数。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。

代码:

#include

using namespace std;

int main()

{

int x,m,n;

cin>>m>>n;

if(m

else __(1)__; //x取m和n中的较小值

//x从m和n的较小值开始到1的范围内递减寻找公约数

while(x>=__(2)__)

{

if(m%x==0 && n%x==0) //如果x是m和n的约数,x的值即为最大公约数__(3)__;

x=x-1;

}

cout<

return 0;

}

程序设计

6.

本题分值:10

题目标题:数字求和。

时间限制:1000MS

内存限制:32768KB

题目描述:给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?

输入描述:输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。

输出描述:输出一行,给出一个正整数,是5个数中小于a的数的和。

样例输入:

10 1 2 3 4 11

样例输出:

10

7.

本题分值:10

题目标题:球弹跳高度的计算。

时间限制:1000MS

内存限制:32768KB

题目描述:一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第5次落地时,共经过多少米? 第5次反弹多高?

输入描述:输入一个整数h0,表示球的初始高度。

输出描述:两个数据s和h,分别表示第5次落地时共经过s米,第5次反弹高度为h米,s和h用空格隔开。

注意:结果可能是实数,结果用double类型保存。

提示:输出时不需要对精度特殊控制,用cout<

样例输入:10

样例输出:28.75 0.3125

8.

本题分值:10

题目标题:求分数序列和。

时间限制:1000MS

内存限制:32768KB

题目描述:有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和。输入描述:输入有一行:正整数n。

输出描述:输出有一行:分数序列的和(浮点数,精确到小数点后4位)。

【提示】

1. 最好在程序中使用双精度浮点数(double)记录求得的和。

2. 要输出浮点数、双精度数小数点后4位数字,可以用下面这种形式:

cout<

按上面的形式控制输出格式时,需在源程序最开始加上一行:#include

样例输入:

99

样例输出:

160.4849

9.

本题分值:10

题目标题:点和正方形的关系。

时间限制:1000MS

内存限制:32768KB

题目描述:在平面坐标系中,有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断给定的多个点是否在这个正方形内。

输入描述:多组数据,每行包含两个浮点型数据,分别表示一个点的横、纵坐标,输入坐标为0,0时表示输入结束。(注意,输入的数据不止3组)

输出描述:对每组输入的点进行判断,显示yes或no,表示是否在正方形中,最后输入的原点也要显示yes,然后才不再继续输入点坐标。(当点在正方形的边上时,也认为在正方形内)

样例输入:

3 4

0.5 1

0 0

样例输出:

no

yes

yes

10.

本题分值:10

题目标题:抓交通肇事犯。

时间限制:3000MS

内存限制:32768KB

题目描述:一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号所构成的数字正好等于某一个整数的平方。请根据以上线索求出车号。

输入描述:无。

输出描述:直接显示一个四位整数表示肇事车号

样例输入:

样例输出:

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

实验2-循环结构

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

实验04 循环结构的实现

实验四循环结构设计实现 一、实验目的 1. 掌握while,do-while循环语句的使用与区别; 2. 掌握循环条件、循环体、循环终止等循环要素, 3. 理解循环的执行过程。 二、实验内容 1、上机验证课堂实例:求1+2+3+…+100的和。要求分别用while和do-while和for语句实现。 2、打印出所有的“水仙花数”。 算法提示: 1)水仙花数是一个3位数,被判断的范围是[100,999]。 2)如何分离出百、十、个位数。可参考教材P115例5.16。 3、验证课堂例题:打印“九九乘法表”。 4、公元钱五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 数学模型:设i代表母鸡数,j代表公鸡数,k代表小鸡数。用凑数法解决问题。 i+j+k=100 (1)  5*i+3*j+k\3=100 (2) 算法提示: S1. i从1到20依次一一取值; S2.对每一个固定的i值,j都要从1到33依次一一取一遍值; S3.对每一个固定的i值及每一个固定的j值,按公式k=100-i-j取得k值; S4.做下列验证工作:S3中所取的一组i,j,k是否满足条件(2) 5*i+3*j+1/3*k=100? 若满足,则输出这组解i,j,k,然后转2;否则直接转2。 当i已取到20,j也取到33时整个任务就结束。 三、仪器、设备、材料 微机 四、实验准备 1.理论知识预习及要求 ①表达式的书写规范; ②while语句和do-while语句的格式、功能、执行过程; ③while语句和do-while语句间的区别; ④循环结构程序设计的简单算法。 2.实验指导书预习及要求 对程序执行流程不清楚时,请先画出程序的流程图. 上机前先思考编出程序,并分析结果,上机时调试,并写出实验结果。 3.其他准备

实验07 循环结构程序设计(二)

实验七循环结构序程序设计(二) 循环结构是三种基本程序结构之一,是用于解决复杂问题的一类程序结构。在实验六中已经学习了循环结构的基本概念,以及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 这是一个三元一次方程组,但是其限定条件也就是方程式只有两个,这就意味着它是一个多解题。求解该问题,有多种解法,可利用计算机快速计算的特点采用试探法求解该问题。

实验6 循环结构程序设计

实验6 循环结构程序设计 一.实验目的 1.掌握在设计条件型循环结构时,如何正确地设定循环条件。 2.掌握如何正确地控制计数型循环结构的循环次数。 3.练习并掌握选择结构与循环结构的嵌套、多重循环的应用。 4.掌握在程序设计中用循环的方法实现一些常用算法,加强调试程序的能力。二.实验要求 1.复习while、do-while、for语句和continue、break语句。 2.能够用流程图表示实验题目的算法。 3.能够独立调试运行实验题目。 4.本实验要求4学时完成。 三.实验内容和步骤 题目1:分别用while循环和for循环计算:1+2+3+…+100=? 要求:写出程序并上机查看运行结果。 题目2:输入一行字符,分别统计出其中大小写英文字母、空格、数字和其他字母的个数。要求:程序填空并写出2组运行结果。 01#include 02#include 03#include 04main( ) 05{ 06char c; 07int letter=0,capital=0,lower=0,space=0,digital=0,other=0; 08printf("\ninput a line character :\n"); 09while((c=getchar())!='\n') 10{ 11if( 【1】) /*统计大小写字母的个数*/ 12{ 13letter++; 14if ( 【2】) 15lower++; /*统计小写字母的个数*/ 16} 17else if( 【3】) 18space++; /*统计空格的个数*/

循环结构程序设计练习题

第三单元循环结构练习题 选择题: 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;

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

嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调试程序。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错, 及时改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”, 根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果 是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 (1)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 编写程序如下: #include int main() { char c; int letters=0,space=0,digit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n')

实验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π

实验四 循环结构

实验报告 班级:电信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、循环语句的三要素分别 是、、。 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.熟悉用while语句,do-while语句和for语句实现循环的方法。 2.掌握循环嵌套的用法。 3.掌握在程序设计中用循环的方法实现各种算法(如迭代,递推,穷举等)。4.掌握break和continue语句的用法。 二.实验要点 在C语言中主要用以下方法实现循环: 1.while语句格式:while (表达式)语句 2.do- while语句格式:do 语句 while (表达式); 3.for语句 for语句的一般格式: for (表达式1;表达式2;表达式3)语句 for (初值表达式;条件表达式;增值表达式) 语句 三.实验要求 1.上机前编写好以下程序。 2.上机输入和调试自己所编的程序并存在自己的U盘上。 3.检查实验结果是否正确。 4.上机结束后,整理实验报告,以“学号—姓名-第3次实验”命名的文件上传到作业服务器。 四.实验内容 上机调试运行以下程序。 1.下面的程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环.请填空. #include”stdio.h” void main(){ int n=0; char c; c=getchar(); while (【】) { if ( 【】) n++; c=getchar(); } printf(“n=%d”,n);}

键盘输入:abcdef12345k(表示回车) 输出结果: 2.当运行下面程序时,从键盘输入1 2 3 4 5 –1(表示回车)时,输出结果: #include void main() { int k=0,n; do {scanf(“%d”,&n); k+=n;} while(n!=-1); printf("k=%d n=%d\n",k,n); } 3.下列程序是求水仙花数的程序,所谓水仙花数是指一个三位数,其各位数字立方和等于该数。例如,153是一个水仙花数。 #include void main() { int i,j,k,n; printf(" The number is: "); for(【】;n++) { i= 【】; j=n/10-i*10; k=【】; if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) { printf("%d\t", 【】); } } } 程序输出结果: 4.下面程序完成把100~120之间的不能被3整除的数输出,并求其和,请填空。 #include void main( ) { int n,sum=0; for (【】) { if (n % 3 == 0) 【】; sum+=n; printf(“%d,”, n);

Python实验循环结构

实验五 循环结构(续) 【实验目的】 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

实验五 循环结构设计

实验五循环结构程序设计 【目的与要求】 熟练掌握while、do—while和for三种循环语句的应用。 【上机内容】 【示例】只要求运行前4个例题,并在/* */中说明该语句的作用或使用的方法等;典型例题仅供参考,不作要求。 【例1】求5! main() { int n,t; n=1; t=1; while(t<=5) { n=n*t; t=t+1;/**/ } printf(“%d”,n); } 【例2】求和s=1!+2!+3! main() { int n,s=0,t=1; for(n=1;n<=3;n++) { t=t*n;/*计算阶乘*/ s=s+t;/* */ } printf(“%d”,s); } 【例3】求和s= 3+33+333 main() { int s=0,t=3,i; for(i=1;i<=3;i++) { s=s+t; t=10*t+3;/*生成3,33,333等数据*/ } printf(“%d”,s); } 【例4】打印500以内的“水仙花数”。“水仙花数”是一个三位数,其各位数立方和等于该数本身。main()

int i,j,k,n; for(n=100;n<=500;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); } } 【典型示例】 【例1】计算两个数的最大公约数;分析:首先,随机输入两个数m,n(默认m>n);其次,算法:使k为m除以n的余数,如果m能被n整除,则k值为0,n为这两个数的最大公约数,否则,使k代替n,n代替m,重复以上过程,直到k值为0。 #include"stdio.h" main() { int m,n,k,result; printf("Enter two numbers:"); scanf("%d,%d",&m,&n); if(m>0&&n>0) /*限定两个正整数*/ { do { k= m % n; if(k= =0) result=n; else { m = n; n=k; } }while(k>0); /*循环取余求出最大公因子*/ printf("The greatest common divistor is:%d\n",result); } else printf("Nonpositive values not allowed\n"); } 【例2】打印下列图案 * *** ***** ******* main()

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

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

实验(5)-循环结构.

C语言程序设计实验教学(5) 【实验目的】通过程序设计实现,掌握while结构、do-while结构和for结构各种类型的循环结构,完成各种循环程序的设计和实现。 【实验要求】同一个题目尝试使用多种循环控制结构来实现,并分析其设计和实现的差别和难易程度。 【实验课时】6.0 【实验内容】 1、完成课堂实例的实现。 (1)计算s=1+2+…+100。(累加型) (2)请输入数n,计算n!。(连乘型) (3)输出所有的水仙花数。(范围型) (4)判断n是否为素数。(反向思维型) (5)输出100-200之间能同时被3和5整除的数。(用continue语句) (6)输入任意n个数,输出其中最大数和最小数,并输出它们在序列中的位置。 (7)输出以下图形(1): (8)输出以下图形(2): (9)输出以下图形(3): 图形(1)图形(2)图形(3) (10)编写输出如下字母塔的程序: A A B A A B C B A A B C D C B A

……………… …………………… ………………………… A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Y X W V U T S R Q P O N M L K J I H G F E D C B A 2、计算多项式7+72+73+······+7n 的值,n 由键盘输入。 3、求 ∑=201! n n (即求1!+2!+3!+……+20!) 4、输入2个正整数m,n ,求其最大公约数和最小公倍数。 5、请编程序打印出以下数列:1、1、2、3、5、8、13、…的前40项。每行输出4个数。(斐波那契数列) 6、求100~200间的全部素数。每行输出6个数。 7、“鸡兔同笼”是一个中国古算题,最早出现在《孙子算经》中。笼中有若干只鸡和兔子,它们共有88个头,244只脚,问鸡和兔各有多少只? 8、求下列分数序列的前20项之和。 12,23,35,58,813,1321,…… 9、输入x 值,按照公式计算cos(x)的值,直到最后一项小于10-6为止。 ,! 6x !4x 2!x 1)x (cos 6 42 +-+-= 10、找出1000之内的所有完数,一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。输出时按下面的格式输出其因子: 6 its factors are 1,2,3 补充作业:(以下题目任选2题) 1、我国古代有一道有名的数学难题,称为“百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买了百鸡,问鸡翁、鸡母、鸡雏各买了多少只? 2、猴子吃桃问题。猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时,就

2.2.10循环结构程序设计 - 循环结构程序设计_教学案例

【教学案例一】 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

上机实验五循环结构 参考答案

读书破万卷下笔如有神 上机实验五循环结构程序设计 姓名:学号: 一.目的要求 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. 源程序如下:

相关文档
最新文档