java第一阶段作业.docx
- 文档编号:17382143
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:28
- 大小:23.30KB
java第一阶段作业.docx
《java第一阶段作业.docx》由会员分享,可在线阅读,更多相关《java第一阶段作业.docx(28页珍藏版)》请在冰点文库上搜索。
java第一阶段作业
第1、2、3章
【程序1】
判断101-200之间有多少个素数,并输出所有素数。
程序分析:
判断素数的方法:
用一个数分别去除2到sqrt(这个数),如果能被整除
则表明此数不是素数,反之是素数。
代码:
(MyEclipse)
publicclassCh1{
publicstaticint[]a;
//用于存放素数
publicstaticintcount=0;
publicstaticbooleanflag;
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
a=newint[100];
for(inti=101;i<=200;i++){
flag=true;
doublex;
x=Math.sqrt(i);
for(intj=2;j<=x;j++){
if(i%j==0){
flag=false;
break;
}
}
if(flag)a[count++]=i;
//判断是否为素数,若flag为true则是素数,否则不是素数
}
System.out.println("101-200之间所有素数为:
");
for(inti=0;i System.out.print(""+a[i]); } System.out.println(); System.out.println("101-200之间素数的个数为: "+count); } } 【程序2】 题目: 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析: 利用for循环控制100-999个数,每个数分解出个位,十位,百位。 代码: publicclassCh2{ publicstaticinta; publicstaticintb; publicstaticintc; /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub for(inti=100;i<1000;i++){ a=i/100; //百位数 b=(i/10)%10; //十位数 c=i%10; //个位数 if(i==a*a*a+b*b*b+c*c*c) System.out.println(i); } } } 【程序3】 题目: 将一个正整数分解质因数。 例如: 输入90,打印出90=2*3*3*5。 程序分析: 对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 代码: publicclassCh3{ publicstaticintn; publicstaticintcount=0; //计算质数的个数 publicstaticint[]a; //用于存放n的各个质数 /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub System.out.println("请输入一个正整数: "); n=inputN(); //inputN()是一个输入函数 a=newint[10]; intm=n; //用来代替n进行计算,以防n的值在计算过程中被改变 for(inti=2;i<=m;i++){ while(m%i==0){ a[count++]=i; m/=i; } //这里不能用if,否则如果遇到有相同质数时,将会出错 } System.out.print(n+"="+a[0]); for(inti=1;i System.out.print("*"+a[i]); } } privatestaticintinputN(){ //TODOAuto-generatedmethodstub Scannersc=newScanner(System.in); returnsc.nextInt(); } } 【程序4】 题目: 利用条件运算符的嵌套来完成此题: 学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 1.程序分析: (a>b)? a: b这是条件运算符的基本例子。 代码: publicclassCh4{ publicstaticinta; publicstaticcharA; publicstaticcharB; publicstaticcharC; publicstaticcharx; /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub System.out.println("请输入学习成绩: "); a=inputN(); x=(a>90)? A: ((a>60)? B: C); System.out.println(x); //System.out.println((a>90)? A: ((a>60)? B: C)); } privatestaticintinputN(){ //TODOAuto-generatedmethodstub Scannersc=newScanner(System.in); returnsc.nextInt(); } } 【程序5】 题目: 输入两个正整数m和n,求其最大公约数和最小公倍数。 代码: publicclassCh5{ publicstaticintn; publicstaticintm; //两个正整数m和n publicstaticinta; publicstaticintb; publicstaticintc; /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub System.out.println("请输入两个正整数m和n: "); a=n=inputN(); b=m=inputN(); while(b! =0){ //利用辗除法 c=a%b; a=b; b=c; } System.out.println("最大公约数: "+a); System.out.println("最小公倍数: "+n*m/a); } privatestaticintinputN(){ //TODOAuto-generatedmethodstub Scannersc=newScanner(System.in); returnsc.nextInt(); } } 【程序6】 题目: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数 1.程序分析: 利用while语句,条件为输入的字符不为'\n'. 代码: publicclassCh6{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub System.out.print("请输入字符串: "); Stringn=input_string(); System.out.println(n); inta1=0;//英文字母的个数 inta2=0;//空格的个数 inta3=0;//数字的个数 inta4=0;//其它字符的个数 intcount=0; while(true){ if(n.charAt(count)>='a'&&n.charAt(count)<='z'){ a1+=1; count++; } elseif(n.charAt(count)==''){ a2+=1; count++; } elseif(n.charAt(count)>='0'&&n.charAt(count)<='9'){ a3+=1; count++; } else{ a4+=1; count++; } if(count>=n.length()){ break; } } System.out.println("英文字母的个数: "+a1+"空格的个数: "+a2+"数字的个数"+a3+"其它字符的个数: "+a4); } publicstaticStringinput_string()//输入字符串 { Strings=""; try { BufferedReaderin=newBufferedReader(newInputStreamReader(System.in)); s=in.readLine(); } catch(IOExceptione){} returns; } } 【程序7】 题目: 一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如6=1+2+3.编程找出1000以内的所有完数。 代码: publicclassCh7{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub for(inti=2;i<=1000;i++){ ints=i; for(intj=1;j<1000;j++){ if(s%j==0){ s=s-j; } } if(s==0) System.out.println(i); } } } 【程序8】 题目: 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米? 第10次反弹多高? 代码: publicclassCh8{ publicstaticdoublesum=100; //sum为球落地时经过的路程 publicstaticdoublen=sum/2; //n为高度 publicstaticinti; //i为球反弹的次数 /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub for(i=2;i<=10;i++){ sum=sum+2*n; n=n/2; } System.out.println("球第10次落地时经过的路程: "+sum); System.out.println("球第10次反弹的高度: "+n); } } 【程序9】 题目: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数? 都是多少? 1.程序分析: 可填在百位、十位、个位的数字都是1、2、3、4。 组成所有的排列后再去掉不满足条件的排列。 代码: publicclassCh9{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub for(inti=1;i<5;i++) for(intj=1;j<5;j++) for(intk=1;k<5;k++){ if(i! =j&&i! =k&&j! =k) System.out.println(i+""+j+""+k); } } } 【程序10】 题目: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析: 在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。 请看具体分析: 代码: publicclassCh10{ publicstaticinta; publicstaticintb; /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub for(inti=1;i<=100000;i++){ a=(int)Math.sqrt(i+100); b=(int)Math.sqrt(i+100+168); if(a*a==(i+100)&&b*b==(i+100+168)) System.out.println(i); } } } 【程序11】 题目: 输入某年某月某日,判断这一天是这一年的第几天? 1.程序分析: 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。 代码: publicclassCh11{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub intyear,month,day,sum=0; System.out.println("请输入年月日: "); year=inputN(); month=inputN(); day=inputN(); switch(month){ case1: sum=0; break; case2: sum=31; break; case3: sum=59; break; case4: sum=90; break; case5: sum=120; break; case6: sum=151; break; case7: sum=181; break; case8: sum=212; break; case9: sum=243; break; case10: sum=273; break; case11: sum=304; break; case12: sum=334; break; default: System.out.println("error"); } if((year%400==0||(year%4==0&&year%100! =0))&&month>2){ //是闰年且月份大于2,多加一天 sum=sum+day+1; } else sum=sum+day; System.out.println("这一天是这一年的第"+sum+"天"); } privatestaticintinputN(){ //TODOAuto-generatedmethodstub Scannersc=newScanner(System.in); returnsc.nextInt(); } } 【程序12】 题目: 输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析: 我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。 代码: publicclassCh12{ publicstaticinta; publicstaticintb; publicstaticintc; /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub System.out.println("请输入三个数: "); a=inputN(); b=inputN(); c=inputN(); intx; if(a>b){ x=a; a=b; b=x; } if(a>c){ x=a; a=c; c=x; } if(b>c){ x=b; b=c; c=x; } System.out.println("三个数由小到大为: "+a+""+b+""+c); } privatestaticintinputN(){ //TODOAuto-generatedmethodstub Scannersc=newScanner(System.in); returnsc.nextInt(); } } 【程序13】 题目: 两个乒乓球队进行比赛,各出三人。 甲队为a,b,c三人,乙队为x,y,z三人。 已抽签决定比赛名单。 有人向队员打听比赛的名单。 a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 代码: publicclassCh13{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub chari,j,k; //是a的对手;j是b的对手;k是c的对手 for(i='x';i<='z';i++) for(j='x';j<='z';j++) for(k='x';k<='z';k++) if(i! =j&&i! =k&&j! =k) if(i! ='x'&&k! ='x'&&k! ='z') System.out.print("a--"+i+"b--"+j+"c--"+k); } } 【程序14】 题目: 打印出如下图案(菱形) * *** ***** ******* ***** *** * 1.程序分析: 先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。 代码: publicclassCh14{ publicstaticchar[][]a; /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub a=newchar[7][7]; for(inti=0;i<7;i++){ for(intj=0;j<7;j++){ a[i][j]='*'; } } for(inti=0;i<=3;i++){ //左上边的空格 for(intj=0;j<=2-i;j++) a[i][j]=''; //右上边的空格 for(intj=i+4;j<7;j++) a[i][j]=''; } for(inti=4;i<7;i++){ //左下边的空格 for(intj=0;j<=i-4;j++) a[i][j]=''; //右下边的空格(利用左右对称) for(intj=4;j<7;j++) a[i][j]=a[i][6-j]; } for(inti=0;i<7;i++){ for(intj=0;j<7;j++){ System.out.print(a[i][j]); } System.out.println(); } } } 【程序15】 题目: 给一个不多于5位的正整数,要求: 一、求它是几位数,二、逆序打印出各位数字。 代码: publicclassCh15{ publicstaticintn; publicstaticintm; /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub System.out.println("请输入一个正整数: "); n=inputN(); if(n<10)m=1; elseif(n<100)m=2; elseif(n<1000)m=3; elsei
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 第一阶段 作业