JAVA语言基础04_循环结构(while、do…while、for)

JAVA语言基础04_循环结构(while、do…while、for)
JAVA语言基础04_循环结构(while、do…while、for)

1. 循环结构(while、do…while、for)

1.1. 什么是循环结构

在日常生活中,会有很多需要反复执行的事情,比如:每一年的4个季节,每一周的7天,每日的3餐,打印机每份文档打印50份,一圈跑道400米跑3圈,都是在反复执行的。

再看软件系统中的需求:

问题1:输出100行语句,每行语句都一样,即:

?行动是成功的阶梯,行动越多,登得越高!

?行动是成功的阶梯,行动越多,登得越高!

?行动是成功的阶梯,行动越多,登得越高!

问题2:输出100行语句,每行语句都类似,即:

?第1,行动是成功的阶梯,行动越多,登得越高!

?第2,行动是成功的阶梯,行动越多,登得越高!

?第3,行动是成功的阶梯,行动越多,登得越高!

?…

?第100,行动是成功的阶梯,行动越多,登得越高!

问题3:计算1到50乘以8.88的结果

?1×8.88 =8.88

? 2 ×8.88 =17.76

? 3 ×8.88 =26.64

? 4 ×8.88 =35.52

?…

?50 ×8.88 =444

诸如此类问题都是在反复执行的,在软件系统中可以通过循环这种语法结构来解决。循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性执行。

对于循环来说,需要考虑两个要素,其一要素为循环体,也就是被反复执行的相同或相似的语句,其二要素为循环的条件,也就是循环得以继续执行下去的条件,常常以循环次数的方式体现。

常用的循环结构有:while、do-while、for。

1.2. while语句

1.2.1. while语句的执行逻辑

while语句是循环的一种常见语法结构,语法如下:

1.while( boolean表达式){

语句块;

2.}

while语句的执行过程为,首先计算boolean表达式的值,而后进行判断,若值为true则执行语句块,语句块执行完后再次判断boolean表达式的值,如果为true则继续执行语句块,如此循环往复,直到boolean表达式的值为false时退出while循环而执行while之后的语句。

1.2.2. while语句的流程图

while语句的流程图如图- 11所示,需要注意的是,一般情况下,循环操作中会存在使得循环条件不满足的可能性,否则该循环将成为“死循环”。“死循环”意味着会一直执行循环体操作,循环后面的语句永远不会被执行,“死循环”在软件系统中是需要避免的。

图- 11

1.2.3. while语句用于处理循环逻辑

while语句在实际应用中应用比较广泛,通过如下示例体会while语句的执行逻辑:

1.int age =1;

2.while(age<=100){

3.System.out.println(“马上有钱”);

4.age++;

5.}

上面的语句执行过程如下,首先声明整型变量age并赋初始值为1,而后判断age是否小于等于100,条件为真,输出“马上有钱”并将age的值增1变为2,再次判断条件,此时age为2,依然小于100,再一次输出“马上有钱”并将age

的值再增1变为3,以此类推,直到age等于101时,判断条件为false,循环结束。

1.2.4. 使用break语句跳出循环

break用在循环体中用于退出循环结构。看如下示例代码:

1.int x =0;

2.while( x <10){

3.if(5== x )

4.{

5.break;

6.}

7. System.out.println(x);

8. x ++;

9.}

分析上面的代码得出结论,输出结果为0 1 2 3 4,因为当x等于5时执行break 语句直接退出循环结构了,即if语句块后面的输出x的值以及x++不再被执行。

1.3. do-while语句

1.3.1. do-while语句的执行逻辑

do-while语句也是循环的一种常见语法结构,语法如下:

1.do{

2.语句块

3.}while( boolean表达式);

do-while语句的执行过程为,先执行语句块,再判断boolean表达式,如果为true则再次执行语句块,如此循环往复,直到boolean表达式的值为false时

止。也就是说,do-while语句,无论boolean表达式是否为true,都先执行一次语句块。

1.3.

2. do-while语句的流程图

do-while语句的流程图如图- 12所示,与while语句一样,do-while语句也要避免“死循环”的发生。

图- 12

1.3.3. do-while语句用于处理循环逻辑

do-while语句在实际应用中应用比较广泛,通过如下示例体会do-while语句的执行逻辑:

1.int pwd ;

2.do{

3. System.out.print(“请输入密码”);

4. pwd = scanner.nextInt();

5.}while(123!= pwd);

上面的语句执行过程如下,首先声明整型变量pwd,在do语句中提示“请输入密码”,接收用户输入的数据赋给pwd,而后判断123是否不等于pwd,若为true则执行do语句块,以此类推,直到123等于pwd时,循环结束。

1.3.4. while和do-while语句的区别

while与do-while都是用于执行循环结构的语句,区别在于,while循环先判断再执行,而do-while循环先执行一次,再判断。那么,当初始情况不满足循环条件时,while循环就一次都不会执行,而do-while循环不管任何情况都至少会执行一次。

注意:while和do-while语句的不同仅仅体现在第一次就不满足条件的循环中;如果不是这样的情况,while与do-while可以互换。请看如下两段示例程序:

