基础编程题目集(15 分题)

基础编程题目集(15 分题)

7-1 厘米换算英尺英寸 (15 分)
如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。

输入格式:

输入在一行中给出1个正整数,单位是厘米。

输出格式:

在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。

输入样例:

170
输出样例:

5 6

import java.util.Scanner;
public class Main {
   
	public static void main(String[] args){
   
		Scanner sc=new Scanner(System.in);
		float cm=sc.nextInt();
		
		/*错误思路: * 刚开始,陷入公式,一直跳不出来:以下是错误推导 *0.01cm=(foot+inch/12)×0.3048;foot=inch/12 *-->cm=(foot+inch/12)×30.48 *-->inch=(cm-30.48*foot)/30.48*12; */
		/* * 正确思路: * cm/30.48:就是带小数的英尺,直接取整便是英尺数 * 将小数部分*12:就是英寸数 */
		int foot, inch;//英尺;英寸
		foot=(int) (cm/30.48);
		inch=(int) (12*(cm/30.48-foot));
		System.out.println(foot+" "+inch);
	}
}


7-2 然后是几点 (15 分)
有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。

读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。

输入格式:

输入在一行中给出2个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即5点30分表示为530;流逝的分钟数可能超过60,也可能是负数。

输出格式:

输出四位数字表示的终止时间。题目保证起始时间和终止时间在同一天内。

输入样例:

1120 110
输出样例:

1310

import java.util.Scanner;
public class Main {
   
	public static void main(String[] args){
   
		Scanner sc=new Scanner(System.in);
		int start=sc.nextInt();
		int come=sc.nextInt();
		int end;
		//(start%100)+come可能为负数,正数等
	    int m=(start/100)*60+(start%100)+come;
	    end=(m/60)*100+m%60;
	    System.out.println(end);	
	}
}


7-7 12-24小时制 (15 分)
编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。

输入格式:

输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。

提示:在scanf的格式字符串中加入:,让scanf来处理这个冒号。

输出格式:

在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6 PM表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM。

输入样例:

21:11
输出样例:

9:11 PM

import java.util.Scanner;
public class Main {
   
	public static void main(String[] args){
   
		Scanner sc=new Scanner(System.in);
		String time=sc.next();
		int flag=0;
		for(int i=0;i<time.length();i++){
   
			//找到':'的位置
			if(time.charAt(i)==':'){
   
				flag=i;
				break;
			}
		}
		String hour= time.substring(0, flag);
		String other=time.substring(flag, time.length());
		int h = Integer.parseInt(hour);
		if(h<12){
   
			System.out.println(h+other+" AM");
		}else if(h==12){
   
			System.out.println(h+other+" PM");
		}else{
   
			h=h-12;
			System.out.println(h+other+" PM");
		}
	}
}



7-10 计算工资 (15 分)
某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。

输入格式:

输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。

输出格式:

在一行输出该员工的周薪,精确到小数点后2位。

输入样例1:

5 40
输出样例1:

2000.00
输入样例2:

3 50
输出样例2:

1650.00

import java.util.Scanner;
public class Main{
   
	public static void main(String[] args){
   
		Scanner sc=new Scanner(System.in);
		int year=sc.nextInt();
		int week=sc.nextInt();
		double time;
		double salary;
		
		if(week>40){
   
			time=1.50*(week-40)+40;
		}else{
   
			time=week;
		}
		if(year<5){
   
			salary=30*time;
		}else{
   
			salary=50*time;
		}
		System.out.println(new java.text.DecimalFormat("0.00").format(salary));
	}
}




