1.用对分法解方程 x^(1/2)=cos(x) (x>0)
a、先在纸上研究好算法
b、使用Math.sqrt(), Math.cos(),Math.PI;
c、实型数的比较方法(不能用相等,要用差的绝对值很小作为判断)
d、大致的结果区间
e、怎么结束,常量(到怎样的精度则停止循环计算)(Math.abs())
f、取中值
g、例子:-1.3*X+2=sinX
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public static void main(String[] args) { double minNum=0d,maxNum=1d,xNumber=0.5d,sqrt,cos,absSubstractiveSum=1d; for(;absSubstractiveSum>0.0000001;) {sqrt=Math.sqrt(xNumber); cos=Math.cos(xNumber); absSubstractiveSum=(double)Math.abs(sqrt-cos); if(sqrt-cos<0) {minNum=xNumber; xNumber=(minNum+maxNum)/2;} else {maxNum=xNumber; xNumber=(minNum+maxNum)/2;} } System.out.println(xNumber); } }
|
![在这里插入图片描述]()
2. 用欧几里德辗转相除法求两个正整数的最大公约数
![在这里插入图片描述]()
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class Ogimed {
public static void main(String[] args) { int a=52,b=4; System.out.println(getGCD(a,b)); } static int getGCD(int a,int b) { if(a%b==0) return b; return getGCD(b,a%b); } }
|
3.利用级数展开式计算cos(x)
a、注意循环控制的设计(结束条件)
b、反复查找了源程序,没有问题,但运行的结果就是不对,试着从其他方面找原因
c、可以和Math.cos()的结果做一个比较
d、不用数组。到网上找通项公式;
e、结束条件,常量
![在这里插入图片描述]()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public class CosX {
public static void main(String[] args) { int x=0; System.out.println(cos(x)); } public static double cos(double x) { double sumOfItem=1; double item=x; double EPSILON=0.0000000000000001; int num=1; while(Math.abs(item)>EPSILON) { item=-item*x*x/((2*num)*(2*num-1)); sumOfItem+=item; num++; } return sumOfItem; } }
|
4. 编程计算1000以内的质数(输出格式:一行10个,按列右对齐)
a、注意设计好“信号变量”,isPrime
b、Switch((Integer.toString(intWorker)).length())
c、如何按列右对齐
5. 将任意一个字符串颠倒排列输出
a、引用正确的类及其方法
b、主要是合理运用String或StringBuffer的方法以及循环控制
c、学习使用length()、charAt()等函数
d、研究各种可能的情况
![在这里插入图片描述]()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class primeNumInside1000 { public static void main(String[] args) { int i,j; int num=0; for(i=1;i<=1000;i++) { for(j=2;j<i;j++) { if(i%j==0) break; } if(i==j) {String str=Integer.toString(j); System.out.printf("%4s",str); num++;}; if(num==10) {num=0; System.out.println(); } } }
|
5.将任意一个字符串颠倒排列输出
a、引用正确的类及其方法
b、主要是合理运用String或StringBuffer的方法以及循环控制
c、学习使用length()、charAt()等函数
d、研究各种可能的情况
![在这里插入图片描述]()
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class reverseString { public static void main(String[] args) { StringBuffer str=new StringBuffer("anihC yadhtriB yppaH"); StringBuffer str2=new StringBuffer(""); int length=str.length(); for(int number=length;number>0;number--) { char temp=str.charAt(number-1); str2.append(temp); } System.out.println(str2); } }
|
6. 符号三角形(输入--+-++-+)(第一行从第10列开始,整个三角形右对齐)
a、想办法控制好输出的格式
b、什么是符号三角形
c、如何控制起始位置
d、字符的比较,是否可以考虑用异或
![在这里插入图片描述]()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
public class symbolicTriangle {
public static void main(String[] args) { char[] line=new char[]{' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','+','-','+','+','-','+'}; System.out.println(line); for(int i=9;line[15]!=' ';i++) { for(int j=16;j!=i;j--) {int flag = line[j]^line[j-1]; if(flag==0) {line[j]='+';} else {line[j]='-';} } line[i]=' '; System.out.println(line); }
} }
|
7、编程计算1^1+2^2+3^3+4^4+5^5+……+20^20
b、注意结果的大小,体会数据的范围;
c、需要用到数组;
d、———————————–
e、不能在运算过程中使用实型数
f、使用数组,一个数组元素装一位
g、要使用辅助方法。
![在这里插入图片描述]()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| public class PowersumForm1to20 {
public static void main(String[] args) { sumOf20Power20(); } public static void sumOf20Power20() { int[] sum=new int[50]; int[] temp; sum[0]=5; for(int i=3;i<=20;i++) { temp=nPowerN(i); addToSum(temp,sum); display(sum); } } public static void carry(int[] anArray) { for(int i=0;i<anArray.length-1;i++) { anArray[i+1]+=anArray[i]/10; anArray[i]%=10; } } public static void addToSum(int[] anArray,int[] sumArray) { for(int i=0;i<sumArray.length;i++) { sumArray[i]+=anArray[i]; } carry(sumArray); } public static int[] nPowerN(int aNumber) { int[] tempArray=new int[50]; tempArray[0]=aNumber; carry(tempArray); for(int i=0;i<aNumber-1;i++) { for(int j=0;j<tempArray.length;j++) tempArray[j]*=aNumber; carry(tempArray); } return tempArray; } public static void display(int[] anArray) { boolean isAllPrefixZero=true; for(int i=anArray.length-1;i>=0;i--) { if(anArray[i]!=0) isAllPrefixZero=false; if(!isAllPrefixZero) System.out.print(anArray[i]); } System.out.println(); }
}
|