java循环结构的示例

java循环结构的示例
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的三次方种,这样的穷举结构直接存在嵌套,在程序实际实现时,通过循环之间的嵌套就可以实现,则实现的代码如下:

for(int i = 0;i <= 100;i++){ //母鸡数量

for(int j = 0;j <= 100;j++){ //公鸡数量

for(int k = 0;k <= 100;k++){ //小鸡数量

//判断数量是否为100,以及金额是否为100

if((i +j + k == 100) && (i * 3 + j * 4 + k * 0.5 == 100)){

System.out.println(―母鸡数量:‖ + i + ― 公鸡数量:‖ + j + ― 小鸡数量‖ + k);

}

}

}

}

按照for语句的执行流程,循环变量变化1,则内部的循环执行一次,而在循环嵌套时,循环体又是一个新的循环,则该循环执行完成的一组循环。这里通过循环的嵌套实现了所有数值的穷举。在循环的内部,只需要按照题目要求判断一下数量和金额是否符合要求即可。

但是这样的代码效率比较差,可以通过简单的优化来提高程序的执行效率。

第二种思路:由于母鸡每只的金额是3元,所以100元最多购买的母鸡数量是100/3=33只,同理100元最多购买的公鸡数量是25只,而按照100元100只的要求,小鸡的数量应该为100减去公鸡和母鸡的数量,这样代码就可以简化为如下的结构:

for(int i = 0;i <= 33;i++){ //母鸡数量

for(int j = 0;j <= 25;j++){ //公鸡数量

int k = 100 –i – j; //小鸡数量

//判断金额是否为100

if (i * 3 + j * 4 + k * 0.5 == 100){

System.out.println(―母鸡数量:‖ + i + ― 公鸡数量:‖ + j + ― 小鸡数量‖ + k);

}

}

}

}

这样,就可以大幅提高程序的执行效率,从而提高程序的执行速度。当然该代码还可以继续进行优化,那样可以再次提供程序的执行效率。

3 、喝汽水问题

问题:共有1000瓶汽水,每喝完后一瓶得到的一个空瓶子,每3个空瓶子又能换1瓶汽水,喝掉以后又得到一个空瓶子,问总共能喝多少瓶汽水,最后还剩余多少个空瓶子?

这个问题其实是个比较典型的递推问题,每3个空瓶都可以再换1瓶新的汽水,这样一直递推下去,直到最后不能换到汽水为止。

第一种思路:每次喝一瓶,每有三个空瓶子就去换一瓶新的汽水,直到最后没有汽水可以喝为止。在程序中记忆汽水的数量和空瓶子的数量即可。

则实现的代码如下:

int num = 1000; //汽水数量

int drinkNum = 0; //喝掉的汽水数量

int emptyNum = 0; //空瓶子的数量

while(num > 0){ //有汽水可以喝

num--; //喝掉一瓶

emptyNum++; //空瓶子数量增加1

drinkNum++; //喝掉的汽水数量增加1

if(emptyNum == 3){ //有3个空瓶子,则去换

num++; //汽水数量增加1

emptyNum = 0; //空瓶子数量清零

}

}

System.out.println(―总共喝掉瓶数:‖ + drinkNum);

System.out.println(―剩余空瓶子数:‖ + emptyNum);

执行该程序,输出结果如下:总共喝掉瓶数:1499剩余空瓶子数:2在该代码中,每次循环喝掉一瓶汽水,则汽水数量减少1,空瓶子数增加1,喝掉的总汽水瓶数增加1,每次判断空瓶子的数量是否达到3,如果达到3则换1瓶汽水,同时空瓶子的数量变为零。这种思路比较直观,但是循环的次数比较多,所以就有了下面的逻辑实现。

第二种思路:一次把所有的汽水喝完,获得所有的空瓶子,再全部换成汽水,然后再一次全部喝完,再获得所有的空瓶子,依次类推,直到没有汽水可喝为止。

则实现的代码如下:

int num = 1000; //汽水数量

int drinkNum = 0; //喝掉的汽水数量

int emptyNum = 0; //空瓶子的数量

