1、浙大java语言程序设计编程答案12实验13 未做和选做题1.求一元二次方程的根输入一个正整数repeat (0repeat10),做repeat次下列运算:输入参数a,b,c,求一元二次方程a*x*xb*xc0的根,结果保留2位小数(若是答案为,则直接显示为。按情况别离输出以下内容(文字中的标点为西文标点,无空格。括号内为说明):(1)a=b=c=0,meaningless(2)a=b=0,c!=0,error(3)x=值 (值为-c/b)(4)x1=值1 (值1为(-b+(d)/(2*a)) x2=值2 (值2为(d)/(2*a))(5)x1=值1+值2i x2=值1-值2i (值1为-b
2、/(2*a),值2为(-d)/(2*a))输入输出示例:括号内为说明输入:5 (repeat=5)0 0 0 (a=0,b=0,c=0)0 0 1 (a=0,b=0,c=1)0 2 5 (a=0,b=2,c=5)21 89 35 (a=21,b=89,c=35)2 2 3 (a=2,b=2,c=3)输出:a=b=c=0,meaninglessa=b=0,c!=0,errorx=x1=x2=x1=+x2= class Test30009 public static void main(String args) int repeat, ri; int a,b,c,d; double x1,x2;
3、Scanner in=new Scanner; repeat=(); for(ri = 1; ri =0) x1=(-b+(d)/(2*a); x2=(d)/(2*a); x1=+(x1*100)/; x2=+(x2*100)/; else x1=-(double)b/(2*a); x2=(-d)/(2*a); x1=+(x1*100)/+(x2*100)/+i); x2=+(x1*100)/+-+(x2*100)/+i); 说明:为避免犯错,在编程前应考虑周全 当a=b=c=0时,方程有无数解; 当a=b=0,c!=0时,方程无解; 当a=0,b!=0时,方程解为x=-c/b; 当a!=0时
4、,求:d=b*b-4*a*c若d=0,有两个不同实根:x=(-b(d)/(2*a)若d=0) x1=(-b+(d)/(2*a); x2=(d)/(2*a); x1=+(x1*100)/; x2=+(x2*100)/; else x1=-(double)b/(2*a); x2=(-d)/(2*a); x1=+(x1*100)/+(x2*100)/+i); x2=+(x1*100)/+-+(x2*100)/+i); 2.输出mn之间的所有闰年(未做)输入一个repeat(1repeat10),做repeat次下列运算:输入正整数m和n(1900=m=n=2100),别离代表年份的起止值,输出该范围
5、内所有的闰年。判断闰年的条件是:能被 4 整除但不能被 100 整除,或能被 400 整除。输出利用语句 输入输出示例:括号内是说明输入:22000 20212030 2040输出20002021202120212021203220362040import class Test40034 public static void main(String args) int year,m,n,repeat,ri; Scanner in=new Scanner; repeat=(); for(ri=1;ri=repeat;ri+) m=(); n=(); /*-*/ for(year=m;year=n
6、;year+) if(year%4=0&year%100!=0)|year%400=0) 3.简单计算器(选做) 40033输入一个正整数repeat (0repeat10),做repeat次下列运算:程序模拟简单运算器的工作:输入一个算式,遇等号=说明输入结束,输出结果。假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。例:括号内是说明输入2 (repeat=2)15 + 2 / 3 = (数字与运算符之间有一空格)1 + 2 * 10 - 10 / 2 = (数字与运算符之间有一空格)输出510 import class T40033 pu
7、blic static void main(String args) int ri, repeat; int op1, op2, res; char operator; Scanner in=new Scanner; repeat=(); for(ri=1; ri=repeat; ri+) op1=(); operator=().charAt(0); /*-*/ res=op1; while(operator!=) op2=(); switch(operator) case +: res+=op2;break; case -: res-=op2;break; case *: res*=op2;
8、break; case /: res/=op2;break; operator=().charAt(0); 4.找鞍点(选做)XX文库 - 让每一个人平等地提升自我输入一个正整数repeat (0repeat10),做repeat次下列运算:输入 1 个正整数 n和n 阶方阵a中的元素,若是找到a 的鞍点(鞍点的元素值在该行上最大, 在该列上最小), 就输出它的下标, 不然,输出NO(设a最多有1个鞍点)。例:括号内是说明输入:2 (repeat=2)4 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9 (n=4)2 1 7 4 1 (n=2)输出:a21=6NO import
9、class Test60019 public static void main(String args) int ri, repeat; int i,j,k,row,col,n,a; boolean flag; Scanner in=new Scanner; repeat=(); for(ri=1; ri=repeat; ri+) n=(); a=new intnn; for (i=0;in;i+) for (j=0;jn;j+) aij=(); /*-*/ flag=true; row=0; col=0;/不写这些,就通不过编译 for(i=0;in;i+) /先在第i行中找出该行的最大值 row=i; /row保留最大值的行坐标 col=0; /col保留最大值的列坐标,假设第i行第0列元素为最大 for(j=1;jarowcol) col=j; /再判断arowcol是不是是第col列中的最小值 flag=true; for(k=0;kn;k+) if(akcolarowcol) flag=false; break; /如有比arowcol小的,可知它不是鞍点,可结束循环 if(flag)break; /找到1个鞍点后就不用再找了 if(flag) a+row+col+=+arowcol); else NO);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1