文档库 最新最全的文档下载
当前位置:文档库 › 1.5编程基础之循环控制(39题)

1.5编程基础之循环控制(39题)

1.5编程基础之循环控制(39题)
1.5编程基础之循环控制(39题)

01:求平均年龄

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保

留到小数点后两位。

输入

第一行有一个整数n(1<= n <= 100),表示学生的人数。其后n行每行有1个

整数,表示每个学生的年龄,取值为15到25。

输出

输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。

提示

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

printf("%.2f", num);

02:均值

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

给出一组样本数据,计算其均值。

输入

输入有两行,第一行包含一个整数n(n小于100),代表样本容量;第二行包含n

个绝对值不超过1000的浮点数,代表各个样本数据。

输出

输出一行,包含一个浮点数,表示均值,精确到小数点后4位。

03:求整数的和与均值

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

读入n(1 <= n <= 10000)个整数,求它们的和与均值。

输入

输入第一行是一个整数n,表示有n个整数。

第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。

输出

输出一行,先输出和,再输出平均值(保留到小数点后5位),两个数间用单个空格

分隔。

来源

习题(8-6)

04:最高的分数

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分

数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决

这个问题吗?

输入

输入两行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.第二行是

这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间

的整数。

输出

输出一个整数,即最高的成绩。

05:整数序列的元素最大跨度值

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值=

最大值减去最小值)。

输入

一共2行,第一行为序列的个数n(1 <= n <= 1000),第二行为序列的n个不超

过1000的非负整数,整数之间以一个空格分隔。

输出

输出一行,表示序列的最大跨度值。

来源

改编自元培-From Whf

06:奥运奖牌计数

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计

一下A国所获得的金、银、铜牌数目及总奖牌数。

输入

输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一

天获得的金、银、铜牌数目,以一个空格分开。

输出

输出1行,包括4个整数,为A国所获得的金、银、铜牌总数及总奖牌数,以一个

空格分开。

07:奇数求和

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

计算非负整数m 到n(包括m 和n )之间的所有奇数的和,其中,m 不大于n,

且n 不大于300。例如m=3, n=12, 其和则为:3+5+7+9+11=35。

输入

两个数m 和n,两个数以一个空格分开,其中0 <= m <= n <= 300 。

输出

输出一行,包含一个整数,表示m 到n(包括m 和n )之间的所有奇数的和

08:满足条件的数累加

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

将正整数m 和n 之间(包括m 和n)能被17 整除的数累加。其中,0 < m

< n < 1000。

输入

一行,包含两个整数m和n,其间,以一个空格间隔。

输出

输出一行,包行一个整数,表示累加的结果。

09:整数的个数

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