7-13 日K蜡烛图 (15 分)
股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开盘价格Open(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格Close(下午收盘时最后一笔成交的价格)、中间的最高价High和最低价Low。

如果Close<Open,表示为“BW-Solid”(即“实心蓝白蜡烛”);如果Close>Open,表示为“R-Hollow”(即“空心红蜡烛”);如果Open等于Close,则为“R-Cross”(即“十字红蜡烛”)。如果Low比Open和Close低,称为“Lower Shadow”(即“有下影线”),如果High比Open和Close高,称为“Upper Shadow”(即“有上影线”)。请编程序,根据给定的四个价格组合,判断当日的蜡烛是一根什么样的蜡烛。

输入格式:

输入在一行中给出4个正实数,分别对应Open、High、Low、Close,其间以空格分隔。

输出格式:

在一行中输出日K蜡烛的类型。如果有上、下影线,则在类型后加上with 影线类型。如果两种影线都有,则输出with Lower Shadow and Upper Shadow。

输入样例1:

5.110 5.250 5.100 5.105
输出样例1:

BW-Solid with Lower Shadow and Upper Shadow
输入样例2:

5.110 5.110 5.110 5.110
输出样例2:

R-Cross
输入样例3:

5.110 5.125 5.112 5.126
输出样例3:

R-Hollow

import java.util.Scanner;
public class Main{
   
   public static void main(String[] args){
   
   	Scanner sc=new Scanner(System.in);
   	float Open=sc.nextFloat();
   	float High=sc.nextFloat();
   	float Low=sc.nextFloat();
   	float Close=sc.nextFloat();
   	int flag=0;
   	StringBuilder sb=new StringBuilder();
   	if (Close<Open){
   
   		sb.append("BW-Solid");
   	} else if(Close>Open){
   
   		sb.append("R-Hollow");
   	} else{
   
   		sb.append("R-Cross");
   	}
   	if(Low<Open && Low<Close){
   
   		flag=1;
   		sb.append(" with Lower Shadow");
   	}
   	if(High>Open &&High>Close){
   
   		if(flag==1){
   
   			sb.append(" and Upper Shadow");
   		}else{
   
   			sb.append(" with Upper Shadow");
   		}
   	}
   	System.out.println(sb);
   }

}



7-14 求整数段和 (15 分)
给定两个整数A和B,输出从A到B的所有整数以及这些数的和。

输入格式:

输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。

输出格式:

首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。

输入样例:

-3 8
输出样例:

-3 -2 -1 0 1
2 3 4 5 6
7 8
Sum = 30

import java.util.Scanner;
public class Main{
   
   public static void main(String[] args){
   
   	Scanner sc=new Scanner(System.in);
   	int A=sc.nextInt();
   	int B=sc.nextInt();
   	int sum=0;
   	int j=0;
   	
   	for(int i=A;i<=B;i++){
   
   		StringBuilder sb=new StringBuilder();
   		sum+=i;
   		j++;
   		
   		String s=i+"";
   		for(int t=5-s.length();t>0;t--){
   
   			sb.append(" ");
   		}
   		System.out.print(sb);
   		System.out.print(i);
   		if(j%5==0){
   
   			System.out.println();
   		}
   	}
   	if((B+1-A)%5!=0||B-A==0){
   
   		System.out.println();
   	}
   	System.out.println("Sum = "+sum);
   }

}


7-15 计算圆周率 (15 分)
根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。

输入格式:

输入在一行中给出小于1的阈值。

输出格式:

在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。

输入样例:

0.01
输出样例:

3.132157

import java.util.Scanner;
public class Main {
   
   public static void main(String[] args) {
   
   	Scanner sc=new Scanner(System.in);
   	double num=sc.nextDouble();
   	double P,res=0;
   	int i=0;
   	while(true) {
   
   		
   		res+=jiec(i)/xiamian(i);
   		if((jiec(i)/xiamian(i))<num){
   
   			P=2*res;
   			break;
   		}
   		i++;
   				
   	}
   	System.out.println(new java.text.DecimalFormat("#.000000").format(P));
   }
   
   public static double jiec(double n) {
   
   	double res=1;
   	if(n==0)
   		return res;
   	for(int i=1;i<=n;i++) {
   
   		res*=i;
   	}
   	return res;
   }
   public static double xiamian(double n) {
   
   	double res=1;
   	if(n==0)
   		return res;
   	for(int i=1;i<=n;i++) {
   
   		res*=(2*i+1);
   	}
   	return res;
   }
}


7-16 求符合给定条件的整数集 (15 分)
给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

输入格式:

输入在一行中给出A。

输出格式:

输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

输入样例:

2
输出样例:

234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543

import java.util.Scanner;
public class Main {
   
   public static void main(String[] args) {
   
   	Scanner sc=new Scanner(System.in);
   	int A=sc.nextInt();
   	int num;
   	int t=0;
   	for(int i=A;i<=A+3;i++) {
   
   		for(int j=A;j<A+4;j++) {
   
   			for(int k=A;k<A+4;k++) {
   
   				if(i==j||i==k||j==k)
   					continue;
   				num=i*100+j*10+k;
   				t++;
   				if(t==1) {
   
   					System.out.print(num);
   				}else if(t%6==0) {
   
   					System.out.print(" "+num);
   					System.out.println();
   					t=0;
   				}else {
   
   					System.out.print(" "+num);
   				}					
   			}
   		}
   	}
   }
}


7-17 爬动的蠕虫 (15 分)
一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?

这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。

输入格式:

输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。

输出格式:

在一行中输出蠕虫爬出井的时间,以分钟为单位。

输入样例:

12 3 1
输出样例:

11

import java.util.Scanner;
public class Main{
   
   public static void main(String[] args) {
   
   	Scanner sc=new Scanner(System.in);
   	int N=sc.nextInt();
   	int U=sc.nextInt();
   	int D=sc.nextInt();
   	int time=1;
   	int l=U;
   	if(U>=N) {
   
   		System.out.println(time);
   	}else {
   
   		
   		while(true) {
   
   			time+=2;
   			l+=-D+U;
   			if(l>=N) {
   
   				System.out.println(time);
   				break;
   			}
   		}		
   	}
   }
}

7-19 支票面额 (15 分)
一个采购员去银行兑换一张y元f分的支票,结果出纳员错给了f元y分。采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少?

输入格式:

输入在一行中给出小于100的正整数n。

输出格式:

在一行中按格式y.f输出该支票的原始面额。如果无解,则输出No Solution。

输入样例1:

23
输出样例1:

25.51
输入样例2:

22
输出样例2:

No Solution

import java.util.Scanner;
public class Main{
   
	public static void main(String[] args) {
   
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int y;
		int f;
		int flag=0;
		for(y=0;y<100;y++) {
   
			for(f=0;f<100;f++) {
   
				if(98*f==199*y+n) {
   
					//f+y*0.01-n*0.01==2*y+2*f*0.01
					//-->100f+y-n==200y+2f-->98f==199y+n
					flag=1;
					System.out.println(y+"."+f);//输出
					return;
				}
			}
		}
		if(flag==0) {
   
			System.out.println("No Solution");
		}
	}
}



7-20 打印九九口诀表 (15 分)
下面是一个完整的下三角九九口诀表:

本题要求对任意给定的一位正整数N,输出从11到NN的部分口诀表。

输入格式:

输入在一行中给出一个正整数N(1≤N≤9)。

输出格式:

输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:

4
输出样例:

import java.util.Scanner;
public class Main {
   
	public static void main(String[] args){
   
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		for(int i=1;i<=N;i++){
   
			for(int j=1;j<=i;j++){
   
				StringBuilder sb=new StringBuilder();
				System.out.print(j+"*"+i+"="+i*j);
				for(int t=4-(int) (Math.log10(i*j)+1);t>0;t--){
   
					sb.append(" ");
				}
				System.out.print(sb);
			}
			System.out.println();
		}		
	}
}


7-21 求特殊方程的正整数解 (15 分)
本题要求对任意给定的正整数N,求方程
的全部正整数解。

输入格式:

输入在一行中给出正整数N(≤10000)。

输出格式:

输出方程的全部正整数解,其中X≤Y。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。如果没有解,则输出No Solution。

输入样例1:

884
输出样例1:

10 28
20 22
输入样例2:

11
输出样例2:

No Solution

import java.util.Scanner;
public class Main{
   
	public static void main(String[] args){
   
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		int flag=0;
		for(int x=0;x*x<=5000;x++){
   
			for(int y=x+1;y*y<10000;y++){
   
				if(x*x+y*y==N){
   
					flag=1;
					System.out.println(x+" "+y);
				}
			}
		}
		if(flag==0){
   
			System.out.println("No Solution");
		}	
	}
}



7-24 约分最简分式 (15 分)
分数可以表示为分子/分母的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。

输入格式:

输入在一行中给出一个分数,分子和分母中间以斜杠/分隔,如:12/34表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。

提示:在scanf的格式字符串中加入/,让scanf来处理这个斜杠。

输出格式:

在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用分子/分母的形式表示分数。如 5/6表示6分之5。

输入样例:

66/120
输出样例:

11/20

import java.util.Scanner;
public class Main {
   
	public static void main(String[] args) {
   
		Scanner sc=new Scanner(System.in);
		String str=sc.next();
		int flag=0;
		for(int i=0;i<str.length();i++){
   
			if(str.charAt(i)=='/'){
   
				flag=i;//找到'/'的位置
// System.out.println("i:"+i);
				break;
			}
		}
		String str1=str.substring(0,flag);
		String str2=str.substring(flag+1,str.length());
		int num1=Integer.parseInt(str1);
		int num2=Integer.parseInt(str2);
		int num=f(num1,num2);
		System.out.println(num1/num+"/"+num2/num);
	}
	
	//找最大公约数
	public static int  f(int a,int b){
   
		if(a%b==0){
   
			return b;
		}
		return f(b,a%b);	
	}
}


7-25 念数字 (15 分)
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:

输入在一行中给出一个整数,如:1234。

提示:整数包括负数、零和正数。

输出格式:

在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。

输入样例:

-600
输出样例:

fu liu ling ling

import java.util.Scanner;
public class Main{
   
   public static void main(String[] args) {
   
   	Scanner sc=new Scanner(System.in);
   	String str=sc.next();
   	String[] string={
   "ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
   	char[] num=str.toCharArray();
   	if(num[0]=='-'){
   
   		System.out.print("fu");
   	}else{
   
   		System.out.print(string[num[0]-'0']);
   	}
   	
   	for(int i=1;i<num.length;i++){
   
   		System.out.print(" "+string[num[i]-'0']);
   	}
   }
}



7-26 单词长度 (15 分)
你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it’s算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。

输入格式:

输入在一行中给出一行文本,以.结束

提示:用scanf("%c",…);来读入一个字符,直到读到.为止。

输出格式:

在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。

输入样例:

It’s great to see you here.
输出样例:

4 5 2 3 3 4

import java.util.Scanner;
public class Main{
   
   public static void main(String[] args) {
   
   	Scanner sc=new Scanner(System.in);
   	StringBuilder sb=new StringBuilder();
   	int i=0;
   	while(true){
   
   		String str=sc.next();
   		int len=str.length();
   		if(str.charAt(len-1)=='.'){
   
   			if(len>1){
   
   				sb.append(len-1);
   			}else{
   
   				sb.deleteCharAt(sb.length()-1);
   			}
   			
   			break;
   		}
   		sb.append(len+" ");
   		i=1;
   	
   	}
   	System.out.println(sb);	
   }
}



7-33 有理数加法 (15 分)
本题要求编写程序,计算两个有理数的和。

输入格式:

输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

输出格式:

在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

输入样例1:

1/3 1/6
输出样例1:

1/2
输入样例2:

4/3 2/3
输出样例2:

2

import java.util.Scanner;
public class Main {
   
   public static void main(String[] args){
   
   	Scanner sc=new Scanner(System.in);
   	String[] str=new String[2];
   	int[] num1=new int[2];//分子
   	int[] num2=new int[2];//分母
   	int flag=0;
   	for(int j=0;j<2;j++){
   
   		str[j]=sc.next();
   		for(int i=0;i<str[j].length();i++){
   
   			if(str[j].charAt(i)=='/'){
   
   				flag=i;//找到'/'的位置
   				num1[j]=Integer.parseInt(str[j].substring(0,flag));
   				num2[j]=Integer.parseInt(str[j].substring(flag+1,str[j].length()));
   				break;
   			}
   		}
   	}
   	//相加
   	int res_num1=num1[0]*num2[1]+num1[1]*num2[0];
   	int res_num2=num2[0]*num2[1];
   	//找最大公约数
   	int num=f(res_num1,res_num2);
   	if(res_num2/num==1){
   
   		System.out.println(res_num1/num);
   	}else{
   
   		System.out.println(res_num1/num+"/"+res_num2/num);
   	}
   	
   	
   }
   //找最大公约数
   public static int  f(int a,int b){
   
   	if(a%b==0){
   
   		return b;
   	}
   	return f(b,a%b);	
   }
}


7-36 复数四则运算 (15 分)
本题要求编写程序,计算2个复数的和、差、积、商。

输入格式:

输入在一行中按照a1 b1 a2 b2的格式给出2个复数C1=a1+b1i和C2=a2+b2i的实部和虚部。题目保证C2不为0。

输出格式:

分别在4行中按照(a1+b1i) 运算符 (a2+b2i) = 结果的格式顺序输出2个复数的和、差、积、商,数字精确到小数点后1位。如果结果的实部或者虚部为0,则不输出。如果结果为0,则输出0.0。

输入样例1:

2 3.08 -2.04 5.06
输出样例1:

(2.0+3.1i) + (-2.0+5.1i) = 8.1i
(2.0+3.1i) - (-2.0+5.1i) = 4.0-2.0i
(2.0+3.1i) * (-2.0+5.1i) = -19.7+3.8i
(2.0+3.1i) / (-2.0+5.1i) = 0.4-0.6i
输入样例2:

1 1 -1 -1.01
输出样例2:

(1.0+1.0i) + (-1.0-1.0i) = 0.0
(1.0+1.0i) - (-1.0-1.0i) = 2.0+2.0i
(1.0+1.0i) * (-1.0-1.0i) = -2.0i
(1.0+1.0i) / (-1.0-1.0i) = -1.0

import java.util.Scanner;
public class Main{
   
   public static void main(String[] args){
   
   	Scanner sc=new Scanner(System.in);
   	float[] a=new float[2];
   	float[] b=new float[2];
   	float[] res=new float[2];//实部,虚部
   	StringBuilder sb1=new StringBuilder();
   	StringBuilder sb2=new StringBuilder();
   	for(int i=0;i<2;i++){
   
   		a[i]=sc.nextFloat();
   		//a[i]=
   		b[i]=sc.nextFloat();
   			
   	}
   	if(b[0]<0){
   
   		sb1.append("(").append(toTwo(a[0])).append(toTwo(b[0])).append("i)");
   	}else{
   
   		sb1.append("(").append(toTwo(a[0])).append("+").append(toTwo(b[0])).append("i)");
   	}
   	if(b[1]<0){
   
   		sb2.append("(").append(toTwo(a[1])).append(toTwo(b[1])).append("i)");
   	}else{
   
   		sb2.append("(").append(toTwo(a[1])).append("+").append(toTwo(b[1])).append("i)");
   	}
   	
   	for(int i=1;i<=4;i++){
   
   		switch(i){
   
   		case 1:{
   //加
   			res[0]=a[0]+a[1];
   			res[1]=b[0]+b[1];
   			System.out.print(sb1+" + "+sb2+" = ");
   			res(res[0],res[1]);
   			break;
   		}
   		case 2:{
   //剪
   			res[0]=a[0]-a[1];
   			res[1]=b[0]-b[1];
   			System.out.print(sb1+" - "+sb2+" = ");
   			res(res[0],res[1]);
   			break;
   		}
   		case 3:{
   //乘
   			res[0]=a[0]*a[1]-b[0]*b[1];
   			res[1]=a[0]*b[1]+a[1]*b[0];
   			System.out.print(sb1+" * "+sb2+" = ");
   			res(res[0],res[1]);
   			break;
   		}
   		case 4:{
   //除
   			float denominator=(float) (Math.pow(a[1],2)+Math.pow(b[1],2));//分母
   			res[0]=(a[0]*a[1]+b[0]*b[1])/denominator;
   			res[1]=(a[1]*b[0]-a[0]*b[1])/denominator;
   			System.out.print(sb1+" / "+sb2+" = ");
   			res(res[0],res[1]);
   			break;
   		}
   		}
   	}
   }
   
   public static  String toTwo(float a){
   
   	return new java.text.DecimalFormat("0.0").format(a);
   	
   }
   
   public static void res(float res1,float res2){
   
   	//Math.abs:绝对值
   	if(Math.abs(res1)<0.05&&Math.abs(res2)<0.05){
   
   		System.out.println("0.0");
   	}else if(Math.abs(res1)<0.05){
   
   		System.out.println(toTwo(res2)+"i");
   	}else if(Math.abs(res2)<0.05){
   
   		System.out.println(toTwo(res1));
   	}else {
   
   		System.out.print(toTwo(res1));
   		if(res2<0){
   
   			System.out.println(toTwo(res2)+"i");
   		}else{
   
   			System.out.println("+"+toTwo(res2)+"i");
   		}
   	}
   }
}
全部评论

相关推荐

一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务