while(num > 0){ //有汽水可以喝

drinkNum += num; //喝掉所有的汽水

emptyNum += num; //空瓶子数量等于上次剩余的加上这次喝掉的数量

num = emptyNum / 3; //兑换的汽水数量

emptyNum -= num * 3; //本次兑换剩余的空瓶子数量

}

System.out.println(―总共喝掉瓶数:‖ + drinkNum);

System.out.println(―剩余空瓶子数:‖ + emptyNum);

在该代码中,每次喝掉所有的汽水,也就是num瓶,则喝掉的总瓶数每次增加num,因为每次都可能剩余空瓶子(不足3个的),则总的空瓶子数量是上次空瓶子数量加上本次喝掉的num瓶。接着是对话汽水,则每次可以兑换的汽水数量是空瓶子的数量的1/3,注意这里是整数除法,而本次兑换剩余的空瓶子数量是原来的空瓶子数量减去兑换得到汽水数量的3倍,这就是一次循环所完成的功能,依次类推即可解决该问题。

4、水仙花数

问题:水仙花数指三位数中,每个数字的立方和和自身相等的数字,例如370,3 × 3 × 3 + 7 × 7 × 7 + 0 × 0 × 0 =370,请输出所有的水仙花数。

该问题中体现了一个基本的算法——数字拆分,需要把一个数中每位的数字拆分出来,然后才可以实现该逻辑。

实现思路:循环所有的三位数,拆分出三位数字的个位、十位和百位数字,判断3个数字的立方和是否等于自身。

则实现的代码如下所示:

for(int i = 100;i < 1000;i++){ //循环所有三位数

int a = i % 10; //个位数字

int b = (i / 10) % 10; //十位数字

int c = i / 100; //百位数字

//判断立方和等于自身

if(a * a * a + b * b * b + c * c * c == i){

System.out.println(i);

}

}

在该代码中,拆分个位数字使用i和10取余即可,拆分十位数字时首先用i除以十,去掉个位数字,并使原来的十位数字变成个位,然后和10取余即可,因为i是一个三位数,所以i除以100即可得百位数字,因为这里都是整数除法,不存在小数的问题。然后只需要判断立方和是否等于自身即可。

注意:因为i是循环变量,这里不能改变i的值,不然可能造成死循环。

5 、99乘法表

问题:在控制台打印数学上的99乘法表

该类问题是发现数字的规律,然后将数值的规律用程序描述出来。实际实现时,可能需要耐心的进行调试。在这里,需要实现数字的多行输出,前面使用的System.out.println是输出内容并换行,后续再输出的内容就再下一行显示,如果需要在输出时不换行,则可以使用System.out.print进行输出。

99乘法表的规则是总计9行,每行单独输出,第一行有1个数字,第二行有2个数字,依次类推,数字的值为行号和列号的乘积。

实现思路:使用一个循环控制打印9行,在该循环的循环体中输出该行的内容,一行中输出的数字个数等于行号,数字的值等于行号和列号的成绩。

实现代码如下:

for(int row = 1;row <= 9;row++){ //循环行

for(int col = 1;col <= row;col++){ //循环列

System.out.print(row * col);//输出数值

System.out.print(' ');//输出数字之间的间隔空格

}

System.out.println();//一行输出结束,换行

}

该程序的输出为:

1

2 4

3 6 9

4 8 12 16

5 10 15 20 25

6 12 18 24 30 36

7 14 21 28 35 42 49

8 16 24 32 40 48 56 64

9 18 27 36 45 54 63 72 81

在该输出中,数字之间的对齐有些问题,第四行和第五行的对齐就很明显。那么如果在输出时想让数字对齐,那么就要首先思考数字为什么不能对齐?则问题直观的出现在有些数字是一位数有些是两位数,发现了原因就可以着手解决了,如果想实现数字的左对齐,则在一位数字的后续多输出一个空格,如果想实现数字的右对齐,则只需要在一位数字的前面输出一个空格即可。

以下代码实现了数字的右对齐:

for(int row = 1;row <= 9;row++){ //循环行

for(int col = 1;col <= row;col++){ //循环列

if(row * col < 10){ //一位数

System.out.print(' ');

}

System.out.print(row * col);//输出数值

System.out.print(' ');//输出数字之间的间隔空格

}

System.out.println();//一行输出结束,换行

}