给定k(1

程序计算给定的k个正整数中,1,5和10出现的次数。

输入

输入有两行:第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一

个空格分开。

输出

输出有三行,第一行为1出现的次数,,第二行为5出现的次数,第三行为10出现

的次数。

来源

计算概论05-模拟考试1

10:与指定数字相同的数的个数

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

输出一个整数序列中与指定数字相同的数的个数。

输入

输入包含2行:

第1行为N和m,表示整数序列的长度(N <= 100)和指定的数字,中间用一个空

格分开;

第2行为N个整数,整数之间以一个空格分开。

输出

输出为N个数中与m相同的数的个数。

11:乘方计算

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

给出一个整数a和一个正整数n,求乘方a n。

输入

一行,包含两个整数a和n。-1000000 <= a <= 1000000,1 <= n <= 10000。

输出

一个整数,即乘方结果。题目保证最终结果的绝对值不超过1000000。

12:人口增长问题

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

我国现有x亿人口,按照每年0.1%的增长速度,n年后将有多少人?

输入

一行,包含两个整数x和n,分别是人口基数和年数,以单个空格分隔。

输出

输出最后的人口数,以亿为单位,保留到小数点后四位。1 <= x <= 100, 1 <= n

<= 100。

来源

习题(8-1)

13:菲波那契数列

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数

都等于前面2个数之和。

给出一个正整数k,要求菲波那契数列中第k个数是多少。

输入

输入一行,包含一个正整数k。(1 <= k <= 46)

输出

输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小

来源

1755

15:鸡尾酒疗法

描述

鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于

1996年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾滋病。该疗法

的应用可以减少单一用药产生的抗药性,最大限度地抑制病毒的复制,使被破坏的机

体免疫功能部分甚至全部恢复,从而延缓病程进展,延长患者生命,提高生活质量。

人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否

在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式进行。假设鸡尾酒疗法的

有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于

5%,则效果更差,否则称为效果差不多。下面给出n组临床对照实验,其中第一组

采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效

果如何。

输入

第一行为整数n( 1 < n <= 20);

其余n行每行两个整数,第一个整数是临床实验的总病例数(小于等于10000),第

二个疗效有效的病例数。

这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。

输出

有n-1行输出,分别表示对应改进疗法的效果:

如果效果更好,输出better;如果效果更差,输出worse;否则输出same

16:救援

?

?提交

?统计

?提问

描述

救生船从大本营出发,营救若干屋顶上的人回到大本营,屋顶数目以及每个屋顶的坐

和人数都将由输入决定,求出所有人都到达大本营并登陆所用的时间。

在直角坐标系的原点是大本营,救生船每次从大本营出发,救了人之后将人送回大本

营。坐标系中的点代表屋顶,每个屋顶由其位置坐标和其上的人数表示。救生船每次

从大本营出发,以速度50 米/分钟驶向下一个屋顶,达到一个屋顶后,救下其上的

所有人,每人上船1 分钟,船原路返回,达到大本营,每人下船0.5 分钟。假设原

点与任意一个屋顶的连线不穿过其它屋顶。

输入

第一行,一个整数,表示屋顶数n。

接下来依次有n 行输入,每一行上包含两个表示屋顶相对于大本营的平面坐标位置

的实数(单位是米)、一个表示人数的整数,数之间以一个空格分

开。

输出

一行,救援需要的总时间,精确到分钟(向上取整)。

17:球弹跳高度的计算

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。

编程计算气球在第10次落地时,共经过多少米? 第10次反弹多高?

输入

输入一个整数h,表示球的初始高度。

输出

输出包含两行:

第1行:到球第10次落地时,一共经过的米数。

第2行:第10次弹跳的高度。

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

提示:输出时不需要对精度特殊控制,用cout<< ANSWER,或者printf("%g",

ANSWER)即可。

18:角谷猜想

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶

数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,

假定初始整数为5,计算过程分别为16、8、4、2、1。

程序要求输入一个整数,将经过处理得到1的过程输出来。

输入

一个正整数N(N <= 2,000,000)

输出

从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。

如果输入为1,直接输出"End"。

19:津津的储蓄计划

?

?提交

?统计

?提问

总时间限制:

1000ms

内存限制:

65536kB

描述

津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算

这个月的花销,并且总能做到实际花销和预算的相同。

为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年

末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到

妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100

元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。

例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是

180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津

津手中会剩下3元钱。

津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可

能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。

如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。

现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。

如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,

津津手中会有多少钱。

输入

包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的

预算。

输出

包括一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的

情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中

会有多少钱。

来源

NOIP2004复赛提高组第一题

20:药房管理

描述

随着信息技术的蓬勃发展,医疗信息化已经成为医院建设中必不可少的一部分。计算机可以很好地辅助医院管理医生信息、病人信息、药品信息等海量数据,使工作人

员能够从这些机械的工作中解放出来,将更多精力投入真正的医疗过程中,从而极大

地提高了医院整体的工作效率。

对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已知,并且一天之内不

会通过进货的方式增加。每天会有很多病人前来取药,每个病人希望取走不同数量的

药品。如果病人需要的数量超过了当时的库存量,药房会拒绝该病人的请求。管理员

希望知道每天会有多少病人没有取上药。

输入

共3行

第一行是每天开始时的药品总量m

第二行是这一天取药的人数n(0 < n <= 100)

第三行共有n个数,分别记录了每个病人希望取走的药品数量(按照时间先后的顺序),

两数之间以空格分隔

输出

只有1行,为这一天没有取上药品的人数。

来源

习题(5-5) 医学部2010 期末试题李雁章

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

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答 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*

for循环练习题

for循环练习题 1.可以从控制台连续输入数字,当输入的数字为0时不可以再输入。** //思路: 不知道输入次数只要结果不为零就可以一直输入 Scanner sc = new Scanner(System.in); //控制台 System.out.println("请输入数字"); while(true){ int sum = sc.nextInt(); if (sum == 0){ System.out.println("你输入了0 GG~"); //输入了0就结束啦结束当前循环 break; } } 2.任意输入一个整数(小于10位),求它一共有多少位。** //思路:对输入的数字用最大位数(9位数)取整,如果结果为0说明输入的数字里没有九位数那么就用八位数对其取整......... System.out.println("请输入数字(不要超过十位数哦)"); int sum = sc.nextInt(); int s = 0; //记录器 for( int x =100000000 ; x/sum !=0; x/=10 ) {s++;}System.out.println( 9-s); //最大位数-循环次数==当前位数

3.本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少** //思路:这应该是最简单的一道题......本年本金+利息就是下一年的本金累计五年就可以了double sum = 0; //因为涉及到利息会有小数所以这里用double for( double principal = 10000,year =0; year<5 ;year++) { principal = principal + principal*0.003; //principal *=(1+0.003); sum = principal;}System.out.println("五年后的本金是"+sum+"元"); //PS:现在知道为什么学java要数学好了.....我竟然把公式写成了本金=本金+本金/0.003...亏死 4.计算1000以内所有不能被7整除的整数之和。** //思路只要不能整除7数字相加起来就可以了,说整除就想到取余只要余数不是0那就是不能被整除 int s= 0; //计数器 for(int sum=1; sum<=1000;sum++){ if(sum%7!=0){ s = sum +s;} }

第五章 循环控制.

第五章循环控制 许多问题的求解归结为重复执行的操作,比如数值计算中的方程迭代求根,非数值计算中的对象遍历。重复执行就是循环。重复工作是计算机特别擅长工作之一。 重复执行不是简单地重复,每次重复,操作的数据(状态、条件)都可能发生变化。 重复的动作是受控制的,比如满足一定条件继续做,一直做直到某个条件满足,做多少次结束。也就是说重复工作需要进行控制-循环控制。C语言提供了三种循环控制语句(不考虑goto/if构成的循环),构成了三种基本的循环结构: (1)while语句构成的循环结构(“当型循环”) (2)do-while语句构成的循环结构(“直到型循环”) (3)for语句构成的循环结构(“当型循环”) 5、1 while语句(当型循环) while语句的一般形式是: 其中:表达式称为“循环条件”,语句称为“循环体”。为便于初学者理解,可以读做“当条件(循环条件)成立(为真),循环执行语句(循环体)” 执行过程是: 1)先计算while后面的表达式的值,如果其值为“真”则执行循环体, 2)在执行完循环体后,再次计算while后面的表达式的值,如果其值为“真”则继续执行循环体,如果表达式的值为假,退出此循环结构。 while循环的执行流程:

使用while语句需要注意以下几点: (1)while语句的特点是先计算表达式的值,然后根据表达式的值决定是否执行循环体中的语句。因此,如果表达式的值一开始就为“假”,那么循环体一次也不执行。 (2)当循环体为多个语句组成,必须用{}括起来,形成复合语句。 (3)在循环体中应有使循环趋于结束的语句,以避免“死循环”的发生。 例5-1:利用while语句,编写程序计算1+2+3+ (100) 解: 算法1:直接写出算式 S1: result<=1+2+3+4+5+…+100 很简单。但是写都写得累死了。 算法2: 考虑到1+2+3+…+100可以改写为:(((1+2)+3)+…+100), S1:p1<=1+2 S2: p2<=p1+3

实验4 循环控制 答案

实验4 循环控制 班级:学号: 姓名:日期: 一、实验目的 (1)熟悉掌握用while语句、do—while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调试程序。 二、实验内容 1.while语句 while 语句的一般形式为: while(表达式)语句; while 语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。 编程:求1-100的奇数和。 提示:循环变量的步长值为2。 #include void main() { int i=1,sum=0; while(i<=100) { sum=sum+i; i=i+2; } printf("sum=%d\n",sum); } 2.do-while语句 do-while 语句的一般形式为: do { 语句; }while(表达式);

