浙大Java语言程序设计编程详解12.docx
- 文档编号:7596807
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:8
- 大小:16.93KB
浙大Java语言程序设计编程详解12.docx
《浙大Java语言程序设计编程详解12.docx》由会员分享,可在线阅读,更多相关《浙大Java语言程序设计编程详解12.docx(8页珍藏版)》请在冰豆网上搜索。
浙大Java语言程序设计编程详解12
实验13未做和选做题
1.求一元二次方程的根
输入一个正整数repeat(0 输入参数a,b,c,求一元二次方程a*x*x+b*x+c=0的根,结果保留2位小数(如果答案为3.50,则直接显示为3.5)。 按情况分别输出以下内容(文字中的标点为西文标点,无空格。 括号内为说明): (1)a=b=c=0,meaningless (2)a=b=0,c! =0,error (3)x=值(值为-c/b) (4)x1=值1(值1为(-b+Math.sqrt(d))/(2*a)) x2=值2(值2为(-b-Math.sqrt(d))/(2*a)) (5)x1=值1+值2i x2=值1-值2i(值1为-b/(2*a),值2为Math.sqrt(-d)/(2*a)) 输入输出示例: 括号内为说明 输入: 5(repeat=5) 000(a=0,b=0,c=0) 001(a=0,b=0,c=1) 025(a=0,b=2,c=5) 218935(a=21,b=89,c=35) 223(a=2,b=2,c=3) 输出: a=b=c=0,meaningless a=b=0,c! =0,error x=-2.5 x1=-0.44 x2=-3.8 x1=-0.5+1.12i x2=-0.5-1.12i importjava.util.Scanner; publicclassTest30009{ publicstaticvoidmain(Stringargs[]){ intrepeat,ri; inta,b,c,d; doublex1,x2; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ a=in.nextInt();b=in.nextInt();c=in.nextInt(); /*---------*/ if(a==0&&b==0&&c==0) System.out.println("a=b=c=0,meaningless"); elseif(a==0&&b==0&&c! =0) System.out.println("a=b=0,c! =0,error"); elseif(a==0&&b! =0){ x1=-(double)c/b; System.out.println("x="+Math.round(x1*100)/100.0); } else{ d=b*b-4*a*c; if(d>=0){ x1=(-b+Math.sqrt(d))/(2*a); x2=(-b-Math.sqrt(d))/(2*a); System.out.println("x1="+Math.round(x1*100)/100.0); System.out.println("x2="+Math.round(x2*100)/100.0); } else{ x1=-(double)b/(2*a); x2=Math.sqrt(-d)/(2*a); System.out.println("x1="+Math.round(x1*100)/100.0+"+"+Math.round(x2*100)/100.0+"i"); System.out.println("x2="+Math.round(x1*100)/100.0+"-"+Math.round(x2*100)/100.0+"i"); } } } } } 说明: 为防止出错,在编程前应考虑周全 ✧当a=b=c=0时,方程有无数解; ✧当a=b=0,c! =0时,方程无解; ✧当a=0,b! =0时,方程解为x=-c/b; ✧当a! =0时,求: d=b*b-4*a*c 若d>=0,有两个不同实根: x=(-b±Math.sqrt(d))/(2*a) 若d<0,有两个不同复根: x=-b/(2*a)±Math.sqrt(-d)/(2*a)i 或: if(a==0){ if(b==0){ if(c==0) System.out.println("a=b=c=0,meaningless"); else System.out.println("a=b=0,c! =0,error"); } else{ x1=-(double)c/b; System.out.println("x="+Math.round(x1*100)/100.0); } } else{ d=b*b-4*a*c; if(d>=0){ x1=(-b+Math.sqrt(d))/(2*a); x2=(-b-Math.sqrt(d))/(2*a); System.out.println("x1="+Math.round(x1*100)/100.0); System.out.println("x2="+Math.round(x2*100)/100.0); } else{ x1=-(double)b/(2*a); x2=Math.sqrt(-d)/(2*a); System.out.println("x1="+Math.round(x1*100)/100.0+"+"+Math.round(x2*100)/100.0+"i"); System.out.println("x2="+Math.round(x1*100)/100.0+"-"+Math.round(x2*100)/100.0+"i"); } } 2.输出m~n之间的所有闰年(未做) 输入一个repeat(1 输入正整数m和n(1900<=m<=n<=2100),分别代表年份的起止值,输出该范围内所有的闰年。 判断闰年的条件是: 能被4整除但不能被100整除,或者能被400整除。 输出使用语句System.out.println(year); 输入输出示例: 括号内是说明 输入: 2 20002017 20302040 输出 2000 2004 2008 2012 2016 2032 2036 2040 importjava.util.Scanner; publicclassTest40034{ publicstaticvoidmain(String[]args){ intyear,m,n,repeat,ri; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ m=in.nextInt(); n=in.nextInt(); /*---------*/ for(year=m;year<=n;year++){ if((year%4==0&&year%100! =0)||year%400==0) System.out.println(year); } } } 3.简单计算器(选做)40033 输入一个正整数repeat(0 程序模拟简单运算器的工作: 输入一个算式,遇等号"="说明输入结束,输出结果。 假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。 例: 括号内是说明 输入 2(repeat=2) 15+2/3=(数字与运算符之间有一空格) 1+2*10-10/2=(数字与运算符之间有一空格) 输出 5 10 importjava.util.Scanner; publicclassT40033{ publicstaticvoidmain(Stringargs[]){ intri,repeat; intop1,op2,res; charoperator; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ op1=in.nextInt(); operator=(in.next()).charAt(0); /*---------*/ res=op1; while(operator! ='='){ op2=in.nextInt(); switch(operator){ case'+': res+=op2;break; case'-': res-=op2;break; case'*': res*=op2;break; case'/': res/=op2;break; } operator=(in.next()).charAt(0); } System.out.println(res); } } } 4.找鞍点(选做) 输入一个正整数repeat(0 输入1个正整数n和n阶方阵a中的元素,如果找到a的鞍点(鞍点的元素值在该行上最大,在该列上最小),就输出它的下标,否则,输出"NO"(设a最多有1个鞍点)。 例: 括号内是说明 输入: 2(repeat=2) 41741483616120789(n=4) 21741(n=2) 输出: a[2][1]=6 NO importjava.util.Scanner; publicclassTest60019{ publicstaticvoidmain(String[]args){ intri,repeat; inti,j,k,row,col,n,a[][]; booleanflag; Scannerin=newScanner(System.in); repeat=in.nextInt(); for(ri=1;ri<=repeat;ri++){ n=in.nextInt(); a=newint[n][n]; for(i=0;i for(j=0;j a[i][j]=in.nextInt(); /*---------*/ flag=true;row=0;col=0;//不写这些,就通不过编译 for(i=0;i //先在第i行中找出该行的最大值 row=i;//row保存最大值的行坐标 col=0;//col保存最大值的列坐标,假设第i行第0列元素为最大 for(j=1;j if(a[row][j]>a[row][col])col=j; //再判断a[row][col]是否是第col列中的最小值 flag=true; for(k=0;k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙大 Java 语言程序设计 编程 详解 12