山东科技大学PTA 作业一
7-1 一个整数各个位上的最大数字
编写一个类的方法,其输入参数为一个整数,输出为该整数各个位上的最大数字。
输入格式:
输入一个整数N
输出格式:
输出该整数N各个位上的最大数字
输入样例:
在这里给出一组输入。例如:
59274
输出样例:
在这里给出相应的输出。例如:
9
代码如下:
import java.util.*;
public class Main {
public static int s(int num){
int max = 0;
while(num != 0){
if(num % 10 > max)
max = num % 10;
num /= 10;
}
return max;
}
public static void main(String[] args) {
Scanner x = new Scanner(System.in);
int i = x.nextInt();
System.out.print(s(i));
}
}
7-2 十进制转二进制
编写代码,要求:输入参数是一个正整数,输出该整数所对应的二进制数对应的字符串。
输入格式:
正整数
输出格式:
输入的正整数对应的二进制字符串“1001”
输入样例:
在这里给出一组输入。例如:
9
输出样例:
在这里给出相应的输出。例如:
1001
代码如下:
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
int i=scan.nextInt();
String resule="";
while(i>1)
{
resule=i%2+resule;
i=i/2;
}
resule=i+resule;
System.out.println(resule);
}
}
7-3 判断回文
编码实现:输入一个字符串,判断该字符串是否是回文(回文是指将该字符串含有的字符逆序排列后得到的字符串和原字符串相同的字符串)如果是回文,则输出“Yes”;否则输出“No”。
输入格式:
判定是否是回文的字符串
输出格式:
“Yes”或者“No”
输入样例:
在这里给出一组输入。例如:
ToooT
输出样例:
在这里给出相应的输出。例如:
Yes
代码如下:
import java.util.*;
public class Main{
public static void main(String argc[]){
Scanner duanmingyu = new Scanner(System.in);
String duanmingyus = duanmingyu.nextLine();
String revers = "";
for(int i = duanmingyus.length()-1; i >= 0 ; i--){
revers += duanmingyus.charAt(i);
}
if(revers.equals(duanmingyus)){
System.out.println("Yes");
}
else {
System.out.println("No");
}
}
}
7-4 学投资
小白学习了一些复利投资知识,想比较一下复利能多赚多少钱(所谓复利投资,是指每年投资的本金是上一年的本金加收益。而非复利投资是指每年投资金额不包含上一年的收益,即固定投资额)。假设他每年固定投资M元(整数),每年的年收益达到P(0<P<1,double),那么经过N(整数)年后,复利投资比非复利投资多收入多赚多少钱呢?计算过程使用双精度浮点数,最后结果四舍五入输出整数(Math的round函数)。
输入格式:
M P N
输出格式:
复利收入(含本金),非复利收入(含本金),复利比非复利收入多的部分(全部取整,四舍五入)
输入样例:
在这里给出一组输入。例如:
10000 0.2 3
输出样例:
在这里给出相应的输出。例如:
17280 16000 1280
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int m = in.nextInt();
double p = in.nextDouble();
int n = in.nextInt();
double a = 0.0, b = 0.0, c = 0.0;
b = m * p * n + m;
int i;
a = (double)m;
for(i = 0; i < n; i++){
a *= 1 + p;
}
c = a - b;
System.out.println(Math.round(a) + " " + Math.round(b) + " " + Math.round(c));
}
}
7-5 打印所有的水仙花数
编写程序打印出所有的水仙花数。所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=13+53+3^3。 输出的数之间用“,”(英文半角的逗号)分割。
输入格式:
无
输出格式:
153,370,371,407
输入样例:
在这里给出一组输入。例如:
输出样例:
在这里给出相应的输出。例如:
153,370,371,407
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int num = 100,flag=0;
int g,s,b;
for(num= 100;num<1000;num++){
g = num / 1 % 10;
s = num / 10 % 10;
b = num / 100 % 10;
if(flag==0){
if(num == g*g*g+s*s*s+b*b*b ){
System.out.print(num);
flag++;
}
}
else {
if(num == g*g*g+s*s*s+b*b*b){
System.out.print(","+num);
}
}
}
}
}
7-6 逆序输出整数
编写程序将整数逆序输出。如输入为9876输出为6789
Main函数中读入n个整数,输出n个整数的逆序数
输入格式:
整数个数n
n个整数
输出格式:
n个整数的逆序数
输入样例:
在这里给出一组输入。例如:
3
1234
2323
1112
输出样例:
在这里给出相应的输出。例如:
4321
3232
2111
代码如下:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int n;
n = input.nextInt();
while(n != 0){
int num = input.nextInt();
while(num != 0){
System.out.print(num%10);
num/=10;
}
System.out.println();
n--;
}
}
}