博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用scala练习Java经典习题之循环
阅读量:4160 次
发布时间:2019-05-26

本文共 7473 字,大约阅读时间需要 24 分钟。

文章目录

1.兔子生孩子

package com.sunyong/**一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知一对兔子每个月可以生* 一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)* 能繁殖成多少对?  分析:兔子的规律为数列,1,1,2,3,5,8,13,21* ///兔子生孩子-->斐波那契数列,前两者和等于第三者object Tuzi {  def main(args: Array[String]): Unit = {    //斐波那契数列,前两者和等于第三者 ai=ai-1 + ai-2    val rubbit: Array[Int] = new Array[Int](12)    rubbit(0) = 1    rubbit(1) = 1    var i: Int = 2    while (i<=rubbit.length-1){    rubbit(i)=rubbit(i-1)+rubbit(i-2)      i += 1  }    println("12个月后几对兔子:"+rubbit(11))    for(s<-rubbit) {    println(s)    }  }}

2.求101-200素数个数

package com.sunyongimport util.control.Breaks._// 101-200的素数个数并输出object Su {
def main(args: Array[String]): Unit = {
var count=0 //定义个数 for (i:Int<- 101 to 200) {
breakable( for(j:Int<- 2 to i-1){
if(i%j==0){
//可整除不是素数,跳出出循环 break() }else{
if(j==i-1){
//是素数输出个数+1 count+=1 print(i+" ") } } }) } println() println("共有"+count+"个") }}

3.水仙花数

package com.sunyong//三位数水仙花数:位数三次幂和等于本身object Shuixiahua {
def main(args: Array[String]): Unit = {
for (i:Int <-100 to 999){
var ge = i%10 val shi = i%100/10 val bai = i/100 if (i==(ge*ge*ge+shi*shi*shi+bai*bai*bai)) println(i) } }}

4.正整数分解质因数

package com.sunyongimport  scala.io.StdIn//分解质因数 如90=1*2*3*3*5object Fenjie {
def main(args: Array[String]): Unit = {
println("请输入一个整数:") var num =StdIn.readInt() if (num > 1) {
var n = 2 // 定义一个最小的质数,直接从2开始 print(num + "=1*") while (num != n) {
// 如果能被整除,就打印出n这个质数 if (num % n == 0) {
print(n + "*") num /= n // 继续让num作为新的数继续除以n } else n+= 1 // 如果不能被整除,最小质数+1 } // 如果一个质数刚好等于输入的这个数 print(n) //到最后n=num时在输出n } }}

5.求最大公约数和最小公倍数

package com.sunyongimport scala.io.StdIn//求最大公约数和最小公倍数//在循环中只要除数不等于0,用较大数除以较小的数//小的数作为下一轮大的数,余数作为小的数//返回最后较大数位最大公约数//最小公倍数为两数积/最大公约数object Gongyuebei {
def main(args: Array[String]): Unit = {
println("请输入一个整数:") var m =StdIn.readInt() println("请输入另一个整数:") var n= StdIn.readInt() val s1 = n //保存变量值 val s2 = m //保存变量值 while(m!=0){
//条件 var a =n%m //取余 n=m //较大=较小 m=a //较小=较大/较小取余 } println("最大公约数:"+n) //最大公约数 println("最小公倍数:"+s1*s2/n) //最小公倍数 }}

6.求1000内完数

package com.sunyong//完数:本身=所有因子之和如6=1+2+3 找出1000内完数object Wanshu {
def main(args: Array[String]): Unit = {
for(i<-1 until 1000){
var number =0 for(a <- 1 until i){
if(i%a==0){
//a是因子 number+=a //因子相加 } } if (number==i){
//判断是否完数 println(i+"是完数") } } }}

7.猴子吃桃问题

package com.sunyong/**  * 猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃了一半,  * 又多吃一个,以后每天都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子。求第一天共摘了多少个?  */object MonkeyPeach {
def main(args: Array[String]): Unit = {
var surplus:Int =1 var sum = 0 for (day <- 10 until 1 by -1){
//逆向思维 surplus = 2*surplus+2; } println("第一天的桃子数量:"+surplus) }}

8.企业奖金问题

package com.sunyongimport scala.io.StdIn/**题目:企业发放的奖金根据利润提成。利润(I)低于或等于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%提成,从键盘输入当月利润I,求应发放奖金总数?* 程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。*/object Lirun {
def main(args: Array[String]): Unit = {
var prize = 0 println("输入利润:") var money = StdIn.readInt() if(money<=100000) prize = money/10 else if (money <= 200000&&money > 100000) {
prize = 10000 + (money - 100000) * 75 / 1000 } else if (money <= 400000 && money > 200000) prize = 10000 + 100000 / 75 / 1000 + (money - 200000) * 5 / 100 else if (money <= 600000 && money > 400000) prize = 10000 + 100000 / 75 / 1000 + 200000 * 5 / 100 + (money - 400000) * 3 / 100 else if (money <= 1000000 && money > 600000) prize = 10000 + 100000 / 75 / 1000 + 200000 * 5 / 100 + 200000 * 3 / 100 + (money - 600000) * 15 / 1000 else prize =10000 + 100000 / 75 / 1000 + 200000 * 5 / 100 + 200000 * 3 / 100 + 400000 * 15 / 1000 + (money - 1000000) / 100 println("应发奖金数:"+prize+"元") }}

9."1234"这4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

package com.sunyong/** 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?* 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。* 组成所有的排列后再去 掉不满足条件的排列。*/object Zushu {
//Java实现 def main(args: Array[String]): Unit = {
//满排列问题4*3*2=24 var s = "" var count = 0 for(i<-1 to 4){
for(j<-1 to 4){
for(k<-1 to 4){
if(i!=j && j!=k && i!=k){
count+=1 print(s + i + j + k + "\t") } } } } println() println("共有:"+count+"种组合") } // scala函数做法 def a()={
var y = 0 (1 to 4).toArray.permutations.map(x=>(x.dropRight(1))).map(x=>(x,1)).foreach(x=>{
println(x._1.mkString(""));y=y+1}) println("共有"+y+"种方式") }}