所以在实际书写代码时,代码的位置对于程序逻辑的影响很大,在编写代码时,需要认真考虑代码书写的位置。

6 、打印图形

问题:在控制台中打印如下格式的图形

*

***

*****

*******

*********

由于受到控制台输出的限制,只能按照行的上下,依次进行输出,所以解决打印图形的问题时,只能按照从上到下依次输出每行的内容,关键是仔细观察,发现图形的规律。

第一种思路:外部循环循环5次打印5行,每行的内容分为两部分:空格和星号,每行空格的数量是5减去行号个,每行星号的数量是行号的2倍减1个,在外部循环内部先打印空格,再打印星号,每个都只打印1个,使用数量控制对应的打印次数,打印完星号以后换行。

则实现的代码如下:

for(int row = 1;row <= 5;row++){ //循环行

//打印空格

for(int c1 = 0;c1 < 5 - row;c1++){

System.out.print(' ');

}

//打印星号

for(int c2 = 0;c2 < 2 * row - 1;c2++){

System.out.print('*');

}

//换行

System.out.println();

}

该代码中row的循环用于控制打印的行数,row变量的值代表行号,内部的循环体分为三部分:打印空格,打印星号和换行,打印的数量参看图形的规律部分。

第二种思路:外部循环循环5次打印5行,内部每行打印的总字符数量是4加行号个,其中前5-行号个字符是空格,后续的字符是星号,所有字符打印完成以后换行。

则实现的代码如下:

for(int row = 1;row <= 5;row++){ //循环行

//循环总的字符数

for(int col = 0;col < 4 + row;col++){

if(col < 5 - row){ //打印空格

System.out.print(' ');

}else{ //打印星号

System.out.print('*');

}

}

//换行

System.out.println();

}

该代码的总体思路和第一种思路一样,都是按行打印,只是在考虑问题时首先考虑字符总的数量,把这个数量作为循环次数,内部控制那些该输出字符那些该输出星号即可。

7、质数判断问题:判断一个自然数是否是质数。

质数指只能被1和自身整除自然数,也称素数,最小的质数是2.对于自然数来说,任何一个数字都可以被1和自身整除。

实现思路:利用数学上的反证法进行判断。则问题转换为只需要判断不能被1和自身以外的任何一个数字整除即可。则假设判断的数字是n的话,则这些数字的区间是[2,n-1]和大于n的所有数字。在数学上n不可能被大于n的数字整除,所以程序只需要判断[2,n-1]之间的数字即可,如果被该区间的任何一个数字整除了,则说明不是质数。

则实现的代码如下:

int n = 23;

boolean b = true;//存储是否是质数,假设是质数

for(int i = 2;i < n;i++){

//如果整除,则不是质数

if(n % i == 0){

b = false;

break;//后续比较没有意义,结束循环

}

}

//输出是否是质数

if(b){

System.out.println("是质数");

}else{

System.out.println("不是质数");

}

该代码是最容易思考出来的一种实现,其实在数学上只需要判断n是否可以被2到n的二次方根之间的数字即可。则实现的代码变为如下:

int n = 23;

boolean b = true;//存储是否是质数,假设是质数

for(int i = 2;i <= Math.sqrt(n);i++){

//如果整除,则不是质数

if(n % i == 0){

b = false;

break;//后续比较没有意义,结束循环

}

}

//输出是否是质数

if(b){

System.out.println("是质数");

}else{

System.out.println("不是质数");

}

通过缩小判断数字的区间,可以显著提高程序的执行效率。说明:这里的Math.sqrt的功能是计算n的二次方根。

8、综合练习

本部分是一些整理的关于流程控制部分的综合练习,可以通过这些练习熟悉Java语言的基本语法,以及锻炼逻辑思维能力。

练习题:1、计算数字12和18的最小公倍数。

2、如果苹果1元/个,桔子2 元/个,芒果4元/个,若是用10元去买,有几种组合呢x+2*y+4*z=10

3、一只猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个,第10天早上想再吃时,发现只剩下一个桃子了。请问猴子第一天一共摘了多少个桃子?