1.示例1:while循环方式

2.int pwd =0;

3.while(123!= pwd){

4. System.out.print(“密码:”);

5. pwd = scanner.nextInt();

6.}

7.示例2:do-while循环方式

8.int pwd ;

9.do{

10. System.out.print(“密码”);

11. pwd = scanner.nextInt();

12.}while(123!= pwd);

分析示例1与示例2得出结论,运行结果完全一样。这是因为两段代码第一次的while条件都满足,此时while与do-whlie可以互换,所以结果完全一样。

1.4. for语句

1.4.1. 考虑如下循环问题的相同之处

请考虑如下三个题目的相似之处:

1.计算从1加到100的值;

2.计算1+1/3+1/5+…+1/999;

3.找出从第1号学员到第500号学员中成绩大于90的学员。

通过上面的问题可以看出,如上三个题目都是在有规律的重复执行某个操作,在程序中

考虑使用循环结构来解决。首先需要先找到前面介绍的循环变量,此循环变量在每一次的循环中有规律的发生变化,并且常常作为判断是否继续循环的条件。

首先,看第1个题目,设计循环变量i ,i的值为1,2,…,100,即:从1开始,每次增1。第二个题目,设计循环变量i , i的值为1,3,5,…,999,即:从1开始,每次增2。第三个题目,设计循环变量i , i的值为1,2,…,500,即:从1开始,每次增1。

通过上面的分析,可以看出,如上的循环都是固定次数的循环,这种情况,优先考虑使用for语句来实现。

1.4.

2. for语句的执行逻辑

for语句是循环中最最常用的一种方式。for循环用于将某个语句或语句块重复执行预定次数的情形。语法如下:

1.for(表达式1;表达式2;表达式3){

2.语句块(循环体)

3.}

可以看出,for循环的三个表达式之间通过分号;进行分隔,其执行逻辑如下所示:

1.计算表达式1的值,通常为循环变量赋初值;

2.计算表达式2(表达式2为逻辑表达式)的值,即判断循环条件是否为真,若值为真

则执行循环体一次(语句块),否则跳出循环;

3.执行循环体;

4.计算表达式3的值,此处通常写更新循环变量的赋值表达式;

5.计算表达式2的值,若值为true则执行循环体,否则跳出循环;

6.如此循环往复,直到表达式2的值为false。

1.4.3. for语句的流程图

for语句流程图如图-1所示:

图- 1

简单示例如下:

1.for( int i =1; i <=10; i ++){

2. System.out.println( i );

3.}

如上程序的输出结果为:1 2 3 4 5 6 7 8 9 10

分析如上程序的执行过程:首先,初始化i的值为1,判断i是否小于等于10,结果为true,其次,输出i的值1,然后,执行i的自增1,再判断i是否小于等于10,结果为true,执行输出i的值2,以此类推……输出i的值10后,执行i的自增1,此为i为11,判断结果为false,程序终止。

1.4.4. for语句用于实现固定次数循环

for语句常常用于解决固定次数循环的处理,比如说累加和,想求1+2+3+…+100的结果,次数固定执行100次,可以考虑使用for循环处理,参见如下代码:

1.int sum =0;

2.for( int i =1; i <=100; i ++){

3.sum += i ;

4.}

5.System.out.println(“1到100的和为:”+ sum );

分析上面代码的执行过程,首先,声明一个变量用于保存累加和,此变量命名为sum,赋初始值为0,而后,for循环从1开始,每次增1,执行100次,循环体中将i的值累加到sum变量中。注意:每次都是在sum的基础之上加上i,所以使用了sum += i。循环结束后,输出结果“1到100的和为:5050“。

了解了如上题目之后,问:想求10的阶乘,即1*2*3*…*10,可不可以使用for循环来解决,如果可以的话要如何解决呢?当然可以,try!!!

1.4.5. for语句三个表达式特殊用法

首先回顾for语句的语法:

1.for(表达式1;表达式2;表达式3){

2.语句块

}

通过上面的代码可以看出,for语句实现循环时需要3个表达式并且使用分号;分隔,

在实际使用时,for语句可以有几种特殊的使用方法:

特殊方式1:表达式1位置内容为空,看如下代码:

1.int sum =0;

2.int i =1;

3.for(; i <=10; i ++){

4. sum += i ;

5.}

6.System.out.println(“1到10的和为:”+ sum );

通过上面的代码可以看出,虽然省略了表达式1,但只是将它放在了for循环的外面进行声明,只是位置不同而已。在此需要注意一点,即使for语句中不写表达式1了,表达式2前面的分号;也不能省略。

特殊方式2:表达式3位置内容为空时,看如下代码:

1.int sum =0;

2.for( int i =1; i <=10;){

3.sum += i ;

4. i ++;

5.}

6.System.out.println(“1到10的和为:”+ sum );

通过上面的代码可以看出,虽然省略了表达式3,但也只是将它放在了for循环体之中,只是位置不同而已。在此需要注意一点,即使for语句中不写表达式3了,表达式2后面的分号;也不能省略。

特殊方式3:表达式1,2,3位置内容均为空时,看如下代码:

