admin管理员组

文章数量:1794759

循环练习题

循环练习题

/**      * 2012年培养学员25万人,每年增长25%。      * 请问按此增长速度,到哪一年培训学员人数将达到100万人      *       * 循环变量的初始化  2012      * 循环条件  人数 < 100万      * 循环操作  每年增长25%      * 循环变量改变 年份改变      */   

 public static void main(String[] args) {         int year = 2012;         int num = 250000;         while(num<1000000){             num = (int)(num+num*0.25);             year++;         }         System.out.println(year+"年的人数为"+num+"人,超过100万人");     }

/**      * 计算2000年的1月1到2008年的1月1日之间相隔有多少天。      * (提示:平年有365天,润年有366天,循环从2000年到2008年结束)      */

    public static void main(String[] args) {        System.out.print("请输入开始年份:"); Scanner sc_start = new Scanner(System.in); int start=sc_start.nextInt(); System.out.print("请输入结束年份:"); Scanner sc_end = new Scanner(System.in); int end=sc_end.nextInt(); int sum=0; while(start<end){ if((start%4==0&&start%100!=0)||start%400==0){//闰年的天数 sum=sum+366; }else{ sum=sum+365; } start++; } System.out.println(start+"年与"+end+"年之间间隔"+sum+"天"); }

/**      * 山上有一口缸可以装50升水,现在有15升水.老和尚叫小和尚下山挑水,      * 每次可以挑5升.问:小和尚要挑几次水才可以把水缸挑满?       */

public static void main(String[] args) { Scanner sc = new Scanner(System.in); int water = 15; int count = 0; while(water<50){ water+=5; count++; } System.out.println("要挑"+count+"次能挑满"); }

/**      * 猴子摘了一堆枣N个,第一天吃了一半,还嫌不过瘾,又多吃了一个:      * 第二天又吃了剩下的一半零一个:以后每天如此,      * 到第十天,猴子一看只剩下一个了。问最初有多少个枣子?      */

public static void main(String[] args) { int num = 1; //第十天 1个 int i = 9; //第九天 while(i>0){ num = (num+1)*2; i--; } System.out.println("一共摘了"+num+"个桃子"); }

/*一球从100米高度自由落下,每次落地后反跳回原高度的一半;   * 再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?   */

/**分析: * a.第一次落下 直到第10次落下 都是来回循环 * for(int i=2;i<=10;i++) i=2代表球来回 * b.循环时,弹起来的高度 = 上一次落下的高度的一半 * height = height/2 * c.每次循环时经过的长度为高度的两倍 + 落下没弹回的部分 * sum+=height*2; sum总经过的长度 * d.最后总经过的高度 + 每次都没弹回的部分(100米) * sum+100 * */ public static void main(String[] args) { double sum = 0; //总经过的长度 double height = 100; //最初的高度 for(int i=2;i<=10;i++){ height = height/2; //弹起来的高度是落下高度的一半 sum+=height*2; //弹起的高度+落下的高度 } System.out.println("总经过"+(sum+100)+"米"); System.out.println("第10次反弹"+height+"米"); }

/**海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只 猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?*/

/*假设最后一份是每人1个 倒数第二份5*1+1 */ public static void main(String[] args) { int tao = 1; //假设最后每人都能分一个 for(int i=1;i<=5;i++){ tao = tao*5+1; //第一次循环 倒数第二份 6个 System.out.println(tao); } System.out.println("一开始最少有"+tao+"个桃子"); }

/**某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将 第一位和第四位交换,第二位和第三位交换。*/

public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入一个四位数的整数:"); int num = sc.nextInt(); //拆分四位整数 int ge = num % 10; int shi = num/10%10; int bai = num/100%10; int qian = num/1000; //代替数字 ge =(ge+5)%10; shi =(shi+5)%10; bai =(bai+5)%10; qian =(qian+5)%10; //第一位跟第四位交换 int temp; //临时变量 temp = qian; qian = ge; ge = temp; //第二位和第三位交换 temp = bai; bai = shi; shi = temp; System.out.println("加密后的数字为"+qian+bai+shi+ge); }

/*某数学竞赛中,参赛人数大约在380~450人之间,比赛结果,全体考生的平均分为76分,女生的平均分为80.1分,男生的平均分为75,求男女生各有多少人?*/

/* 假设男生为x人,女生为y人, * 那么 男生的平均分*男生人数+女生的平均分*女生人数 = 总人数*总平均分 * 75*x + 80.1*y = (x+y)*76 * 75*x + 80.1*y = 76*x+76*y * ↓ * x=4.1y 男生的人数是女生的4.1倍 * 因为总人数在380到450之间 * 380<=x+y<=450 * */ public static void main(String[] args) { for(int x=1;x<=450;x++){ for(int y=1;y<=x/4.1;y++){ if((75*x + 80.1*y)/(x+y)==76 && (x+y)>=380 && (x+y)<=450){ System.out.println("男生人数:"+x+",女生人数:"+y); } } } }

/*ATM机的取款过程:  *提示用户输入密码(password)最多只能输入三次,  *超过3次则提示用户"密码错误,请取卡"结束交易。  *如果用户密码正确,再提示用户输入取款金额(amount),  *ATM机只能输出100元的纸币,取钱数要求最低100元,最高1000元。  *若用户输入的金额符合上述要求,则打印输出用户取得钱数,  *最后提示用户"交易完成,请取卡",否则提示用户重新输入金额。  *假设用户密码是111111,请编程实现。*/

public static void main(String[] args) { Scanner sc = new Scanner(System.in); //循环三次,检测密码是否正确 for(int i = 1;i < 4;i++){ //输入密码检测是否正确 System.out.print("请输入您的取款密码:"); int password = sc.nextInt(); //正确时,下一步 if(password == 111111){ //提示输入金额 System.out.print("请输入您的取款金额:"); double money = sc.nextDouble(); //检测金额是否在100-1000且 被100整除 if(money>=100 && money<=1000 && money%100==0){ //通过时,打印输入的金额 System.out.println("您已成功取款"+money+"元"); //打印完成后提示 System.out.println("交易完成,请取卡"); break; }else{ System.out.println("输入金额错误,请重新输入"); continue; } }else if(i<3){ System.out.println("密码输入错误,请重新输入"); }else{ System.out.println("密码错误,请取卡"); break; } } }

/**假设某人有100,000现金.每经过一次路口需要进行一次交费. 交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000.请写一程序计算此人可以经过多少次这个路口*/

public static void main(String[] args) { double m = 100000; int n = 0; while(m > 5000){ if(m > 50000){ m = m - (0.05 * m); }else{ m = m - 5000; } n++; } System.out.println("总共会经过" + n + "次路口");*/ /*int count = 0; for(int i=100000;i>=1;i--){ if(i>=50000){ i-=i*0.05; count++; }else if(i<=50000){ i-=5000; count++; } } System.out.println("总共会经过" + count + "次路口"); }

/**假设某员工今年的年薪是30000元,年薪的年增长率6%。编写一个Java应用程序计算该员工10年后的年薪,并统计未来10年(从今年算起)总收入。(知识点:循环语句for)*/

public static void main(String[] args) { double sal=30000; double sumsal=0; int i = 1; //年份 while(i<=10){ sal=sal*1.06; sumsal +=sal; i++; } System.out.println("10年后的年薪: "+sal); System.out.println("未来10年总收入: "+sumsal); }

/**有30人,可能包括男人、女人、小孩,他们在一饭店共消费50先令,其中每个男人花3先令,每个女人花2先令,每个小孩花1先令,求男人、女人、小孩各多少人?*/    

public static void main(String[] args) { int man = 0; int woman = 0; int kids = 0; /* * 3*man+2*woman+kids=50; * man+woman+kids=30; * * 2*man+woman=20; */ while(man<=10){ woman = 20-2*man; kids = 30-man-woman; System.out.println("男人:"+man+ "\\t女人:"+woman+ "\\t小孩:"+kids); man++; } }

/** 幸运猜猜猜:游戏随机给出一个0~99(包括0和99)的数字,然后让你猜是什么数字。    * 你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。    * 经过几次猜测与提示后,最终推出答案。在游戏过程中,记录你最终猜对时所    * 需要的次数,游戏结束后公布结果。猜测次数最多20次。      提示:      (1) 产生0~99之间的随机数字:           int number = (int)(Math.random()*100)      (2) 使用for循环结构,其中循环计数器counter同时也记录你猜测的次数*/

public static void main(String[] args) { Random random = new Random(); int gameNum = random.nextInt(100); int number = 0; int count = 0; do { if(count<=20){ System.out.print("请猜一下电脑随机生成的数是:"); number=sc.nextInt(); if(number<gameNum){ System.out.println("小了!"); }else if (number>gameNum){ System.out.println("大了!"); }else{ System.out.println("恭喜你猜了"+count+"次终于猜中了"); } count++; }else{ System.out.println("很抱歉,您的次数已用完"); } }while(true); }

/**1.有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,         问8个月后有多少对兔子,幼兔、小兔、成兔对数分别是多少。*/

/* 幼兔 小兔 成兔 初始值 * 1 0 0 第一个月 * 0 1 0 第二个月 * 1 0 1 第三个月 * 1 1 1 第四个月 * 2 1 2 第五个月 * 3 2 3 第六个月 * 5 3 5 第七个月 * 8 5 8 第八个月 * 13 8 13 第九个月 * * 当月的小兔数量 = 上月的幼兔数量 * 当月的幼兔数量 = 上月的小兔数量+上月的成兔数量 * 当月的成兔数量 = 上月的小兔数量+上月的成兔数量 */ public static void main(String[] args) { int dxt = 0; int syt = 1; int dyt = 0; int sxt = 0; int dct = 0; int sct = 0; for(int i=1;i<9;i++){ //当前月的兔子数量 dyt = sxt+sct; dxt = syt; dct = sxt+sct; //当前月的兔子数量 转换为上月的 sxt=dxt; syt=dyt; sct=dct; } System.out.println("8个月后的\\n幼兔数量为:"+dyt+ "\\n小兔数量为:"+dxt+"\\n成兔数量为:"+dct); }

/*从键盘上输入3个数,第一个代表要生成的随机数的个数, 第2个数是随机数区间的最小值,第3个数是随机数区间的最大值.  根据输入的数据,打印出对应的随机数.*/

public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入三个数字:"); int a = sc.nextInt(); //要生成的随机数个数 int b = sc.nextInt(); //随机区间的最小值 int c = sc.nextInt(); //随机区间的最大值 for(int i = 0;i<a;i++){ if(c<b){ //区间的最大值必须大于最小值 System.out.println("区间输入错误"); break; } Random random = new Random(); int num = random.nextInt(c-b+1)+b; System.out.println(num); } }

/**小芳的妈妈每天给她2.5元钱,她都会存起来,但是, 每当这一天是存钱的天数是5或5的倍数的话。她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱。*/

public static void main(String[] args) { double money = 0; for(int i = 1;i<=100;i++){ money += 2.5; if(i%5==0){ money-=6; } if(money>=100){ System.out.println("经过"+i+"天,小芳存到100块"); break; } } }

/**循环录入5个人的年龄,并计算平均年龄,如果录入的数据出现负数或者大于130的数,立即停止输出报错(无需打印平均年龄)*/

public static void main(String[] args) { Scanner year = new Scanner(System.in); double y = 0; for (int i = 1; i <= 5; i++) { System.out.print("请输入年龄:"); int i1 = year.nextInt(); if (i1 > 0 && i1 < 130) { y = y + i1; if (i == 5) { System.out.println("5个人平均年龄是:" + y / 5); } } else { System.out.println("输出报错"); break; } } }

/**给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐。*/

public static void main(String[] args) { int total = 0; int money = 20; while(true){ if(money<3){ break; }else{ money-=2; total++; } } System.out.println("可以喝到"+total+"瓶可乐"); }

/*设有一长度为3000m的绳子,每天减去一半,问需几天时间,绳子的长度会短于5m*/

public static void main(String[] args) { double height; int day; for(day=0, height=3000; height>=5.0; day++){ height/=2; } System.out.println("需要"+day+"天"); }

 /**"百钱买百鸡"是我国古代的著名数学题。题目描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?*/

public static void main(String[] args) { for(int a=0;a<33;a++) {//写一个for循环以计算公鸡数 for(int b=0;b<=50;b++) {//写一个for循环以计算母鸡数 int c=100-a-b;//计算小鸡的数量, if(c%3!=0) { continue; }//由于小鸡是1文钱可买三只,为防止小鸡数量不能被3整除,写出一个if语句跳过此次循环 if(a*3+b*2+c/3.0==100) {//当公鸡、母鸡、小鸡的数量及所需钱数满足条件时,输出下面语句 System.out.println("公鸡数"+a+"母鸡数"+b+"小鸡数"+c); } } } }

/**从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。整数转二进制*/

public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个数:"); int num2 =sc.nextInt(); //转换 int num = num2; String str=""; do{ //除以2得到商 int div = num/2; //得到余数作为二进制位 int mod = num%2; str = mod + str; //商作为被除数 num = div; }while(num!=0);//被除数不是零 //输出二进制数 System.out.println(num2+"------>"+str); }

本文标签: 练习题