浙大java语言程序设计编程答案12.docx
- 文档编号:11632653
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:9
- 大小:16.47KB
浙大java语言程序设计编程答案12.docx
《浙大java语言程序设计编程答案12.docx》由会员分享,可在线阅读,更多相关《浙大java语言程序设计编程答案12.docx(9页珍藏版)》请在冰点文库上搜索。
浙大java语言程序设计编程答案12
实验13未做和选做题
1.求一元二次方程的根
输入一个正整数repeat(0 输入参数a,b,c,求一元二次方程a*x*x+b*x+c=0的根,结果保留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*a),值2为(-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= x1= x2= x1=+ x2=classTest30009{ publicstaticvoidmain(Stringargs[]){ intrepeat,ri; inta,b,c,d; doublex1,x2; Scannerin=newScanner; repeat=(); for(ri=1;ri<=repeat;ri++){ a=();b=();c=(); /*---------*/ if(a==0&&b==0&&c==0) "a=b=c=0,meaningless"); elseif(a==0&&b==0&&c! =0) "a=b=0,c! =0,error"); elseif(a==0&&b! =0){ x1=-(double)c/b; "x="+(x1*100)/; } else{ d=b*b-4*a*c; if(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"); } } } } } 说明: 为避免犯错,在编程前应考虑周全 当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±(d))/(2*a) 若d<0,有两个不同复根: x=-b/(2*a)±(-d)/(2*a)i 或: if(a==0){ if(b==0){ if(c==0) "a=b=c=0,meaningless"); else "a=b=0,c! =0,error"); } else{ x1=-(double)c/b; "x="+(x1*100)/; } } else{ d=b*b-4*a*c; if(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.输出m~n之间的所有闰年(未做) 输入一个repeat(1 输入正整数m和n(1900<=m<=n<=2100),别离代表年份的起止值,输出该范围内所有的闰年。 判断闰年的条件是: 能被4整除但不能被100整除,或能被400整除。 输出利用语句 输入输出示例: 括号内是说明 输入: 2 20002021 20302040 输出 2000 2021 2021 2021 2021 2032 2036 2040 importclassTest40034{ publicstaticvoidmain(String[]args){ intyear,m,n,repeat,ri; Scannerin=newScanner; repeat=(); for(ri=1;ri<=repeat;ri++){ m=(); n=(); /*---------*/ for(year=m;year<=n;year++){ if((year%4==0&&year%100! =0)||year%400==0) } } } 3.简单计算器(选做)40033 输入一个正整数repeat(0 程序模拟简单运算器的工作: 输入一个算式,遇等号"="说明输入结束,输出结果。 假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。 例: 括号内是说明 输入 2(repeat=2) 15+2/3=(数字与运算符之间有一空格) 1+2*10-10/2=(数字与运算符之间有一空格) 输出 5 10 importclassT40033{ publicstaticvoidmain(Stringargs[]){ intri,repeat; intop1,op2,res; charoperator; Scannerin=newScanner; 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;break; case'/': res/=op2;break; } operator=()).charAt(0); } } } } 4.找鞍点(选做) XX文库-让每一个人平等地提升自我输入一个正整数repeat(0 输入1个正整数n和n阶方阵a中的元素,若是找到a的鞍点(鞍点的元素值在该行上最大,在该列上最小),就输出它的下标,不然,输出"NO"(设a最多有1个鞍点)。 例: 括号内是说明 输入: 2(repeat=2) 41741483616120789(n=4) 21741(n=2) 输出: a[2][1]=6 NO importclassTest60019{ publicstaticvoidmain(String[]args){ intri,repeat; inti,j,k,row,col,n,a[][]; booleanflag; Scannerin=newScanner; repeat=(); for(ri=1;ri<=repeat;ri++){ n=(); a=newint[n][n]; for(i=0;i for(j=0;j a[i][j]=(); /*---------*/ 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