package com.sunyong
object Baiqianji {
def main(args: Array[String]): Unit ={
var count=0for(i<-0 to 20){for(j <-0 to 33){for(k <-0 to 100){if(i+k+j==100&& i*15+j*9+k==300){
count+=1println("公鸡:"+ i +"只,"+"母鸡:"+ j +"只,"+"小鸡:"+ k +"只")}}}}println("总共有"+ count +"中购买方式!")}}
2.鸡兔同笼。
package com.sunyong
//鸡兔同笼。鸡兔一共有50只,脚一共有160只,问鸡和兔各多少只?要求鸡兔至少一样一只
object JiTu {
def main(args: Array[String]): Unit ={//鸡两只脚 兔子四只脚 一起50只 160只脚
var count=0for(i<-0 to 50){for(j<-0 to 50){if(i+j==50&& i*2+j*4==160){
count+=1println("鸡:"+ i +"只,"+"兔子:"+ j +"只")}}}println("总共有"+ count +"种方式!")}}
3.公鸡2文母鸡1文小鸡半文每种至少一只100文买100只鸡有多少种可能
package com.sunyong
//公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少种可能
object Ji {
def main(args: Array[String]): Unit ={
var count =0for(i<-1 to 50){for(j<-1 to 100){for(k<-1 to 200){if(i+k+j==100&& i*4+j*2+k==200){//注意不能直接k/3 /符号是取商
count +=1println("公鸡:"+ i +"只,"+"母鸡:"+ j +"只,"+"小鸡:"+ k +"只")}}}}
println ("总共有"+ count +"中购买方式!")}}
4.请输入一个正整数年份,判断是否是闰年?
package com.sunyong
import java.util.Calendar
import scala.io.StdIn
object runnian {
def main(args: Array[String]): Unit ={
val calendar = Calendar.getInstance()println("请输入一个正整数:")
var year = StdIn.readInt()//判断2月份有多少天//设置时间为2月27号 月份0-11
calendar.set(year,1,27)//加2天为 可能 2月份29 3月 1
calendar.add(Calendar.DAY_OF_MONTH,2)if(calendar.get(Calendar.DAY_OF_MONTH)==29){println(year+"年是闰年")}else{println(year+"年不是闰年")}}}
package com.sunyong
import scala.io.StdIn
/*
* 随机生成一个int型一维数组,从控制台输入一个数值,遍历数组查找,
* 如果找到了,打印出该数在数组中的位置,
* 如果没有查到,请将该数值插入并形成新的数组(要求降序)
* */
object shuzu {
def main(args: Array[String]): Unit ={
var arr =newArray[Int]((math.random*10+1).toInt)for(i <-0 until arr.length){arr(i)=(math.random*20).toInt
}println(arr.mkString(","))println("输入一个整数:")
val a = StdIn.readInt()
val index = arr.indexOf(a)if(index>=0){println(index)}else{
var b =newArray[Int](arr.length+1)
arr.copyToArray(b)b(b.length-1)=a
println(b.sorted.reverse.mkString(","))}}}
6.数学黑洞6174
package com.sunyong
import scala.io.StdIn
/*
* 已知:一个任意的四位正整数。将数字重新组合成一个最大的数和最小的数相减,
* 重复这个过程,最多七步,必得6174。 -->将减后的值继续重新拆分
* 即:7641-1467=6174。将永远出不来。
* 求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的步数。
*/
object MathBlackHole {
def main(args: Array[String]): Unit ={
var flag =truewhile(flag){
var maxNum=0
var minNum=0
var count=0print("请输入一个四位正整数:")
var num = StdIn.readInt()println(num)while(num /1000== num %10&& num /1000== num %1000/100&& num /1000== num %100/10){print("数字不可全部一样,请输入一个四位正整数:")
num = StdIn.readInt()}do{
var nums =newArray[Int](4)nums(0)=num/1000nums(1)=num%10nums(2)=num%1000/100nums(3)=num%100/10
nums=nums.sorted
maxNum=nums(3)*1000+nums(2)*100+nums(1)*10+nums(0)println("第"+(count +1)+"次重新组合最大的值:"+ maxNum)
minNum=nums(0)*1000+nums(1)*100+nums(2)*10+nums(3)println("第"+(count +1)+"次重新组合最小的值:"+ minNum)
num=maxNum-minNum
println("差值:"+num)
count+=1}while(num!=6174)println("总共输入了:"+ count +"次")if(count>7){println("超过了7次")
flag=false}}println("程序退出")}}
package com.sunyong
/*
* 有一组数,其排列形式如下:
* 11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7,13,8,
* 且尾部8和头部11首尾相连,构成环形的一组数,
* 编程找出(连续)相邻的4个数,其相加之和最大,并给出它们的起始位置下标。
* */
object huanxing {
def main(args: Array[String]): Unit ={
var arr = Array[Int](11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7,13,8)
var max1=0
var index1 =0for(i <-0 until arr.length-5){
var a =arr(i)+arr(i+1)+arr(i+2)+arr(3)if(max1< a){
max1=a
index1=i
}}//留下左边三个数
var b = arr.dropRight(arr.length-3)//留下右边三个数
var c = arr.drop(arr.length-3)//重新组合成新数组
var d = c++:b //右边三个 + 左边三个// println(d.mkString(","))
var index2=0
var max2=0for(i <-0 until d.length-5){
var a =d(i)+d(i+1)+d(i+2)+d(3)if(max2< a){
max2=a
index2 = i
}}//判断是原本数组的下标还是组成环形之后的和更大if(max1>=max2){println("起始下标:"+index1+",最大值:"+max1)}else{println("起始下标"+(index2+arr.length-3)+",最大值:"+max2)}}}
8.输入一个十进制数,将其转换成二进制数
package com.sunyong
import scala.io.StdIn
//输入一个十进制数,将其转换成二进制数//除2取余,逆序排列
object erjinzhi {
def main(args: Array[String]): Unit ={println("请输入一个正整数:")
val num = StdIn.readInt()
var shang = num
var r =0
var res =""//保存余数while(shang!=0){
r=shang %2
res = r+res //取余逆排列
shang /=2}println(num+"转换二进制为:"+res)}}
9.利用for循环生成由A-Z26个大写字母与a-z26个小写字母组成的数组
package com.sunyong
//利用for循环生成由ABCDEFG...XYZ,26个大写字母与26个小写字母组成的数组
object str {
def main(args: Array[String]): Unit ={
var a1 ='A'
var arr1 =newArray[Char](26)for(i <-0 to 25){arr1(i)=(a1.toByte.toInt+i).toChar
}
var a2 ='a'
var arr2 =newArray[Char](26)for(i <-0 to 25){arr2(i)=(a2.toByte.toInt+i).toChar
}
var arr3 = arr1++:arr2
println(arr3.mkString(","))}}
10.控制台输入一行字符串,简单实现一个wordcount词频统计
package com.sunyong
import scala.io.StdIn
object worlCount {
def main(args: Array[String]): Unit ={println("请输入一个句子:")
val str = StdIn.readLine()println(str.split(" ").map((_,1)).groupBy(_._1).map(x =>(x._1,x._2.length)))}}