public class Peach1 {

public static void main(String[]args){

int total = 1;

int day = 10;

for(int i = 10;i > 0;i--){

System.out.println("第"+day+"天,有桃子"+total+"颗");

total = (total + 1) * 2;

day--;

}

}

}

方法二:

[java]

import java.util.Scanner;

/*题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个

* 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

* 以后每天早上都吃了前一天剩下的一半零一个。

* 到第10天早上想再吃时,见只剩下一个桃子了。求第n天共还有多少桃子。

1.程序分析:采取逆向思维的方法,从后往前推断。*/

public class Peach2 {

public static void main(String[]args){

Scanner in = new Scanner(System.in);

int arr[] = new int[11];

int total = 1;

System.out.println("请输入你要知道第几天的桃子数:");

int n = in.nextInt();

for(int i = 10;i >= 0;i--){

arr[i] = total;

total = (total + 1) * 2;

}

if(n == 0){

System.out.println("不合逻辑,请重新输入:");

}else{

System.out.println("第"+n+"天,有桃子"+arr[n]+"颗");

}

}

}

4、计算30的阶乘。

5、一个农场有头母牛,现在母牛才一岁,要到四岁才能生小牛,四岁之后,每年生一头小牛。假设每次生的都是母牛,并且也遵守4年才生育并生母牛的原则,并且无死亡,请问n年后共有多少头牛?

6、角谷猜想问题:日本一位中学生发现一个奇妙的―定理‖,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1.试编写代码验证该猜想是否正确。

7、输出20个如下规律的数列:1 1 2 3 5 8 13……

8、输出30个如下规律的数列:1 3 6 10 15 21 ……

9、输出任意一个三位数中的个位数字和百位数字对调的数值,例如如果三位数是235,则输出532.

10、求100以内所有质数的和。

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

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

青麦丨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项

(完整版)java实验报告循环语句