do-while 语句的语义是:先执行循环体语句一次,再判别表达式的值,若为真(非0)则继续循环,否则终止循环。 编程:求1—100的偶数和。 #include void main() { int i=0,sum=0; do { i=i+2; sum=sum+i; }while(i<100); printf("sum=%d\n",sum); } 3.for语句 其一般形式为: for(表达式1;表达式2;表达3) 语句; for 语句的语义是: ⑴首先计算表达式1 的值。 ⑵再计算表达式2 的值,若值为真(非0)则执行循环体一次,否则结束循环。 ⑶执行循环体后再计算表达式3 的值,转回第2 步重复执行。 下列程序用于输出fibnocci 数列的前20 项,每行输出5 个。请填空。 说明:fibnocci 数列的前两项均为1,以后各项等于其前两项之和。 #include void main( ) { int i,f1,f2,f3,n; f1=1;f2=1; printf("\n%d %d ",f1,f2); n=2; for(i=1; i<=18 ;i++) { if (n % 5==0 ) printf("\n"); f3=f1+f2 ; printf("%d ",f3); n++;` f1=f2;f2=f3; } }

循环结构典型试题

第3章循环结构程序设计 3.1 典型等考试题剖析 3.1.1 选择题 【例1】若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c 均已赋值(c大于0) s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是_______。(等考2003年9月第22题)A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c; ?考点:本例考查for循环。 ?分析:初始赋值时s=a,那么s的值一定与a有关,C、D答案中不含a 所以排除掉。只用清楚for循环的次数,不管b以前的值为多少,第一 次循环时b=1,当b>c时循环结束,那么显然s要加c次1。所以s的值 为a与c的和。 ?答案:B 【例2】设x和y均为int型变量,则执行下面的循环后,y值为。(等考1998年9月第29题) for(y=1,x=1;y<=50;y++) { if(x>=10) break; if(x%2==1) { x+=5;continue; } x-=3; } A) 2 B) 4 C) 6 D) 8 ?考点:本例考查for循环中break和continue的用法,以及区别。 ?分析:break用在循环中,只能退出一层循环。尤其是在嵌套循环中, 只能退出它所在的那一层循环。不能期望用break从最内层循环一下子 退出最外层循环(可以用goto实现)。continue语句只能用在循环中, 它的作用是跳过其后面的语句,直接将控制转移到下一轮循环条件的测 试。语句“if(x>=10) break;”中的break只有当x>=10时,才会执行, 并且跳出for循环;语句“x+=5;continue;”是每次执行完一次跳过其 后面的语句,直接将控制转移到下一轮循环条件的测试 for(y=1,x=1;y<=50;y++)中。 ?答案:C

销售与收款循环审计练习题答案

练习题 1.适当的职责分离有助于防止各种有意的或无意的错误,以下的有关销售与收款业务循环中进行了适当的职责分离的是()。 A.负责应收账款记账的职员负责编制银行存款余额调节表 B.编制销售发票通知单的人员同时开具销售发票 C.在销售合同订立前,由专人就销售价格,信用政策,发货及收款方式等具体事项与客户进行谈判 D.应收票据的取得、贴现和保管由某一会计专门负责 1.【答案】C【解析】选项 A中负责应收账款记账的职员不能编制银行存款余额调节表;选项B中编制销售发票通知单的人员不能同时开具销售发票;选项D中应收票据的取得、贴现必须由保管票据以外的主管人员书面批准;选项C中符合内部控制规范要求。 2.在以下销售与收款授权审批关键点控制中你认为未做到恰当控制的是()。 A.在销售发生之前,赊销已经正确审批 B.未经赊销批准的销货一律不准发货 C.销售价格、销售条件、运费、折扣由销售人员根据客户情况进行谈判 D.对于超过既定销售政策和信用政策规定范围的特殊销售业务, W公司采用集体决策方式 2.【答案】C 【解析】选项 C中销售价格、销售条件、运费、折扣等必须经过批准,不能由销售人员根据客户情况进行谈判。 3.为了证实某月被审计单位关于主营业务收入的存在或发生认定认定,下列程序中的( )是最有效的。 A.汇总当月主营业务收入明细账的金额,与当月开出销售发票的金额相比较 B.汇总当月主营业务收入明细账的笔数,与当月开出销售发票的张数相比较 C.汇总当月销售发票的金额,与当月所开发运凭证及商品价目表相核对 D.汇总当月销售发票上的销售商品数量,与当月开出的发运单上的数量相比较 3.【答案】B 【解析】 A、C是估价或分摊的证据。对于D,不外乎两种情况:前者大于后者,仅能说明主营业务收入有多计的可能性,若后者大于前者,仅能说明主营业务收入有少计的可能性,因为这两种情况均未直接涉及主营业务收入明细账。 4.循环审计方法相对于分项审计方法的最大优点是( )。