1.for(;;){

2.System.out.println(“我要学习……”);

3.}

通过上面的代码可以看出,如上代码没有循环变量、没有条件控制,因此会造成死循环,而死循环在编写程序过程中是必须要避免的,可以在循环体中添加break跳出循环。

特殊方式4:表达式1 和3 位置内容的多样化

for语句中的三个表达式中表达式1和表达式3可以使用逗号表达式,逗号表达式就是通过”,”运算符隔开的多个表达式组成的表达式,从左向右进行计算。看如下示例:

1.for( int i =1, j =6; i <=6; i +=2, j -=2){

2.System.out.println(“ i , j =“+ i +“,”+ j );

3.}

上面的代码的执行逻辑如下:初始设置i为1,j为6,判断i是否小于等于6,为真执行循环体,而后执行i+=2,j-=2,即:i增2,j减2。再判断i是否小于等于6,为真继续执行循环体,以此类推,直到条件为false。本程序的输出结果为:

1.i , j = 1 , 6

2.i , j = 3 , 4

3.i , j = 5 , 2

1.4.6. 循环中使用break语句

循环中的break语句应用率很广,break可用于循环语句或switch语句中,其用于循环时,可使程序终止循环而执行循环后面的语句,常常与条件语句一起使用,看如下代码:

1.int sum =0;

2.for(int i=1; i<=100; i++){

3.if(sum>=4000){

4.break;

5.}

6.sum += i;

7.}

8.System.out.println(sum);

上面的程序需要统计1到100的累加和,条件是当和大于等于4000时则终止计算,此案例通过在if语句中使用break实现了for语句的退出,本程序最终sum 的值为:4005。

1.4.7. 循环中使用continue语句

continue语句只能用于循环中,它的作用为跳过循环体中剩余语句而执行下一次循环,看如下代码:

1.int sum =0;

2.for(int i=1; i<=100; i++){

3.if( i %10==3){

4.continue;

5.}

6.sum += i;

7.}

8.System.out.println(sum);

上面的程序需要统计1到100的累加和,条件是跳过所有个位为3的,此案例通过在if语句中使用continue实现了跳过for语句中剩余的循环体语句,本程序最终sum的值为:4570。

while循环

while 循环 语法形式: while(条件) { 需要循环执行的语句; } while 是“当”的意思。 请首先和if语句作一个比较: if(条件) { 条件成立时执行的语句; } 二者除了关键字不一样以外,结构完全一样。但一定要注意,在条件成立时,if语句仅仅执行一遍,而while语句则将反复执行,直到条件不再成立。 请看while循环的流程图: 程序从“前面的语句”开始执行,然后进行条件判断,如果条件成立,则执行一次“每次循环执行 的语句”,再后请特别注意红色部分,这是我们碰上的,第一次会往后走流程:红线就像汽车拐弯, 掉头到条件处(并不包括前面的语句),然后再进行下一次的条件判断……直到某一次判断时条件不 成立了,程序“继续后面的语句”。

我们用while的语法套用生活中的实际例子,可以直观地看出while的用法。 假设有一个爱哭的小娃娃,有一天她要求父母给买一条小红裙,可惜父母不同意,于是她就开始一个循环: while ( 父母不给买小红裙) { 我哭; } 这段“代码”的意思是:当“父母不给买小红裙”,那么,小女孩就一遍一遍地哭。 这就是我们和循环流程的第一个遭遇战。所举的例子看似直观:“小孩一遍遍地哭,直到父母给买裙”,但真正要用程序的语言来正确地表达出来,需要很多方面要考虑到,必竟,程序是严谨的。 首先,一个合适的判断是否继续的条件相当重要。小女孩要继续哭,仅仅“父母不给买小红裙”,这显示不符合事实,想想我们小时候,再会哭,最终也有累的时候,所以,要想继续哭,我们的条件有两个:“父母不给买小红裙”并且“我还没有哭累”。 while ( 父母不给买小红裙&& 我还没有哭累) { 我哭; } 其次,大多数情况下,条件需要被恰当地改变。小女孩在不停地哭,那么她如何知道父母是否买了红裙呢?所以,她不能只顾哭,还得在哭的间隙观察大人是否同意买裙。至于是否哭累,我们假设小女孩有一个疲劳度,每哭一次疲劳度加1,当疲劳度到达200时,可怜的小女孩累了…… while(父母不给买小红裙&& 疲劳度< 200) { 我哭; 我偷看爸妈是否同意买裙; 疲劳度++; } 例一:用while 语句实现求从1到100的累加和。 求1+2的和,我们可以写a = 1 + 2;求1加到100,我们当然可以这样写a = 1 + 2 + 3 + ... 100.不过这样写显然太累人了,要从1写到100啊!所以聪明如高斯的你,当然也知道这样写:a = (1+100) * 50;这确实是个在任何时候都值得称赞的,又快又简的方法,只是今天我们想让计算机累一点,老老实实地从1加到100。首先用我们先学的while式的循环。 请同学们打开CB,然后新建一空白的控制台程序,在main()函数体加入下面黑体部分代码。然后按F9运行。查看运行结果以加深印象。 //--------------------------------------------------------------------------- #include #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[])

