7-1 古埃及探秘-金字塔
金字塔是继99乘法表决之后的一个经典图形排列题
要求用户可以自主控制塔身的层数, 完成如下金字体样式;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
int a = sca.nextInt();
for(int i = 1; i<= a ; i++)
{
for(int j = 1;j<=a-i;j++)
{
System.out.print(" ");
}
for(int k = 1 ; k<=2*i-1;k++)
{
System.out.print("*");
}
System.out.println();
}
}
}
7-2 jmu-Java-01入门-第一个PAT上Java程序
本题目要求读入若干对整数a和b,然后输出它们的和。
输入格式:
在一行中给出一对整数a和b。 以下输入样例只有两对,实际测试数据可能有多对值。
输出格式:
对每一组输入,如果a的绝对值>1000,输出|a|>1000,否则输出a+b的值。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
while(true)
{
int a = sca.nextInt();
int b = sca.nextInt();
if(Math.abs(a)>1000)
{
System.out.println("|a|>1000");
}
else
{
System.out.println(a+b);
}
}
}
}
3 jmu-Java-01入门-取数字 (2分)
本题目要求读入若干个代表整数的字符串,然后将其转化为整数。
如果该数>=10000且<=20000,则依次输出其对应的二进制字符串、八进制字符串、十六进制字符串。
否则将字符串中的每个数字抽取出来,然后将所有数字加总求和。
提示:参考jdk文档的Integer,
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
int a = 0 ;
while(sca.hasNext())
{
int sum = 0 ,num=0;
String s = sca.nextLine();
a=Integer.parseInt(s);
if(a>=10000 && a<=20000)
{
System.out.print(Integer.toBinaryString(a)+","+Integer.toOctalString(a)+","+Integer.toHexString(a));
}
else
{
char [] str = s.toCharArray();
if(a<0)
{
for(int i=0;i<str.length;i++)
{
if (s.charAt(i)=='-')
{
continue;
}
System.out.print(str[i]+" ");
sum+=str[i]-'0';
}
System.out.print(sum);
}
else
{
for(int j=0;j<str.length;j++)
{
System.out.print(str[j]+" ");
sum+=str[j]-'0';
}
System.out.print(sum);
}
}
System.out.println();
}
}
}
7-4 jmu-Java-01入门-取数字浮点数 (2分)
本题目要求读入若干以回车结束的字符串表示的整数或者浮点数,然后将每个数中的所有数字全部加总求和。
输入格式:
每行一个整数或者浮点数。保证在浮点数范围内。
输出格式:
整数或者浮点数中的数字之和。题目保证和在整型范围内。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sca = new Scanner(System.in);
while(true)
{
String s =sca.nextLine();
char [] ch =s.toCharArray();
int sum = 0 ;
for(int i = 0 ; i<ch.length;i++)
{
if(ch[i]=='-' || ch[i]=='.')
{
}
else
{
int temp = Integer.parseInt(String.valueOf(ch[i]));
sum += temp;
}
}
System.out.println(sum);
}
}
}
-5 jmu-Java-01入门-开根号 (20分)
使用逐步逼近法对给定数值x求开根号。
逐步逼近法说明:从0开始逐步累加步长值。
步长=0.0001,epsilon(误差)=0.0001
循环继续的条件:
平方值<x 且 |x-平方值| > epsilon
###说明与参考
- 数值输出保留6位小数,使用System.out.printf("%.6f\n")
- 求平方,参考Math.pow函数。
- 输入值<0时,返回Double.NaN
输入格式:
任意数值
输出格式:
对每一组输入,在一行中输出其开根号。保留6位小数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
double long1=0.0001;
double epsilon = 0.0001;
double i;
double x;
while(sca.hasNext())
{
x=sca.nextDouble();
if(x<0)
{
System.out.println("NaN");
}
else
{
for(i=0;(i*i <x) && (Math.abs(x-i*i) > epsilon);i+=long1)
{
}
System.out.printf("%.6f",i);
System.out.println();
}
}
}
}
7-6 校园竞赛-十位评委 (10分)
题目要求:
我们学院经常组织各项技能比赛,例如电脑文化节中Flash作品比赛,台下有10位评委来评判参赛者的作品,评委打分:0-100分的整数,参赛者最终得分是去掉一个最高分,去掉一个最低分,所剩分数的平均分。
要求设计一个软件,可以连续输入10位评委的成绩,并且可以无限次计算参赛者的成绩(提示,不退出即可继续输入下一批成绩)
输入格式:
90 100 80 70 65 86 77 89 91 73
输出格式:
100 65 82
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sca = new Scanner(System.in);
while(true)
{
int[] score = new int[10];
for(int i=0;i<score.length;i++)
{
score[i] = sca.nextInt();
}
int min=score[0],max = score[0];
for(int i = 1;i<score.length;i++)
{
if(score[i]>max)
{
max=score[i];
}
if(score[i]<min)
{
min=score[i];
}
}
System.out.println(max+" "+min);
for(int i=1;i<score.length;i++)
{
if(score[i]==max)
{
score[i]=0;
}
if(score[i]==min)
{
score[i]=0;
}
}
int sum=0;
for(int a:score)
{
sum+=a;
}
System.out.println(sum/8);
}
}
}
7-2 jmu-Java-02基本语法-01-综合小测验 (10分)
运行程序后可以输入4个选项,分别为:fib,sort,search,getBirthDate
**fib:**根据输入n,打印斐波那契数列。比如输入:3,输出:1 1 2
sort:**输入一串数字,然后进行排序并输出,注意数组元素输出的格式为使用[ ]包括。提示:**可直接使用函数Arrays相关方法处理输出。
search:**如果找到返回所找到的位置,如果没找到,返回-1。提示:**可以先对数组排序,然后使用Arrays相关函数进行查找。
getBirthDate:输入n个身份证,然后把输入的n个身份号的年月日抽取出来,按年-月-日格式输出。
当输入不是这几个字符串(fib,sort,search,getBirthDate)的时候,显示exit并退出程序。
注意:在处理输入的时候,尽量全部使用Scanner的**nextLine()**方法接收输入,不要将nextLine()与其它next方法混用,否则可能会出现行尾回车换行未处理影响下次输入的情况。
参考:jdk文档的Arrays,String
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static int count=0;
public static void fib(int n){
int a=1;
int b=1;
if (n==1){
System.out.println("1");
return;
}else if (n==2){
System.out.println("1 1");
return;
}else if (n==0){
return;
} else {
System.out.print("1 1 ");
}
int tem;
for (int i=2;i<n-1;i++){
tem=a+b;
System.out.print(tem+" ");
a=b;
b=tem;
}
System.out.println(a+b);
return;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a[]=new int[1];
while (true){
String str=sc.nextLine();
if (str.equals("fib")){
count=0;
int b=Integer.valueOf(sc.nextLine());
fib(b);
}else if (str.equals("sort")){
String s[]=sc.nextLine().split(" ");
a=new int[s.length];
for (int i=0;i<s.length;i++){
a[i]=Integer.valueOf(s[i]);
}
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}else if (str.equals("search")){
int b=Integer.valueOf(sc.nextLine());
int flag=0;
for (int i =0;i<a.length;i++){
if (a[i]==b){
flag=1;
System.out.println(i);
break;
}
}
if (flag==0){
System.out.println(-1);
}
}else if (str.equals("getBirthDate")){
int time=Integer.valueOf(sc.nextLine());
for (int i=0;i<time;i++){
String bir=sc.nextLine();
String bem=bir.substring(6,14);
System.out.println(bir.substring(6,10)+"-"+bir.substring(10,12)+"-"+bir.substring(12,14));