一:第1章 Scala基础编程
1-1 h0001.Hello World!
本题要求编写程序,输出一个短句“Hello World!”。
输入格式:
本题目没有输入。
输出格式:
在一行中输出短句“Hello World!”。
输入样例:
无
输出样例:
Hello World!
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
printf("Hello World!");
}
}
1-2 输出所有的水仙花数
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
输入格式:
无
输出格式:
153是一个水仙花数
370是一个水仙花数
371是一个水仙花数
407是一个水仙花数
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
println("153是一个水仙花数")
println("370是一个水仙花数")
println("371是一个水仙花数")
println("407是一个水仙花数")
}
}
1-3 统计给定的 n 个整数中正数和负数的个数
统计给定的 n 个整数中正数和负数的个数
输入格式:
接收给定的多行数据(例:4 \n 56 \n 5 \n -10 \n 10,其中第一个数代表 n,其余数代表具体值,\n 仅用来说明前一个数与另一个数之间是换行,实际数据中并没有)。
输出格式:
统计正数和负数的个数(注意第一个数无需统计)。
输入样例:
4
56
5
-10
10
输出样例:
正数个数:3
负数个数:1
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
var i = 0;
var a = 0;
var b = 0;
while(i < n)
{
i += 1;
var x = StdIn.readInt();
if(x > 0) a += 1;
else if(x < 0) b += 1;
}
println("正数个数:"+a);
println("负数个数:"+b);
}
}
1-4 计算除第一个数之外的所有非负整数之和
输入样例:
4
56
5
-10
10
输出样例:
71
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
var i = 0;
var sum = 0;
while(i < n)
{
i += 1;
var x = StdIn.readInt();
if(x > 0) sum += x;
}
println(sum);
}
}
1-5 求差值
给定的 n 个整数中,计算每个x的平方根,然后再对该值求平方。现在,这个结果与x相差多少?
输入格式:
接收给定的多行数据(例:2 \n 5 \n 10,其中第一个数代表 n,其余数代表具体值,\n 仅用来说明前一个数与另一个数之间是换行,实际数据中并没有)。
输出格式:
对每一组输入,在一行中输出差的值。
输入样例:
2
3
5
输出样例:
4.440892098500626E-16
-8.881784197001252E-16
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
var i = 0;
while(i < n)
{
i += 1;
var x = StdIn.readDouble();
var x1 = scala.math.sqrt(x);
var x2 = scala.math.pow(x1,2);
println(x - x2);
}
}
}
二:第2章 控制结构和函数
2-1 分段函数
一个数字如果为正数,则它的signum为1;如果是负数,则signum为-1;如果为0,则signum为0.编写一个函数来计算这个值
输入格式:
在一行中给出1个绝对值不超过1000的整数x。
输出格式:
对每一个输入,在一行中输出这个数的signum。
输入样例:
-299
输出样例:
-1
import scala.io.StdIn
object Main {
def f(x : Int) =
{
if(x > 0) 1
else if(x == 0) 0
else -1
}
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
print(f(n))
}
}
2-2 字符串的乘积
编写一个for循环,计算字符串中所有字母的Unicode代码(toLong方法)的乘积。
输入格式:
在一行中给出1个长度不超过100的字符串。
输出格式:
在一行中输出字符串的乘积。
输入样例:
Hello
输出样例:
9415087488
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var sum:Long = 1;
var s = StdIn.readLine();
for(c <- s)
{
var x = c.toLong;
sum = sum * x;
}
println(sum);
}
}
2-3 求和中断
n以内的数求和,求出当和第一次大于m的当前数是多少?
输入格式:
输入在2行中分别给出2个不超过1000的正整数n和m。
输出格式:
对每一组输入,在一行中输出当和第一次大于m的当前数。
输入样例:
100
20
输出样例:
6
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
var m = StdIn.readInt();
var sum = 0;
var t = 0;
for(i <- 1 to n )
{
sum += i;
if(sum > m && t == 0)
{
print(i);
t = 1;
}
}
}
}
2-4 求平均分
统计n个班成绩情况,每个班有m名同学,求出各个班的平均分和所有班级的平均分。
输入格式:
分别输入2个不超过10的正整数n和m,然后输入n*m个实数表示n个班m个学生的成绩。
输出格式:
对每一组输入,分别输出各个班的平均分和所有班级的平均分。
输入样例:
3
5
78
65
56
99
45
68
65
86
69
49
88
75
96
89
65
输出样例:
第1个班的平均成绩是68.60
第2个班的平均成绩是67.40
第3个班的平均成绩是82.60
所有平均成绩是72.87
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
var m = StdIn.readInt();
var ans = 0.0;
for(i <- 1 to n)
{
var sum = 0.0;
for(j <- 1 to m)
{
var x = StdIn.readDouble();
sum += x;
}
printf("第%d个班的平均成绩是%.2f\n",i,sum/m);
ans += sum;
}
printf("所有平均成绩是%.2f",ans/n/m);
}
}
2-5 栗子和虫子
你买了一箱n个栗子,很不幸的是买完时箱子里混进了一条虫子。虫子每a小时能吃掉一个栗子,假设虫子在吃完一个栗子之前不会吃另一个,那么经过b小时你还有多少个完整的栗子?。
输入格式:
输入仅一行,包括n,a和b(均为整数)。
输出格式:
输出也仅一行,剩下的苹果个数。
输入样例:
10 4 7
输出样例:
8
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var line = StdIn.readLine().split(" ");
var k = 0
var a = line(0).toInt;
var b = line(1).toInt;
var c = line(2).toInt;
var x = c / b;
if(c % b != 0) x += 1;
if(x < a) print(a - x)
else print(0)
}
}
2-6 动物
给定你三个葡萄牙语单词,这些词将根据下表从左到右定义一个动物。
请你确定并输出这个动物的名称。
输入样例:
vertebrado
ave
onivoro
输出样例:
pomba
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var a = StdIn.readLine();
var b = StdIn.readLine();
var c = StdIn.readLine();
if(a == "vertebrado")
{
if(b == "ave")
{
if(c == "carnivoro") print("aguia");
else print("pomba");
}
else
{
if(c == "onivoro") print("homem");
else print("vaca");
}
}
else
{
if(b == "inseto")
{
if(c == "hematofago") print("pulga");
else print("lagarta");
}
else
{
if(c == "hematofago") print("sanguessuga");
else print("minhoca");
}
}
}
}
2-7 三角形类型
读取表示三角形三条边的3个浮点数(A,B和C)并按降序排列,使A边是三边中最大的一边。
接下来,根据以下情况,确定它们可以组成的三角形类型:
如果A≥B+C,则说明三条边不能构成三角形,请输出:NAO FORMA TRIANGULO
否则,说明三条边可以构成三角形,然后按如下情况输出:
如果A2=B2+C^2,请输出:TRIANGULO RETANGULO
如果A2>B2+C^2,请输出:TRIANGULO OBTUSANGULO
如果A2<B2+C^2,请输出:TRIANGULO ACUTANGULO
如果三个边长度都相同,请输出:TRIANGULO EQUILATERO
如果只有两个边长度相同而第三个边长度不同,请输出:TRIANGULO ISOSCELES
输入格式:
共一行,包含三个浮点数A,B,C(0<A,B,C<10.0)
输出格式:
输出A,B,C组成的三角形的类型。
注意,上述条件可能满足不止一条,这种情况下将所有类型名称,按题目介绍顺序输出,每行输出一条。
输入样例:
1.2 2.3 2.3
输出样例:
TRIANGULO ACUTANGULO
TRIANGULO ISOSCELES
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var s = StdIn.readLine().split(" ");
var a = s(0).toDouble;
var b = s(1).toDouble;
var c = s(2).toDouble;
var t = 0.0;
if(a < b){
t = a
a = b
b = t
}
if(a < c){
t = a
a = c
c = t
}
if(b < c){
t = b
b = c
c = t
}
if(a >= b + c) println("NAO FORMA TRIANGULO");
else
{
if(a*a == b * b + c * c) println("TRIANGULO RETANGULO");
else if(a * a > (b * b + c * c)) println("TRIANGULO OBTUSANGULO");
else println("TRIANGULO ACUTANGULO");
if(a == b && b == c) println("TRIANGULO EQUILATERO");
else if((a == b && b != c) || (a == c && a != b) || (b == c && a != b)) println("TRIANGULO ISOSCELES");
}
}
}
2-8 游戏时间
读取四个整数A,B,C,D,用来表示游戏的开始时间和结束时间。
其中A和B为开始时刻的小时和分钟数,C和D为结束时刻的小时和分钟数。
请你计算游戏的持续时间。
比赛最短持续1分钟,最长持续24小时。
输入格式:
共一行,包含四个整数A,B,C,D。0≤A,C≤23,
0≤B,D≤59
输出格式:
输出格式为“O JOGO DUROU X HORA(S) E Y MINUTO(S)”,表示游戏共持续了X小时Y分钟。
输入样例:
7 53 7 53
输出样例:
O JOGO DUROU 24 HORA(S) E 0 MINUTO(S)
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var s = StdIn.readLine().split(" ")
var a = s(0).toInt
var b = s(1).toInt
var c = s(2).toInt
var d = s(3).toInt
var x = ((c * 60) + d) - ((a * 60) + b);
if(!x)
println("O JOGO DUROU 24 HORA(S) E 0 MINUTO(S)")
else
{
if(x < 0) x += (24*60)
println("O JOGO DUROU "+(x/60)+" HORA(S) E "+(x%60)+" MINUTO(S)")
}
}
}
2-9 判断闰年
判断某年是否是闰年。
输入格式:
输入只有一行,包含一个整数a(0 < a < 3000)
输出格式:
一行,如果公元a年是闰年输出Y,否则输出N
输入样例:
2006
输出样例:
N
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
if(n % 400 == 0 || n % 100 != 0 && n % 4 == 0) print("Y");
else print("N");
}
}
2-10 求一元二次方程的根
利用公式x1 = (-b + sqrt(b* b-4* a* c))/(2* a), x2 = (-b - sqrt(b* b-4* a* c))/(2* a)求一元二次方程ax^2 + bx + c =0的根,其中a不等于0。
输入格式:
第一行是待解方程的数目n。
其余n行每行含三个浮点数a, b, c(它们之间用空格隔开),分别表示方程ax^2 + bx + c =0的系数。
输出格式:
输出共有n行,每行是一个方程的根:
若是两个实根,则输出:x1=…;x2 = …
若两个实根相等,则输出:x1=x2=…
若是两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i
所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。
x1和x2的顺序:x1的实部>Re的实部||(x1的实部==x2的实部&&x1的虚部>=x2的虚部)
输入样例:
3
1.0 3.0 1.0
2.0 -4.0 2.0
1.0 2.0 8.0
输出样例:
x1=-0.38197;x2=-2.61803
x1=x2=1.00000
x1=-1.00000+2.64575i;x2=-1.00000-2.64575i
import scala.io.StdIn
import scala.math._
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
var i = 0
while(i < n) {
i += 1
var s = StdIn.readLine().split(" ");
var a = s(0).toDouble;
var b = s(1).toDouble;
var c = s(2).toDouble;
var p : Double = b * b - 4 * a * c;
var x1 : Double = -b / (2 * a);
if(b == 0) x1 = 0;
if(p > 0) printf("x1=%.5f;x2=%.5f\n",(-b + math.sqrt(p)) / (2 * a),(-b - math.sqrt(p)) / (2 * a));
else if(p == 0) printf("x1=x2=%.5f\n",x1);
else
{
p = -p;
var y1 = math.sqrt(p) / (2 * a);
var y2 = -math.sqrt(p) / (2 * a);
printf("x1=%.5f%+.5fi;x2=%.5f%+.5fi\n",x1,y1,x1,y2);
}
}
}
}
2-11 循环相克令
这循环相克令是一个两人玩的小游戏。
令词为“剪刀、石头、布”,两人同时说出令词,同时做出一个动作——剪刀的动作是伸出“食指+中指”;石头的动作是“五指握紧”伸出;布的动作是“五指打开”伸出。
双方以此动作判定输赢,剪刀赢布、布赢石头、石头赢剪刀,动作相同则视为平局。
现在给定你一系列的动作组合,请你判断游戏结果。
输入格式:
第一行包含整数 T(1≤T≤100),表示共有 T 组测试数据。
接下来 T 行,每行包含两个字符串,表示一局游戏中两人做出的动作,字符串为 Scissors、Rock 、Paper中的一个,这三个单词分别代表剪刀、石头、布。
输出格式:
如果第一个玩家赢了,则输出 Player1。
如果第二个玩家赢了,则输出 Player2。
如果平局,则输出 Repetition。
输入样例:
3
Scissors Paper
Rock Rock
Scissors Rock
输出样例:
Player1
Repetition
Player2
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt()
var i = 0
while(i < n) {
i += 1;
var k = 0;
var s=StdIn.readLine().split(" ")
var s1=s(0)
var s2=s(1)
if(s1 == "Scissors" && s2 == "Paper" ||
s1 == "Rock" && s2 == "Scissors" ||
s1 == "Paper" && s2 == "Rock") println("Player1");
else if(s1 == s2) println("Repetition")
else println("Player2")
}
}
}
2-12 精准运动
小明 正在学习建模。她对带有活动部件的模型很感兴趣。作为她的第一个任务,她制作了一个大小2×n的矩形盒子,其中包含两个平行的导轨和每个导轨上的矩形条。短条的尺寸1×a,长条的尺寸 1×b. 长杆的两端各有一个塞子,而短的总是在这两个塞子之间。
只要短杆位于挡块之间,杆就可以沿着导轨移动,一次一根杆。所以,小明在每个矩形条移动选择其中一个条并移动它,而另一个保持在原位。最初,两个条都与盒子的一侧对齐,小明希望它们以尽可能少的移动到另一侧对齐。为了实现目标,他最少需要移动多少次?
输入格式:
输入在一行中给出3个整数a、b和c(1<=a<b<=n<=10^7),其间以空格分隔。
输出格式:
对每一组输入,在一行中输出小明最少需要移动的次数。
输入样例:
1 3 6
2 4 9
输出样例:
5
7
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
while(true) {
var s = StdIn.readLine().split(" ");
var a = s(0).toInt;
var b = s(1).toInt;
var c = s(2).toInt;
if(b == c) println(1);
else
{
var k = 0;
var s = b - a
while(b < c || a < c)
{
if(b < c)
{
b += s;
k += 1;
}
if(a < c)
{
a += s
k += 1
}
}
println(k)
}
}
}
}
2-13 sum
本题目要求读入1个整数n,然后输出1~n之间所有整数的和。
输入格式:
输入在一行中给出1个绝对值不超过10000的整数n。
输出格式:
对每一组输入,在一行中输出1~n之间所有整数的和。
输入样例:
-3
3
输出样例:
-5
6
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
while(true)
{
var n = StdIn.readInt();
var sum = 0;
if(n > 0)
{
for(i <- 1 to n)
{
sum += i;
}
println(sum);
}
else
{
for(i <- n to 1)
{
sum += i;
}
println(sum);
}
}
}
}
2-14 菱形
输入一个奇数n,输出一个由‘*’构成的n阶空心菱形。
输入格式:
一个奇数n。
输出格式:
输出一个由‘*’构成的n阶实心菱形。
具体格式参照输出样例。
输入样例:
5
输出样例:
*
* *
* *
* *
*
import scala.io.StdIn
import scala.math._
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
var cx = n / 2
var cy = n / 2
for(i <- 0 to n - 1)
{
for(j <- 0 to n - 1)
{
if(math.abs(i - cx) + math.abs(j - cy) == n / 2) print('*');
else print(' ');
}
println();
}
}
}
2-15 特殊数字
我们规定,对于一个整数 a,如果其各位数字相加之和能够被 4 整除,则称它是一个特殊数字。
现在,给定一个整数 n,请你计算并输出不小于 n 的最小特殊数字。
输入格式:
一个整数 n,1≤n≤1000。
输出格式:
一个整数,表示不小于 n 的最小特殊数字。
输入样例:
42
输出样例:
44
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readLine();
var x = n.toInt;
var t = 0;
for(i <- x to 1004)
{
var nn = i.toString
var sum : Int = 0;
for(c <- nn)
{
sum += c.toInt;
}
if(sum % 4 == 0 && t == 0)
{
print(i);
t = 1;
}
}
}
}
2-16 斐波那契数
给你一个整数n,求出它的斐波那契数是多少?
输入格式:
在一行中给出1个不超过30的正整数n。
输出格式:
在一行中输出斐波那契数的值。
输入样例:
5
输出样例:
1 1 2 3 5
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
var a = 1;
var b = 1;
for(i <- 1 to n)
{
print(a + " ");
var c = a + b;
a = b;
b = c;
}
}
}
2-17 猴子吃桃子问题
有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!以后每天猴子都吃其中的一半,然后再多吃一个。当到第n天时,想再吃时(还没吃),发现只有1个桃子了。问题:最初共多少个桃子?
输入格式:
在一行中给出1个不超过30的正整数n。
输出格式:
在一行中输出最初的桃子个数。
输入样例:
10
输出样例:
桃子=1534
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
var s = 1;
for(i <- 1 to n - 1)
s = (s + 1) * 2;
print("桃子="+s);
}
}
三:第3章 数据结构知识
3-1 输出素数
编写一个循环,判断A~B之间有多少个素数,并输出所有素数。素数又叫质数,就是除了1和它本身之外,再也没有整数能被它整除的数。也就是素数只有两个因子。
输入格式:
输入在一行中给出2个正整数A和B(10<=a,b<=10000)。
输出格式:
输出A~B之间的所有素数,且每个素数占一行。
输入样例:
10 20
输出样例:
11
13
17
19
import scala.io.StdIn
object Main {
def f(n : Int): Int = // 判断素数
{
if(n < 2) return 0
var i = 2;
for(i <- 2 to n / i)
if(n % i == 0) return 0
return 1
}
def main(args: Array[String]): Unit = {
while(true)
{
var s = StdIn.readLine().split(' ');
var A = s(0).toInt;
var B = s(1).toInt;
for(i <- A + 1 to B)
{
if(f(i) != 0) println(i);
}
}
}
}
3-2 分解质因数
将一个正整数分解质因数。例如:输入90,打印出
90=2*3*3*5
输入格式:
输入在一行中给出1个正整数n(n<10e9)。
输出格式:
在一行中输出n和他的因子值,如样例所示。
输入样例:
90
输出样例:
90=2*3*3*5
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var n = StdIn.readInt();
var f = new Array[Int](10100)
var j = 2
var i = 0
var cnt = 0;
print(n+"=")
for(i <- 2 to n)
{
if(n % j == 0)
{
f(cnt) = j;
cnt += 1;
n /= j
j -= 1
}
j += 1
}
var t = 0
for(p <- f if p != 0)
{
if(t != 0) print("*");
if(p != 0) print(p);
t = 1
}
}
}
3-3 h0161. 求最大公约数和最小公倍数
输入两个正整数a和b,求其最大公约数和最小公倍数。
输入格式:
输入在一行中给出2个不超过100000的正整数A和B。
输出格式:
在2行中输出A、B的最大公约数和最小公倍数。
输入样例:
42 36
输出样例:
最大公约数为:6
最小公倍数为:252
import scala.io.StdIn
object Main {
def gcd(a:Int,b:Int):Int=
{
if(b == 0) return a;
else return gcd(b,a%b);
}
def main(args: Array[String]): Unit = {
var s = StdIn.readLine().split(' ');
var a = s(0).toInt;
var b = s(1).toInt;
var g = gcd(a,b);
println("最大公约数为:"+g);
println("最小公倍数为:"+a * b / g);
}
}
3-4 h0162. 字符的个数
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
输入格式:
在一行中给出不超过1000个的字符。
输出格式:
分别输出英文字母、空格、数字和其它字符的个数。
输入样例:
sghye356hf7456767632re;'wetet.';'wetye'tyye;'rw'wetry etew er
输出样例:
字母有 36 个
空格有 2 个
数字有 13 个
其他字符有 10 个
import scala.io.StdIn
object Main {
def main(args: Array[String]): Unit = {
var s = StdIn.readLine();
var a = 0
var b = 0
var cc = 0
var d = 0
for(c <- s)
{
if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') a += 1;
else if(c == ' ') b += 1;
else if(c >= '0' && c <= '9') cc += 1;
else d += 1;
}
println("字母有 "+a+" 个");
println("空格有 "+b+" 个");
println("数字有 "+cc+" 个");
println("其他字符有 "+d+" 个");
}
}
四:面向对象编程
4-1 设计一个矩形类Rectangle
设计一个名为Rectangle的类表示矩形。这个类包括:
两个名为width和height的double类型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1。
一个用于创建默认矩形的无参构造方法。
一个创建指定width和height值的矩形的构造方法。
一个名为getArea()的方法,返回该矩形的面积。
一个名为getPerimeter()的方法,返回周长。
编写一个测试程序,分别输入两个矩形的高和宽,创建两个Rectangle对象。按照顺序显示每个矩形的宽、高、面积和周长。
输入格式:
在一行内输入4个数据,依次为两个矩形的高和宽
输出格式:
每行输出一个矩形的宽、高、面积和周长,中间用空格隔开
输入样例:
在这里给出一组输入。例如:
4 40 3.5 35.9
输出样例:
在这里给出相应的输出。例如:
4.0 40.0 160.0 88.0
3.5 35.9 125.64999999999999 78.8
import scala.io.StdIn
class Rectangle(x : Double,y : Double)
{
var a = x
var b = y
print(a)
print(" " + b);
def getArea(a : Double,b : Double)
{
var area = a * b
print(" " + area)
}
def getPerimeter(a : Double,b : Double)
{
var C = (a + b) * 2
println(" " + C)
}
}
object Main {
def main(args: Array[String]): Unit = {
var s = StdIn.readLine().split(' ');
var a = s(0).toDouble;
var b = s(1).toDouble;
var c = s(2).toDouble;
var d = s(3).toDouble;
var rest1 = new Rectangle(a,b);
rest1.getArea(a,b);
rest1.getPerimeter(a,b);
var rest2 = new Rectangle(c,d);
rest2.getArea(c,d);
rest2.getPerimeter(c,d);
}
}
4-2 定义一个类表示圆(Circle)
定义一个类表示圆(Circle),成员变量r表示圆的半径,成员方法printArea( )用于输出圆的面积。
定义测试类Main,在它的main方法中定义两个Circle类的对象c1、c2,从键盘输入两个数据分别作为c1和c2的半径,并分别调用它们的printArea( )方法输出其面积。
(提示:使用Math.PI表示圆周率,使用Scanner类进行输入,使用printf函数保留小数点后两位。)
输入格式:
输入两个数据分别作为圆c1和c2的半径,中间以空格隔开。
输出格式:
按两行分别输出圆c1和c2的面积,保留小数点后两位。
输入样例:
在这里给出一组输入。例如:
3 7.2
输出样例:
在这里给出相应的输出。例如:
28.27
162.86
import scala.io.StdIn
class Circle(x : Double)
{
var r = x;
def getArea(r : Double)
{
printf("%.2f\n",Math.PI * r * r)
}
}
object Main {
def main(args: Array[String]): Unit = {
var s = StdIn.readLine().split(" ");
var r1 = s(0).toDouble;
var r2 = s(1).toDouble;
var cir1 = new Circle(r1);
cir1.getArea(r1);
var cir2 = new Circle(r2);
cir2.getArea(r2);
}
}