10.判断某年某月某日是这一年的第几天

package com.sunyongimport java.util._//判断今天是这一年的第几天object CountDay {
def main(args: Array[String]): Unit = {
var c = Calendar.getInstance() //设置时间可为年月日(注意月份是0-11)// c.set(2019,11,31) c.setTime(new Date()) println(c.get(Calendar.DAY_OF_YEAR)) }}

11.求第五人岁数

//第一个人10岁此后每个人大两岁package com.sunyong//五人岁数object Age {
def main(args: Array[String]): Unit = {
var a1=10 for (i:Int <- 1 to 4){
a1+=2 } println(a1) }}

12.任意输入一个整数(小于10位),输出它一共有多少位。

package com.sunyong//判断整数的位数import scala.io.StdInobject Numweishu {
def main(args: Array[String]): Unit = {
println("请输入一个整数:") var num = StdIn.readInt() println(num.toString.length) }}

13.计算1000以内所有不能被7整除的整数之和

package com.sunyong//计算1000以内所有不能被7整除的整数之和object num7 {
def main(args: Array[String]): Unit = {
var sum = 0 for(i <- 1 to 1000){
if(i%7!=0){
sum+=i } } println ("1000以内所有不能被7整除的和:" + sum) }}

14.计算 1+2-3+4-5+6-7…+100的结果//注意审题

package com.sunyongobject _100 {
def main(args: Array[String]): Unit = {
var sum = 1 for(i <- 2 to 100){
if(i%2==0){
sum+=i }else{
sum-=i } } println("总和是:" + sum) }}

15.一张纸的厚度大约是0.08mm,对折多少次之后能达到或超过珠穆朗玛峰的高度(8848.13米)

package com.sunyongobject mountain {
def main(args: Array[String]): Unit = {
var paper = 0.00008 var num=0 while(paper<8848.13){
num+=1 paper*=2 } println("经过对折"+num+"次能达到") }}

16.从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 54321

package comimport scala.io.StdInobject jiechen {
def main(args: Array[String]): Unit = {
// 输入数字不要超过25 println("输入一个正整数:") var num = StdIn.readLong() val n = num var count = num while (count>1){
num*=(count-1) count-=1 } println(n+"的阶乘:"+num) }}

17.你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数

package comimport scala.io.StdInimport scala.util.control.Breaks._object OddsNum {
def main(args: Array[String]): Unit = {
var num = 0 var countOdd = 0 var countEven = 0 println("输入正整数,输入-1结束:") breakable( do{
num = StdIn.readInt() if(num == -1){
println("输入结束") println("奇数个数:"+(countOdd)+"偶数个数:"+countEven) break() }else if(num<0) {
println("输入必须为正整数,重新输入:") }else{
if(num%2==0){
countEven+=1 }else{
countOdd+=1 } } }while((num != -1))) }}

转载地址:http://lcjxi.baihongyu.com/

你可能感兴趣的文章
携程Apollo分布式配置中心安装使用
查看>>
Lucene搜索引擎-搜索
查看>>
Slor搜索引擎第一篇-初识
查看>>
Solr搜索引擎第二篇-单机安装、基本使用
查看>>
Linux下OpenJDK安装
查看>>
Solr搜索引擎第五篇-Schema模式和FieldType详解
查看>>
Solr搜索引擎第三篇-两种部署模式详解
查看>>
Solr搜索引擎第四篇-常用命令
查看>>
IntelliJ IDEA单独对java类打JAR包
查看>>
Solr搜索引擎第六篇-Solr集成中文分词器IKAnalyzer
查看>>
Solr搜索引擎第七篇-Schema API详解
查看>>
Solr搜索引擎第八篇-索引提交方式
查看>>
Solr搜索引擎第九篇-DataImportHadler导入MySQL数据超详细
查看>>
Cookie顶级域名、二级域名、三级域名共享
查看>>
Elasticsearch搜索引擎第一篇-ES初识
查看>>
Elasticsearch搜索引擎第二篇-ES单机安装、结合Kibana使用
查看>>
Elasticsearch搜索引擎第三篇-ES集成IKAnalyzer中文分词器
查看>>
Elasticsearch搜索引擎第四篇-Mapping映射详解
查看>>
Elasticsearch搜索引擎第五篇-索引管理
查看>>
Elasticsearch搜索引擎第六篇-分词器
查看>>