目录
- 带空格直角三角形图案
- 直角三角形图案
- 简单计算器
- 获得月份天数
- 计算一元二次方程
1.题目描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案。
1.1输入描述
多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。
1.2输出描述
针对每行输入,输出用“”组成的对应长度的直角三角形,每个“”后面有一个空格。
1.3示例1
输入
5
输出
1.4示例2
输入
4
输出
1.5代码实现
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String input = bf.readLine();
while(input != null){
int n = Integer.parseInt(input);
for(int i=0;i<n;i++){
for(int j=0;j<n-i-1;j++){
System.out.print(" ");
}
for(int j=0;j<i+1;j++){
System.out.print("* ");
}
System.out.println();
}
input = bf.readLine();
}
}
}
2.题目描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的直角三角形图案。
2.1输入描述
多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。
2.2输出描述
针对每行输入,输出用“”组成的对应长度的直角三角形,每个“”后面有一个空格。
2.3示例1
输入
4
输出
2.4示例2
输入
5
输出
2.5代码实现
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String input = bf.readLine();
while(input != null){
int n = Integer.parseInt(input);
for(int i=0;i<n;i++){
for(int j=0;j<i+1;j++){
System.out.print("* ");
}
System.out.println();
}
input = bf.readLine();
}
}
}
3.题目描述
KiKi实现一个简单计算器,实现两个数的“加减乘除”运算,用户从键盘输入算式“操作数1运算符操作数2”,计算并输出表达式的值,如果输入的运算符号不包括在(+、-、*、/)范围内,输出“Invalid operation!”。当运算符为除法运算,即“/”时。如果操作数2等于0.0,则输出“Wrong!Division by zero!”
3.1输入描述
多组输入,一行,操作数1运算符操作数2(其中运算符号包括四种:+、-、*、/)。
3.2输出描述
针对每组输入,输出为一行。
如果操作数和运算符号均合法,则输出一个表达式,操作数1运算符操作数2=运算结果,各数小数点后均保留4位,数和符号之间没有空格。
如果输入的运算符号不包括在(+、-、*、/)范围内,输出“Invalid operation!”。当运算符为除法运算,即“/”时。
如果操作数2等于0.0,则输出“Wrong!Division by zero!”。
3.3示例1
输入
1.0+3.0
1.0;4.0
44.0/0.0
输出
1.0000+3.0000=4.0000
Invalid operation!
Wrong!Division by zero!
3.4代码实现
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String input = bf.readLine();
while(input != null){
String[] strs = input.split("[+\\-\\*\\/]");
if(strs.length<2){
System.out.println("Invalid operation!");
}else{
double a = Double.parseDouble(strs[0]);
double b = Double.parseDouble(strs[1]);
String operator = input.substring(strs[0].length(),strs[0].length()+1);//substring(int beginIndex, int endIndex)截取字符串
if(operator.equals("+")){
System.out.printf("%.4f+%.4f=%.4f",a,b,a+b);
break;
}else if(operator.equals("-")){
System.out.printf("%.4f-%.4f=%.4f",a,b,a-b);
break;
}else if(operator.equals("*")){
System.out.printf("%.4f*%.4f=%.4f",a,b,a*b);
break;
}else if(operator.equals("/")){
if(b==0){
System.out.println("Wrong!Division by zero!");
}else{
System.out.printf("%.4f/%.4f=%.4f",a,b,a/b);
}
}
System.out.println();
}
input = bf.readLine();
}
}
}
4.题目描述
KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。
4.1输入描述
多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。
4.2输出描述
针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。
4.3示例1
输入
2008 2
输出
29
4.4代码实现
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String input = bf.readLine();
while(input != null){
String[] strs = input.split(" ");
int year = Integer.parseInt(strs[0]);
int month = Integer.parseInt(strs[1]);
if(year%4==0 && year%100!=0 ||year%400==0){//四年一闰,百年不闰,四百年再闰
if(month==2){
System.out.println("29"); //闰年
}else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
System.out.println("31");
}else{
System.out.println("30");
}
}else{
if(month==2){
System.out.println("28"); //平年
}else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
System.out.println("31");
}else{
System.out.println("30");
}
}
input = bf.readLine();
}
}
}
5.题目描述
从键盘输入a, b, c的值,编程计算并输出一元二次方程ax2 + bx + c = 0的根,当a = 0时,输出“Not quadratic equation”,当a ≠ 0时,根据△ = b2 - 4ac的三种情况计算并输出方程的根。
5.1输入描述
多组输入,一行,包含三个浮点数a, b, c,以一个空格分隔,表示一元二次方程ax2 + bx + c = 0的系数。
5.2输出描述
针对每组输入,输出一行,输出一元二次方程ax2 + bx +c = 0的根的情况。
如果a = 0,输出“Not quadratic equation”;
如果a ≠ 0,分三种情况:
△ = 0,则两个实根相等,输出形式为:x1=x2=…。
△ > 0,则两个实根不等,输出形式为:x1=…;x2=…,其中x1 <= x2。
△ < 0,则有两个虚根,则输出:x1=实部-虚部i;x2=实部+虚部i,即x1的虚部系数小于等于x2的虚部系数,实部为0时不可省略。实部= -b / (2a),虚部= sqrt(-△ ) / (2a)
所有实数部分要求精确到小数点后2位,数字、符号之间没有空格。
5.3示例1
输入
2.0 7.0 1.0
输出
x1=-3.35;x2=-0.15
5.4示例2
输入
0.0 3.0 3.0
输出
Not quadratic equation
5.5示例3
输入
1 2 1
输出
x1=x2=-1.00
5.6示例4
输入
2 2 5
输出
x1=-0.50-1.50i;x2=-0.50+1.50i
5.7示例5
输入
1 0 1
输出
x1=0.00-1.00i;x2=0.00+1.00i
5.8代码实现
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String input = bf.readLine();
while(input != null){
String[] strs = input.split(" ");
double a = Double.parseDouble(strs[0]);
double b = Double.parseDouble(strs[1]);
double c = Double.parseDouble(strs[2]);
double d = b*b-4*a*c;
if(a==0){
System.out.print("Not quadratic equation\n");
}else if(d==0){
System.out.printf("x1=x2=%.2f\n",-b/(2*a));
}else if(d>0){
System.out.printf("x1=%.2f;x2=%.2f\n",-(b+Math.sqrt(d))/(2*a),-(b-Math.sqrt(d))/(2*a));
}else{
System.out.printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n",-b/(2*a),Math.sqrt(-d)/(2*a),-b/(2*a),Math.sqrt(-d)/(2*a));
}
input = bf.readLine();
}
}
}