循环练习题 (2)

第五章循环控制 一.选择题 1.下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 则下面描述中正确的是。 A)while循环执行10次B)循环是无限循环 C)循环题语句一次也不执行D)循环体语句执行一次2.下述程序段中,与其他程序段的作用不同。 A)k=1; B)k=1; while (1) { Repeat : s+=k ; s+=k ; k=k+1 ; if (++k<=100) if (k>100) break ; goto Repeat } printf(“\n%d”,s) ; printf(“\n%d”,s) ; C)int k,s=0; D)k=1; for (k=1;k<=100;s+=++k); do printf(“\n%d”,s) ; s+=k; while (++k<=100) ; printf(“\n%d”,s) ; 3.以下程序段的循环次数是。 for (i=2; i==0; ) printf(“%d” , i--) ; A)无限次B)0次C)1次D)2次4.下面程序的输出结果是。 main ( ) { char c=?A?; int k=0; do { switch (c++) { case …A? : k++ ; break ; case …B? : k-- ; case …C? : k+=2 ; break ; case …D? : k%=2 ; continue ; case …E? : k*=10 ; break ; default : k/=3 ; } k++; } while (c

c语言循环语句和循环控制例题解析

一、循环控制 (一)、break语句 break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。 当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。 例如: int main(int argc, char *argv[]) { int sn=0,i; for(i=1;i<=100;i++) { if(i==51) break; /*如果i等于51,则跳出循环*/ sn+=i; /*1+2+……+50*/ } printf(%d\n,sn); } 可以看出,最终的结果是1+2+……+50。因为在i等于51的时候,就跳出循环了。自己写写怎样在while和do--while循环中增加break语句。 注意: 1. break语句对if-else的条件语句不起作用。 2. 在多层循环中,一个break语句只向外跳一层。 例如: int main(int argc, char *argv[]) { int i,j; printf(i j\n); for(i=0;i<2;i++) for(j=0;j<3;j++) { if(j==2) break; printf(%d %d\n,i,j); } } 输出结果为: i j 0 0 0 1 1 0 1 1 当i==0,j==2时,执行break语句,跳出到外层的循环,i变为1。 (二)、continue语句

循环结构程序设计练习题

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

C语言单元复习题 第06部份 循环

第6章循环程序设计 一、单选题 1.以下关于循环的描述中,错误的是:()。 A.可以用for语句实现的循环一定可以用while语句实现 B.可以用while语句实现的循环一定可以用for语句实现 C.可以用do...while语句实现的循环一定可以用while语句实现 D.do...while语句与while语句的区别仅仅是关键字while的位置不同( 知识点:循环的基本概念;难度系数:1;答案:D ) 2.以下关于循环的描述中,错误的是:()。 A.while、do...while和for语句的循环体都可以是空语句 B.for和do...while语句都是先执行循环体,后进行循环条件判断 C.while语句是先进行循环条件判断,后执行循环体的 D.使用while和do...while语句时,循环变量初始化的操作应在循环语句之前完成( 知识点:循环的基本概念;难度系数:1;答案:B ) 3.以下关于循环体的描述中,错误的是:()。 A.循环体中可以出现break语句 B.循环体中可以出现continue语句 C.循环体中不能出现switch语句 D.循环体中还可以出现循环语句 ( 知识点:循环的基本概念;难度系数:1;答案:C ) 4.在while(x)语句中的x与下面条件表达式等价的是:()。 A.x==0 B.x==1 C.x!=l D.x!=0 ( 知识点:while语句;难度系数:1;答案:D ) 5.在C语言中,当while语句构成的循环中的条件为()时,结束循环。 A.0 B.1 C.真D.非0 ( 知识点:while语句;难度系数:1;答案:A ) 6.有以下程序段: int k=0; while(k=1) k++; while循环执行的次数是:()。 A.无限次B.有语法错,不能执行 C.一次也不执行D.执行一次 ( 知识点:while语句;难度系数:1;答案:A ) 7.有以下程序段: int x=0; while(x=1) {……} 则以下叙述中正确的是:()。 A.循环控制表达式的值为0 B.循环控制表达式的值为1 C.循环控制表达式不合法D.以上说法都不正确 ( 知识点:while语句;难度系数:1;答案:B ) 8.下述语句执行后,变量k的值是:()。 int k=0; while(k++<2); printf("%d",k); A.2 B.3 C.01 D.12

第五章循环结构

第五章循环结构 一、选择题 1.C语言中while和do_while循环的主要区别是( )。 A.do_while的循环体至少无条件执行一次 B.while的循环控制条件比do_while的循环控制条件严格 C.do_while允许从外部转到循环体内 D.do_while的循环体不能是复合语句 2.以下描述中正确的是( )。 A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C.在do-while循环体中,是先执行一次循环,再进行判断 D.do-while循环中,根据情况可以省略while 3.语句while (!E); 括号中的表达式!E等价于( ) 。 A.E==0 B.E!=1 C.E!=0 D.E==1 4.以下程序的功能是计算:s= 1+1/2+1/3+……+1/10 main() { int n; float s s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是( )。 A.s=1.0; B.for(n=10;n>1;n--) C.s=s+1/n; D.printf("%6.4f\n",s); 5.下面程序段的运行结果是( )。 a=1;b=2;c=2; while(a

C语言循环结构练习题带答案

第5章循环结构程序设计 练习题 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是__C__。

第5章循环结构程序设计35 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B.for (i=1;;i++) sum=sum+1; C.k=0; do { ++k; } while (k<=0); D.s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是_B___。 #include main() { int i; for (i=4;i<=10;i++) { if (i%3==0) continue; COUT<

50道for循环练习题1

【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 【程序3】题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 【程序4】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3* 5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k 的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+ 1作为k的值,重复执行第一步。 【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。1.程序分析:(a> b)?a:b这是条件运算符的基本例子。public static void method4(){ Scanner p = new Scanner(System.in); System.out.println("请输入你的分数"); int g rade =p.nextInt(); String a = grade>=60?(grade>=60&grade<=89?"你得到的成绩是B":"你得到的成绩是A"):"你得到的成绩是C"; System.out.println(a); } 【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。 【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1.程序分析:利用while语句,条件为输入的字符不为'\n '. 【程序8】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。1.程序分析:关键是计算出每一项的值。

第三节循环结构控制语句

第三节循环结构控制语句 程序设计中,经常会碰到这样的情况:重复执行同一段程序代码,直到满足条件为至。这种程序结构称为“循环结构”。 如何有效地完成重复工作呢? C++提供了三种循环控制语句:while语句,do…while语句,for语句。三种语句都由相似的三部分组成:进入循环的条件,循环体,退出循环的条件;完成的功能也类似。所不同的只是三者进入与退出循环的方式不同。 while语句:当条件满足时进入,重复执行循环体,直到条件不满足时退出。 do…while语句:无条件进入,执行一次循环体后判断是否满足条件,当条件满足时重复执行循环体,直到条件不满足时退出。 for语句:当循环变量在指定范围内变化时,重复执行循环体,直到循环变量超出了指定的范围时退出。 一、while语句 while语句的语法格式为: while (条件表达式) 循环体; 它的含义为:首先对条件表达式进行判断,若判断结果为假(false,0),则跳过循环体,执行while结构后面的语句。若判断结果为真(true,非0),则进入循环体,执行其中的语句序列。执行完一次循环体语句后,修改循环变量,再对条件表达式进行判断,若判断结果为真,则再执行一次循环体语句,……依次类推,直到判断结果为假时,退出while循环语句,转而执行后面的语句。即“先判断后执行”。 while循环由4个部分组成:循环变量初始化,判断条件,循环体,改变循环变量的值。 【例3-13】计算sum=1+2+3+…+10 #include void main() { int sum=0; //sum清0 int i=1; //循环变量初始化 while (i<=10) //判断条件 { //循环体 sum=sum+i; //累加到sum i++; //改变循环变量的值 } cout<<"sum="< using namespace std; void main() {

C语言的32个关键字和9种控制语句

C语言的32个关键字和9种控制语句 C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。 1 数据类型关键字(12个): (1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型 (4) float:声明浮点型变量或函数 (5) int:声明整型变量或函数 (6) long :声明长整型变量或函数 (7) short :声明短整型变量或函数 (8) signed:声明有符号类型变量或函数 (9) struct:声明结构体变量或函数 (10) union:声明共用体(联合)数据类型 (11) unsigned:声明无符号类型变量或函数 (12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) 2控制语句关键字(12个): A循环语句 (1) for:一种循环语句(可意会不可言传) (2) do :循环语句的循环体 (3) while :循环语句的循环条件 (4) break:跳出当前循环 (5) continue:结束当前循环,开始下一轮循环 B条件语句 (1)if: 条件语句 (2)else :条件语句否定分支(与if 连用) (3)goto:无条件跳转语句 C开关语句 (1)switch :用于开关语句 (2)case:开关语句分支 (3)default:开关语句中的“其他”分支 D返回语句 return :子程序返回语句(可以带参数,也看不带参数) 3 存储类型关键字(4个) (1)auto :声明自动变量一般不使用 (2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)

循环结构习题

循环结构 一.选择题 1.下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 则下面描述中正确的是。 A)while循环执行10次B)循环是无限循环 C)循环题语句一次也不执行D)循环体语句执行一次 2.以下程序段的循环次数是。 for (i=2; i==0; ) printf(“%d” , i--) ; A)无限次B)0次C)1次D)2次 4.下面程序的输出结果是。 main ( ) { char c=’A’; int k=0; do { switch (c++) { case ‘A’ : k++ ; break ; case ‘B’ : k-- ; case ‘C’ : k+=2 ; break ; case ‘D’ : k%=2 ; continue ; case ‘E’ : k*=10 ; break ; default : k/=3 ; } k++; } while (c<’G’) ; printf (“k=%d”,k) ; } A)k=3 B)k=4 C)k=2 D)k=0 5.下面程序的输出结果是。 main ( ) { int x=9; for (; x>0; x--) { if (x%3==0) { prin tf(“%d”,--x); continue ; } } } A)741 B)852 C)963 D)875421

