/**
* 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);
}
更多推荐
循环练习题
发布评论