java循环结构while基础入门

1 while循环的基本格式 /* while循环的基本格式: while(判断条件语句) { 循环体语句; } 扩展格式: 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; } 通过这个格式,我们就可以看到其实和for循环是差不多的。 for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; } */ class WhileDemo { public static void main(String[] args) { //输出10次"HelloWorld" //for语句版 for(int x=0; x<10; x++) {

System.out.println("HelloWorld"); } System.out.println("--------------"); //while语句版 int x=0; while(x<10) { System.out.println("HelloWorld"); x++; } } } 2 while循环的实现 /* 练习:用while循环实现 左边:求出1-100之和 右边:统计水仙花数有多少个 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; } for(初始化语句;判断条件语句;控制条件语句) {

循环体语句; } */ class WhileDemo2 { public static void main(String[] args) { //求出1-100之和 //for语句版本 int sum = 0; for(int x=1; x<=100; x++) { sum+=x; } System.out.println("sum:"+sum); System.out.println("--------"); //while语句版本 int sum2 = 0; int y=1; while(y<=100) { sum2+=y; y++; } System.out.println("sum2:"+sum2); System.out.println("--------"); } }

java_循环结构一_教案

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

java循环练习及答案

循环练习 1、实现一个课程名称和课程代号的转换器:输入下表中的课程代号,输出课程的名称。用户可以循环进行输入,如果输入n就退出系统。(使用do-while循环实现) public class A2 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String ke=""; do { S ystem.out.println("请输入代码:"); k e=scanner.next(); i f(ke.equals("1")){ System.out.println("使用Java语言理解程序逻辑"); } i f(ke.equals("2")){ System.out.println("使用HTML语言开发商业站点"); } i f(ke.equals("3")){ System.out.println("使用SQL Server管理和查询数据"); } i f(ke.equals("4")){ System.out.println("使用C#开发数据库应用程序"); } i f(ke.equals("n")){ System.out.println("出错!"); break; } } while (true); } } 2、本金10000元存入银行,年利率是千分之三。每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少?(使用for循环实现)