6.以下不是死循环的程序段是。 A)int i=100; B)for ( ; ; ) ; while (1) { i=i%100+1 ; if (i>100) break ; } C)int k=0; D)int s=36; do { ++k; } while (k>=0); while (s) ; --s ; 7.下述程序段的运行结果是。 int a=1,b=2, c=3, t; while (a=’A’ && c<=’Z’) m++; if (c>=’a’ && c<=’z’) n++; } } A)c=getchar( ) B)getchar( ) C)c==getchar( ) D)sca nf(“%c”,&c) 9.下述语句执行后,变量k的值是。 int k=1; while (k++<10); A)10 B)11 C)9 D)无限循环,值不定 10.下面程序的输出结果是。 main ( ) { int k=0,m=0,i,j; for (i=0; i<2; i++) { for (j=0; j<3; j++) k++ ; k-=j ; } m = i+j ; printf(“k=%d,m=%d”,k,m) ;

控制语句练习题答案

一、选择题 1.下列语句序列执行后,m 的值是 int a=10, b=3, m=5; if( a==b ) m+=a; else m=++a*m; A) 15 B) 50 C) 55 D) 5 2.下列语句序列执行后,k 的值是。 int i=4,j=5,k=9,m=5; if(i>j||m

A) 13 B) 15 C) 16 D) 18 6.设int 型变量a、b,float 型变量x、y,char 型变量ch 均已正确定义并赋值,正确的switch语句是。 A) switch (x + y) { . B) switch ( ch + 1 ) { ...... } C) switch ch { ...... } D) switch ( a + b ); { ...... } 7.下列语句序列执行后,k 的值是。 int x=6, y=10, k=5; switch( x%y ) { case 0: k=x*y; case 6: k=x/y; case 12: k=x-y; default: k=x*y-x; } A) 60 B) 5 C) 0 D) 54 8.下列语句序列执行后,r 的值是。 char ch='A'; int r=6; switch( ch+5 ) { case 'A': r=r+3; case 'B': r=r+5; case 'C': r-=6; break; default : r/=2; } A) 11 B) 3 C) 2 D) 9

相关文档