for循环学习

1.计算s=a+aa+aaa+aaaa+aa…a+…的值

import java.util.Scanner;

public class Calcu{
	public static void main(String[] args){
		/*
			分析每一项的值与该项的关系,a应为自然数
			第i项    第i项的数值j                          整个表达式的和
			  1          f(1)=a	                              s=f(1)=a
			  2          f(2)=a+a*10=f(1)+a*10                s=f(1)+f(2)
			  3          f(3)=a+a*10+a*10*10=f(2)+a*10*10       .
			  .          ...                                    .
			  i          f(i)=a+a*10+a*10*10+...+a*(int)Math.pow(10,i-1)=f(i-1)+a*(int)Math.pow(10,i-1)
			  即给定自然数a后,f(1)=a,当i>1时第i项的数值与第i-1项满足f(i)=f(i-1)+a*(int)Math.pow(10,i-1),使用for循环来遍历各项
		*/
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入一个自然数作为题中的a:");
		int a = sc.nextInt();  //只考虑用户的输入是自然数
		
		System.out.print("请输入一个自然数作为总项数:");
		int n = sc.nextInt();  //只考虑用户的输入是自然数
		
		int s = 0;  //s表示整个表达式的和
		for(int i=1,j=a;i<=n;i++){
			//i表示第i项,j表示f(i)
			if(i==1){
				s=a;
			}else{
				j=j+a*(int)Math.pow(10,i-1); //从第二项起,每一项的数值与前一项满足此关系
				s=s+j;  //所有项求和
			}
		}
		System.out.print("表达式的和为:"+s);
	}
}

2.计算一球某个高度自由下落,每次落地后反跳回原高度的一半,这时开始下一次落地,求n次落地后共经过多少米,第n次落地经过多少米,第n次反弹多高
分析:球先下降后上升,上升到起始高度一半,再下降再上升,球一直在执行重复操作,即下降上升,再下降上升,故要求n次落地后的总高度,将其分解为求每次下降上升的高度,再进行累加,而要求每次下降再上升的高度,只需求下降的高度,这样上升的高度就为下降高度的一半,而要求每次下降的高度,由于每次下降的高度a与落地次数i有关,有a=m*Math.pow(0.5,i-1),其中m为题目所给的高度 。

import java.util.Scanner;

public class Luodi{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入落地的次数:");
		int n = sc.nextInt();//只考虑用户的输入为自然数
		System.out.print("请输入起始高度:");
		double m = sc.nextDouble();//只考虑用户的输入为数字
		
		double a = 0,b = 0;//a表示第i次下降的高度,b表示第i次上升的高度
		double s = 0,k = 0; //s表示第i次走过的总长度,k表示i次后走过的总长度
		for(int i=1;i<=n;i++){
			a=m*Math.pow(0.5,i-1);  //第i次下降的高度
			b=a*0.5;  //第i次上升的高度
			s=a+b;    //第i次走过的总长度  
			k=k+s;   //i次后走过的总长度
		}
		System.out.println(n+"次落地后共经过"+k+"米");
		System.out.println("第"+n+"次经过"+s+"米");
		System.out.println("第"+n+"次反弹"+b+"米");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值