class A3 { public static void main(String[] args) { double mon = 10000; for( int i = 0; i < 5; i++){ mon *= 1+0.003; } System.out.println("5年后,获得的本金是"+mon+"元"); } } 3、求整数1~100的累加值,但要求跳过所有个位为3的数。(使用for循环实现) public class A4 { public static void main(String[] args) { int i = 0,n=0; for (int a = 0; a < 10; a++) { for (int b = 0; b <= 9; b++) { if (b!=3) { i=a*10+b; n+=i; } } } n+=100; System.out.println(n); } } 4、输入一个正整数N,判断该数是不是质数,如果是质数输出“N是一个质数”,否则输出“N不是质数”。提示:质数的含义:除了1和它本身不能被任何数整除。(使用for循环实现) import java.util.Scanner; public class A5 { public static void main(String[] args) { int n,m=0; Scanner N=new Scanner(System.in); System.out.println("请输入要判断的数字:"); do{ n=N.nextInt(); for (int i = 2; i < n; i++) { if (n%i==0) { m=1; }

教案java循环for方法

Java for方法(循环第二课) 单位:北京第六十六中学 作者:徐超 一、教学背景分析 (一)教材分析 本节课的教学内容是中国地图出版社出版的普通高中课程标准实验教科书《程序设计基础》第二单元,第4节循环结构的第二节课。主要内容是学习对java语言for循环的认识与使用。 (二)学情分析 学生是高中一年级的学生,学习java程序设计以有16学识,因程序设计属于理科知识,对于一部分偏文科学生学习起来有一定的难度,造成学生相应差异。学生们不喜欢学习活跃的课堂气氛,喜欢做有趣的任务,学习使用的知识,有一部分同学喜欢挑战自己,又有部分同学不爱动脑子。但是这个年龄段的学生有着共同的特点:好奇心强、思维敏捷、有一定的独立思维能力,接受新事物能力较强。所以教师在课堂上要善于抓住学生的这些特点,对症下药,以取得较好的效果。 (三)教学方式与手段 针对教材与学生特点,在课堂上要善于抓住学生的这些特点,对症下药,以取得较好的效果 教学方式:任务驱动为主,教师引导方式为辅。 (四)技术准备 硬件:计算机教室投影仪 软件:多媒体网络教室 二、本课教学目标设计 知识与技能: 1、认识与了解java语言中的for()方法。 2、学会使用for方法表示循环结构。 3、会设置循环变量与条件。 过程与方法: 能够根据任务要求更改循环变量、条件控制循环次数,学习

for()方法的使用,并尝试用其去描绘已有的流程图。情感态度与价值观: 通过游戏提升同学学习java程序的兴趣。 三、教学过程与教学资源设计 让学生们与for方法比较,找到循环 结构相关参数与for方法参数的对应 关系。 任务1: 改一改,更改命数,改变游戏难易度 学生做任务教师查看学生任务情况,

Java_循环结构二_教案

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

Java循环结构习题

A,求1到100以内的素数.要求每10个数换一行。 1.public class SuShu{ 2.public static void main(String[] args) { //求1到100的素数,实际就是求2 到99的素数,要知道的知识点是除2以为,所有的偶数都是素数。 3.inti,y;//必须在for语句之前定义,可以不对变量赋值 4.int t=0; 5.for(i=2;i<=99;i++){ 6. for( y=2;y<=i;y++) 7. { if(i%y==0) 8. break; 9. } 10.if(y==i){ 11.System.out.print(" "+y); 12.t++; 13.} 14. if(t%10==0){ 15.System.out.println(); 16. } 17. 18. 19.} 20.} 21.} B,一个自然数是素数,且它的数字位置任意对换后形成的数仍未素数,这种数叫做绝对素数,例如13 和31。编写一个程序,显示100以内的所有绝对素数。 分析,由题意可以知道必须是两位数字,而且只能有1、3、7、9组合,个位为5的能被5整数,不是素数。 publicclass Demo{ publicstaticvoid main(String[] args) { for(int i=10;i<=100;i++) { if(isSushu(i)&&isSushu(conveter(i))) { System.out.print(i+" "); }

} } staticboolean isSushu(int i)//i是否为素数 { int j=2; //用2到i-1之间的任一整数去整除 for(;j

while循环结构例题

引子 #include "stdio.h" main() { int i=1; for(i=1;i<=10000;i++) printf(“%d\t”,i); } 题型1 输入输出多个数据 eg1、输出1~10000之间所有的整数#include "stdio.h" main() { int i=1; while(i<=1000) {printf(“%d\t”,i); i++;} } 拓展:1、换成所有的奇数 2、换成所有的偶数 题型2 有限个数连加和连乘

eg2.1、求1+2+3+4+………+100的值 #include "stdio.h" main() { int i=1,s=0; while(i<=100) {s=s+i; i++;} printf(“%d\n”,s); } 拓展:1、求1+2+3+4+………+n的值 2、求12+22+32+………+n2的值 3、求1+1/2+1/3+………+1/n的值eg2.2、求n!的值 #include "stdio.h" main() { int i=1,n,p=1; scanf(“%d”,&n); while(i<=n) {p=p*i; i++;} printf(“%d\n”,p); }

拓展:求1!+2!+3!+………+n!的值 #include "stdio.h" main() { int i=1,n,p=1,s; scanf(“%d”,&n); while(i<=n) {p=p*i; s=s+p; i++;} printf(“%d\n”,s); } 题型3 无限个数连加 eg3、求1-1/3+1/5-1/7+………的近似值,要求精度要达到10-4 #include "stdio.h" #include "math.h" main() { float n=1,s=0,f=1,t=1; while(fabs(t)>=1e-4) {t=f/(2*n-1); s=s+t;

while循环练习

一、选择题 1.设有程序段 int k=10; while(k=0)k=k-1; 这下面描述中正确的是_________. a)while循环执行10次 b)循环是无限循环 c)循环体语句以此也不执行 d)循环体语句执行一次 a)E==0 b)E!=1 c)E!=0 d)E==1 2.语句while(!E);中的表达式!E等价于________. 3.下面程序段的运行结果是__________. int n=0; while(n++<=2);printf("%d",n); a)2 b)3 c)4 d)有语法错 4.下面程序的运行结果是____. #include main() { int num=0; while(num<=2) { num++; printf("%d\n",num); } } a)1 b)1 c)1 d)1 2 2 2 3 3 4 二、编程计算 1、求1~100中所有偶数的和。 2、下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数。 3、计算并输出1-3+5-7+……-99+101的值。

三、写一个小型计算器。 界面如下: 要求: 1.有简单运算选择界面 2.采用循环实现菜单显示 3.采用switch结构实现菜单的选择 4.运算对象为两个操作数,从键盘输入 5.运算结果输出 1、计算下列式子的值: (1)1+3+……+99 (2)1+2+4+8+……+128+256 2、输入一个整数,计算它各位上数字的和。(注意:是任意位的整数) 3、输入一整数A,判断它是否质数。(提示:若从2到A的平方根的范围内,没有一个数能整除A,则A是质数。) 4、求两个数的最小公倍数和最大公约数。(提示:公约数一定小于等于两数中的小数,且能整除两数中的大数。公倍数一定大于等于两数中的大数,且是大数的倍数,又能给两数中的小数整除。) 5、编写一个译码程序,把一个英语句子译成数字代码。译码规则是以数字1代替字母A,数字2代替字母B,……,26代替字母Z,如遇空格则打印一个星号…*?,英文句子以….…结束。 6、求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc 是水仙花数。 7、“百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?与之相似,有"鸡兔同笼"问题。

while语句的一般形式为