Java程序设计实验报告(三)班级:学号:姓名:指导老师: 一、实验题目 ●熟悉Java程序框架 ●掌握循环语句的用法 二、实验内容 1. 编写程序,计算10的阶乘并输出运算结果。 2. 编写程序,计算1、2、 3...的累加和,条件是和小于50。 3. 编写程序在终端打印1~100之间的素数。 4. 编写程序,输出下列图案: * *** ***** ******* 三、实验步骤(给出源程序) 1: public class Test_jc { public static void main(String[] args) { long jc=1; int i; for(i=1;i<=10;) { jc=jc*i; i++; } System.out.println("jc="+jc); } } 2:public class Test_lj { public static void main(String[] args) { int i; int sum=0; for(i=1;;i++) {

sum=sum+i; if(sum>=50) break; } System.out.println("sum="+(sum-i)); } } 3:public class Test_su { public static void main(String[] args) { int i,j; label: for(i=1;i<=100;i++) { for(j=2;j

JAVA第一阶段基础测试题-java变量-运算符-分支-循环测试题Word版

JAVA第一阶段基础测试题 提示:本题为第一阶段,JAVA基础部分练习题,包括变量,运算符,分支结构,循环结构和最基本的冒泡排序,适合初学者对第一阶段的知识进行测试,以便查漏补缺。 1. 序列[15, 67, 26, 43, 61, 25, 84, 80, 34, 70]进行冒泡排序时,第三趟排序的结果是:()。 A.[15, 26, 43, 61, 25, 67, 80, 34, 70, 84] B.[15, 26, 25, 43, 61, 34, 67, 70, 80, 84] C.[15, 26, 43, 25, 61, 67, 34, 70, 80, 84] D.[15, 25, 26, 43, 34, 61, 67, 70, 80, 84] 正确答案:B解析: 2. 请看下列代码: public int list(String id){ return 0; } list 方法的使用正确的是:()。 A.int count=list(1002); B.String count=list(1002); C.int count=list("s1001");

D.String count=list("s1001"); 正确答案:C解析: 3. 请看下列代码: public static void main(String[] args) { int[] list ={10,55,78,34,23,5,67}; for(int i=0;i<《插入代码1》;i++){ System.out.println(《插入代码2》); } } 如果上述代码的作用为遍历数组中的每一个元素,将其输出到控制台,那么《插入代码1》处和《插入代码2》处,应填入的代码分别为:()。 A.list.size和list B.list.size和list[i] C.list.length和list D.list.length和list[i]

java循环结构程序设计题

循环结构程序设计 1、*求1+4+7+……+100之和。 int sum=0; for(int i=1;i<=100;i+=3){ sum+=i; } System.out. println ("1+4+7+……+100之和为:"+sum); 2、*求1到100之间的奇数之和与偶数之和。 int sumJs=0,sumOs=0; for(int i=1;i<=100;i++){ if(i%2==0) sumOs+=i; else sumJs+=i; } System.out.println("1~100的奇数和为:"+sumJs+"\n1~100的偶数和为:"+sumOs); 3、用循环程序求10的阶乘。 int product=1; for(int i=10;i>0;i--){ product*=i; } System.out.println("10的阶乘乘积为:"+product); 4、求1*3*5*...*19之积。 int productJs=1; for(int i=1;i<19;i++){ if(i%2!=0) productJs*=i; } System.out.println("1*3*5*...*19之积为:"+productJs); 5、从键盘输入一个正整数n,求1+2+3+...+n之和并输出。 int sum=0; Scanner input = new Scanner(System.in); System.out.println("输入一个正整数:");

int num=input.nextInt(); for(int i=1;i<=num;i++){ sum+=i; } System.out.println("1+2+3+...+n之和为:"+sum); 6、从键盘输入一个正整数,求出其阶乘并输出。 int productJc=1; System.out.println("输入一个正整数:"); int num1=input.nextInt(); for(int i=num1;i>0;i--){ productJc*=i; } System.out.println(num1+"的阶乘乘积为:"+productJc); 6A、求1-1/3+1/5-1/7+...-1/99+1/101之和。 double sum=0; int count=0; for(int i=1;i<102;i+=2){ count++; if(count%2==0) sum-=1.0/i; else sum+=1.0/i; } System.out.println("1-1/3+1/5-1/7+...-1/99+1/101之和为:"+sum); 6B、求20+21+22+...+263之和。 int sum=0; for(int i=20;i<264;i++){ sum+=i; } System.out.println("20+21+22+...+263之和:"+sum); 7、*求12+32+52+...+992之和。 int sum=0; for(int i=1;i<100;i++){ sum+=i*i; }

Java循环结构

Java循环结构 顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。 Java中有三种主要的循环结构: ?while循环 ?do…while循环 ?for循环 在Java5中引入了一种主要用于数组的增强型for循环。 while循环 while是最基本的循环,它的结构为: 只要布尔表达式为true,循环体会一直执行下去。 实例

以上实例编译运行结果如下:

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

实例 以上实例编译运行结果如下:

for循环 虽然所有循环结构都可以用while或者do...while表示,但Java提供了另一种语句—— for循环,使一些循环结构变得更加简单。 for循环执行的次数是在执行前就确定的。语法格式如下:

关于for循环有以下几点说明: ?最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。 ?然后,检测布尔表达式的值。如果为true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。 ?执行一次循环后,更新循环控制变量。 ?再次检测布尔表达式。循环执行上面的过程。 实例

java基础知识(循环结构)

知识点: 3种常见的循环结构 break;continue关键字复习: 选择结构 讲解作业1 课堂任务: 任务一、 1.以下语句不能构成循环的语句是() A for语句 B while语句 C switch语句 D do while 语句2.break语句的作用是() A 只中断最内层的循环 B 只中断某一层的循环 C 借助于标号,可以实现任何层循环中断 D 只中断某一层的循环 3.下列语句序列执行后,a 值为()。int a=1; for ( int i=5 ; i>0; i-=2; ) a*=I; A 0 B 1 C 15 D 60 4.下列语句序列执行后,c值为()。int a=3, b=4, c=0; while ( (a++) < (- -b) ) ++c; A 0 B 1 C 2 D 3 5.列语句序列执行后,j 值为()。int m=3, n=6, k=0; while ( m1 ); A 1 B 5 C 2 D -1 7.程序改错 #1public class Te21{ #2public void main(String[] args) { #3int size=5; #4for ( int i=0; i<=size; i++){ #5for ( int j=i; j>=0; j- -) #6System.out.print( i ); #7Systme.out.print(); #8} #9} #10} 8.程序改错

相关文档
最新文档