一、保留小数
输入华氏温度f,计算并输出相应的摄氏温度c。 c=5*(f-50)/9+10。
输入、输出数据说明:输入数据可以是整数也可以是小数;输出数据的结果保留两位小数。
输入:
17.2
输出:
The temprature is -8.22.
答案:
import java.util.*;
public class Hello{
public static void main(String[] args){
Scanner in =new Scanner(System.in);
double f,c;
f=in.nextDouble();
c=5*(f-50)/9+10;
System.out.println("The temprature is "+(String.format("%.2f",c))+"."); //这里提供一种保留小数的方法
}
}
拓展:
另一种保留小数的方法:
public class Main{
public static void main(String[] args){
System.out.printf("%.2f",1.789); //输出后不换行
System.out.println("---");
System.out.printf("%.2f\n",1.789); //输出后换行,\n表示换行符
System.out.println("---");
System.out.printf("%.2f%n",1.789); //输出后换行,%n表示换行符
System.out.println("---");
}
}
输出为
1.79---
1.79
---
1.79
---
二、数组排序
输入一个正整数n,再输入n个整数,将它们从大到小排序后输出。
输出格式:数据输出在一行,且每个数据后面有一个空格。
答案:
import java.util.*;
public class Hello {
public static void main(String[] args) {
Scanner in = new Scanner(System.in); //创建数组
int n,k;
n=in.nextInt();
int s[] = new int[n];
for (int i=0;i<n;i++) {
k = in.nextInt();
s[i] = k;
}
Arrays.sort(s); //数组顺序排序(由小到大)
for (int j=s.length-1;j>=0;j-- ){
System.out.print(s[j]+" "); //逆序输出
}
}
}
拓展:
- 创建数组
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n=in.nextInt();
int[] a = new int[n]; //创建数组的三种写法,n也可以为具体实数
int []b = new int[n];
int c[] = new int[n];
int[] s0 = {2,3,4,5}; //直接构造
int[][] d = new int[n][]; //构造二维数组,至少要给出外层数组的n
int s1[][] = {{1,2},{3,4}};
}
}
- 数组排序
import java.util.*;
public class Main{
public static void main(String[] args){
int[] a = {3,5,6,2,4,6,9,1,10};
Arrays.sort(a); //顺序排序
System.out.println(Arrays.toString(a));
for (int i=0; i <= a.length/2; i++){
int t=a[i];
a[i] = a[a.length-1-i];
a[a.length-i-1] = t; //逆序排序
}
System.out.println(Arrays.toString(a));
}
}
输出为
[1, 2, 3, 4, 5, 6, 6, 9, 10]
[10, 9, 6, 6, 5, 4, 3, 2, 1]
三、Math类
求a+aa+aaa+aa…a
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2个正整数a和n, 求a+aa+aaa+aa…a(n个a)之和。所有测试数据的计算结果都没有超出long类型的表数范围。
输入输出例子如下,注意括号内是说明。
输入
2 (repeat=2)
2 3 (a=2, n=3)
8 5 (a=8, n=5)
输出
246 (2+22+222)
98760 (8+88+888+8888+88888)
答案:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n;
n=in.nextInt();
for (int j=0;j<n;j++) {
int a,b,c=0,d=0;
a=in.nextInt();
b=in.nextInt();
for (int i = 1; i <= b; i++) {
c += a * (Math.pow(10, i - 1));
d += c;
}
System.out.println(d);
}
}
}
拓展:
public class Main{
public static void main(String[] args){
int a=3,b=-4;
System.out.println(Math.pow(a,b)); //a^b
System.out.println(Math.exp(a)); //e^a
System.out.println(Math.abs(b)); //b的绝对值
System.out.println(Math.max(a,b)); //a,b中的最大值
System.out.println(Math.min(a,b)); //a,b中的最小值
System.out.println(Math.sqrt(a)); //a开平方
}
}