while语句的一般形式为: while(表达式)语句,其中表达式是循环条件,语句为循环体。 while语句的语义是:计算表达式的值,当值为真(非0)时。执行循环体语句。当值为假(等于0)时,跳出循环体。 while语句格式为: while(表达式) 语句;/*循环体*/ 这里的表达式是循环能否继续下去的条件,而语句是循环体。只要表达式为真,则执行循环体内语句。否则终止循环,执行循环体外语句 while常用于循环次数未知, for常用于已知循环次数 for循环语句 1.1 for表达式 表达式1:一般为赋值表达式,给控制变量赋初值; 表达式2:关系表达式或逻辑表达式,循环控制条件; 表达式3:一般为赋值表达式,给控制变量增量或减量。 语句:循环体,当有多条语句时,必须使用复合语句。 1.2 for语句格式为: for(表达式1;表达式2;表达式3) 循环语句:/*循环体*/ 1.3 for语句执行过程如下: ①先对表达式1赋初值; ②判别表达式2是否满足给定条件,若其值为真,满足循环条件,则执行循环体内语句,然后执行表达式3,进入第二次循环,再判别表达式2……;否则判断表达式2的值为假,不满足条件,就终止for循环,执行循环体外语句。 在c语言中开关语句switch中case是什么意思 switch(表达式) { case 常量表达式1: 语句1;

break; case 常量表达式2: 语句2; break; …… case 常量表达式n: 语句n; break; default: 语句n+1; break; } (资料素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)

java笔试题 第五套题

一、选择题 1、在下列选项中,哪个不是一个算法一般应该具有的基本特征______。 A、确定性 B、可行性 C、无穷性 D、拥有足够的情报 2、希尔排序法属于哪一种类型的排序法______。 A、交换类排序法 B、插入类排序法 C、选择类排序法 D、建堆排序法 3、下列关于队列的叙述中正确的是______。 A、在队列中只能插入数据 B、在队列中只能删除数据 C、队列是先进先出的线性表 D、队列是先进后出的线性表 4、对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。 A、N+1 B、N C、(N+1)/2 D、N/2 5、信息隐蔽的概念与下述哪一种概念直接相关______。 A、软件结构定义 B、模块独立性 C、模块类型划分 D、模拟耦合度 6、面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______。 A、模拟现实世界中不同事物之间的联系 B、强调模拟现实世界中的算法而不强调概念 C、使用现实世界的概念抽象地思考问题从而自然地解决问题 D、鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考 7、在结构化方法中,软件功能分解属于下列软件开发中的______阶段。 A、详细设计 B、需求分析 C、总体设计 D、编程调试 8、软件调试的目的是______。 A、发现错误 B、改正错误 C、改善软件的性能 D、挖掘软件的潜能 9、按条件f对关系R进行选择,其关系代数表达式为______。 A、

B、 C、бf(R) D、∏f(R) 10、数据库概念设计的过程中,视图设计一般有三种设计次序,以下各项中不对的是______。 A、自顶向下 B、由底向上 C、由内向外 D、由整体到局部 11、下面有关变量及其作用域的陈述______是不对的。 A、在方法里面定义的局部变量在方法退出的时候被撤销 B、局部变量也叫自动变量 C、在方法外面定义的实例变量在对象被构造时创建 D、在方法中定义的方法的参变量只要该对象被需要就一直存在 12、下面有关Java代码安全性的叙述______是不对的。 A、字节码校验器加载查询执行需要的所有类 B、运行时解释器执行代码 C、在运行时,字节码被加载,验证然后在解释器里面运行 D、类加载器通过分离本机文件系统的类和从网络导入的类增加安全性 13、给出下面的代码: public class Data{ public static void main (String args[]){ float f=0.0; f+=1.0; System.out.println(f); } } ______叙述是对的。 A、编译时将发生错误 B、编译时正确但是运行时出错 C、输出为1.0 D、输出为null 14、类的设计要求它的某个成员变量不能被外部类访问。应该使用下面的______修饰符获得需要的访问控制。 A、public B、no modifier C、protected D、private 15、假设以下代码 public class Parent { public int addValue( int a, int b) { int s; s = a+b;

java学习笔记系列第四章-循环结构

1、一元运算符 i++;即i=i+1,等同于i+=1//先使用后自身加1 如:int i=1;int b=i++;b=1 i=2; ++i;即i=i+1,等同于i+=1//先自身加1后使用 如:int i=1;int b=i++;b=2 i=2; i--类似于i++,--i类似于++i. 2、while循环语句 while循环格式: while(循环条件){ //循环操作 } 特点:先判断,再执行。 三要素:循环变量的初始化,循环的判断条件,循环体中改变循环变量的值 使用环境: 重复执行的代码; 相似或相近的代码,其中变化的地方是有规律的。 public class Test{ public static void main(String[] args){ int i=1;//循环变量的初始化 while(i<=1314){// 循环的判断条件 System.out.println(“我爱你!!”+i);//通过+i可显示程序执行的i值 i++;//循环体中改变循环变量的值,如果没有i++,则程序进入死循环} } } /* While不同于if的是,while语句当条件成立(真),完成花括号内操作后会在再次返回判断条件是否成立(真),如果成立则继续循环执行花括号内的操作,直到循环条件不成立(假)后才跳出整while语句不再循环花括号内的操作,继续执行程序后面的操作,而if则当条件成立(真)时,运行完花括号内操作后,直接跳出执行程序后面的操作,不会返回循环判断条件是否成立,这是while语句和if的根本区别。 */ 3、累计求和的while应用实例 求1+2+3+……+99+100=? public class Test{ public static void main(String[] args){ int i=1; sum=0; while(i<=100){ sum=sum+i;//累加算法实现 i++;//i=i+2,可实现100内奇数之和 } System.out.println(“1+2+3+……+99+100=”+sum); }

java课堂笔记(全部基础知识)

Java_U1课堂笔记 (一)初识Java 一、配置Java环境变量: 1、复制JDK安装路径,如:C:\Program Files (x86)\Java\jdk1.7.0_51\bin 2、粘贴到我的电脑->属性->高级系统设置->环境变量->Path 3、加上英文的分号 4、验证是否配置正确:dos-->java -version 进入DOS窗口的方法: 运行(或快捷键windows键+r) 二、Java程序编写三步骤: 编写.java 编译:javac **.java 运行java ** 三、使用jad反编译工具: DOS中切换至jad安装目录,如:C:\jad1.5.8g.win 输入命令:jad -s java D:\t01\HelloWorld.class 四、变量的使用: 变量 取名,命名规则 类型 数值:int、double、float(f) 非数值:char、String 类型名字= 值; int age=10; 五、上机验证: System.out.println(5+3); System.out.println("5"+3); 六、Scanner的使用,接收用户键盘输入 Scanner import java.util.Scanner; Scanner input=new Scanner(System.in); input.next();(相关方法,nextDouble()、nextFloat()、nextInt(等)bin:exe jre lib src.zip (二)数据类型 一、数据类型转换 自动类型转换: int num=100; double b=num;

java循环经典题目

1.编写程序,打印出100以内所有5的倍数,如:100,95,90,85, (5) 要求:用while结构和for结构两种方法。 2.求1-100以内的奇数和。 要求:用while结构和for结构两种方法。 3.接受用户输入一个整数,计算从1到该整数的和,如:输入50,则计算1+2+3……50的和。 要求:用while结构和for结构两种方法。 4.接受用户输入一个正整数,求出该数的阶乘,如:例如:输入5,则计算5*4*3*2*1=120。要求:用while结构和for结构两种方法。 5.企业年底发放的奖金根据当年的利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万的部分,可提成5%;40万到60万之间时,高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,输入当年的利润,求应发放奖金总数。 6.判断一个五位数是否为回文数。(P212 第三部分) 提示:所谓回文数就是一个数的所有位对称,如12321就是回文数,23432和45654也是回文数,输入一个数,判断是不是回文数。 7.根据条件确定公司是否已经为司机投保 如果司机满足下列条件之一,公司则为他们投保: (1) 司机已婚。 (2) 司机为30岁以上的未婚男性。 (3) 司机为25岁以上的未婚女性。 如果以上条件一个也不满足,则公司不为司机投保。 请编写一个程序,根据用户输入司机的婚姻状况、性别和年龄,判定该司机是否已经投保。(思路:婚姻状况:“y”表示已婚,“n”表示未婚;性别:“m”表男性,“f”表女性;使用多重if结构或者嵌套if结构编写程序) 8.打印: 1 12 123 1234 12345 9.打印: 54321 4321 321

WHILE循环语句的翻译程序设计课设报告

1.题目:将WHILE语句转换成四元式的程序实现 设计内容及要求:设计一个语法制导翻译器,将WHILE语句翻译成四元式。要求:先确定一个定义WHILE语句的文法,为其设计一个语法分析程序,为每条产生式配备一个语义子程序,按照一遍扫描的语法制导翻译方法,实现翻译程序。对用户输入的任意一个正确的WHILE语句,程序将其转换成四元式输出(可按一定格式输出到指定文件中)。 1、系统描述 通过设计、编制、调试一个WHILE循环语句的语法及语义分析程序,加深对语法 及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。用语法 制导完成语义分析,并将形成的中间代码以四元式的形式输出。 2 、文法及属性文法的描述 2.1 文法的描述 该文法的产生式如下所示: (1)S->while(B){E} (2)E->AE (3)E->A (4)A->iPA (5)A->i (6)B->iTi (7)B->i 其中while、( 、) 、{ 、} 、P、T 、;和i均为终结符,而S、A、B、E这些大写字母均为非终结符。T表示比较运算符,P表示算术运算符,i表示合法标识符。 2.2 属性文法的描述 对该文法的属性文法描述如下: (1) S->while(B){E}prinf(if B goto E else goto next) (2) E->AE print(E.val = A.val·E.val) (3) E->A print(E.val = A.val) (4) A->i P A print(A= i.Val P A.Val) (5) A->i; A.Val = i;

(7) B->i B.Val = i 3 、语法分析方法描述及语法分析表设计3.1 语法分析表设计 3.1.1 文法的DFA

青麦丨Java 循环结构 - for, while 及 do...while

青麦丨Java 循环结构- for, while 及do...while 顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。Java中有三种主要的循环结构: ?while循环 ?do…while循环 ?for循环 Test.java 文件代码:

do…while 循环 对于while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。 do…while 循环和while 循环相似,不同的是,do…while 循环至少会执行一次。 注意:布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。如果布尔表达式的值为true,则语句块一直执行,直到布尔表达式的值为false。 实例 Test.java 文件代码:

?然后,检测布尔表达式的值。如果为true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。 ?执行一次循环后,更新循环控制变量。 ?再次检测布尔表达式。循环执行上面的过程。 实例 Test.java 文件代码:

value of x :12 value of x :13 value of x :14 value of x :15 value of x :16 value of x :17 value of x :18 value of x :19 Test.java 文件代码:

break 关键字 break 主要用在循环语句或者switch 语句中,用来跳出整个语句块。 break 跳出最里层的循环,并且继续执行该循环下面的语句。 语法 break 的用法很简单,就是循环结构中的一条语句: 实例 Test.java 文件代码: continue 关键字 continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。在for 循环中,continue 语句使程序立即跳转到更新语句。 在while 或者do…while 循环中,程序立即跳转到布尔表达式的判断语句。 语法 continue 就是循环体中一条简单的语句: 实例

java循环结构的示例

示例讲解 1、最大公约数 问题:求两个自然数的最大公约数。 这两个都是基础的数学问题,最大公约数指两个数字公共的约数中最大的,例如数字6的约数有1、2、3、6,数字9的约数有1、3、9,则数字6和数字9的公共约数有1和3,其中3是最大的公约数。 第一种思路:从1开始循环,每次把符合要求(即同时是两个数字的约数)的值都存储起来,那么最后一个存储起来的就是最大的约数。 则实现的代码如下: int n = 6; int m = 9; int result = 1; for(int i = 1;i <= n;i++){ if((n % i == 0) && (m % i == 0)){ result = i; } } System.out.println(result); 使用该思路,每次都存储得到的公共约数,那么最后一个存储的就是两个数字的最大公约数。 第二种思路:从两个数字中最小的数字开始循环,每次减1,那么第一次得到的公共约数就是所求的最大公约数。 则实现的代码如下: int n = 6; int m = 9; int result = n > m ?m : n;

for(int i = result;i >= 1;i--){ if((n % i == 0) && (m % i == 0)){ result = i; break; //结束循环 } } System.out.println(result); 当然,解决这个问题,还有很多其它的方法,这里演示的这两种实现只是最自然的实现而已,采用类似的原理也可以求两个数字的最小公倍数的结构。 2、百元百鸡问题 问题描述:每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花100元钱买100只鸡,请问有哪些可能?说明:每种鸡的数量都可以为零。 其实这个问题是数学上的组合问题,只需要把所有的情况列举出来,然后来判断是否符合要求即可。这样的重复列举的问题,在程序上可以使用循环进行解决。 第一种思路:当母鸡的数量为0时,公鸡的数量从0-100,当公鸡的数量每变化一次,小鸡的数量就从0变化到100,使用如下数值组合来描述这个思路: 母鸡数量公鸡数量小鸡数量 0 0 从0变化到100 0 1 从0变化到100 0 2 从0变化到100 …… 1 0 从0变化到100 1 1 从0变化到100 …… 100 100 100 上面列举出了所有公鸡、母鸡和小鸡的数量都是0-100时的所有组合,总计是101的三次方种,这样的穷举结构直接存在嵌套,在程序实际实现时,通过循环之间的嵌套就可以实现,则实现的代码如下:

Java数据结构和算法笔记

~ Java数据结构和算法 第0讲综述 参考教材:Java数据结构和算法(第二版),[美] Robert lafore 1. 数据结构的特性 缺点 数据结构! 优点 数组插入快;如果知道下标,可以非常快地存取查找慢,删除慢,大小固定 有序数组比无序的数组查找快删除和插入慢,大小固定提供后进先出方式的存取存取其他项很慢 & 栈 队列提供先进先出方式的存取存取其他项很慢 链表插入快,删除快( 查找慢 二叉树查找、插入、删除都快(如果树保持平衡)删除算法复杂 红-黑树查找、插入、删除都快;树总是平衡的算法复杂 2-3-4树。 算法复杂 查找、插入、删除都快;树总是平衡的;类 似的树对磁盘存储有用 哈希表如果关键字已知,则存储极快;插入快删除慢,如果不知道关键字则存 储很慢,对存储空间使用不充分堆插入、删除快;对大数据项的存取很快对其他数据项存取慢 对现实世界建模有些算法慢且复杂 ' 图 2. 经典算法总结 查找算法:线性查找和二分查找 排序算法: 用表展示 ^ 第一讲数组 1.Java中数组的基础知识

1)创建数组 … 一旦创建数组,数组大小便不可改变。 2)访问数组数据项 数组数据项通过方括号中的下标来访问,其中第一个数据项的下标是0: 3)数组的初始化 当创建数组之后,除非将特定的值赋给数组的数据项,否则它们一直是特殊的null对象。 《 2.面向对象编程方式 1)使用自定义的类封装数组

)…

子问题须与原始问题为同样的事,且更为简单; b. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。 1.三角数字 该数列中的首项为1,第n项是由第n-1项加n后得到的。 1)使用循环查找第n项

相关文档
最新文档