1.實現分數的加法運算,編程思想和代碼在附件。(必做題)
2.實現二維數組的一種加法運算,編程思想和代碼在附件。(必做題)
3.實現分數的四則運算,即兩個分數相減,相乘和相除,考慮到各種邊界情況。(選做題)
分數的加法運算編程 編程思路:分數相加,兩個分數分別是1/5和7/20,它們相加後得11/20。方法是先求出兩個分數分母的最小公倍數,通分後,再求兩個分子的和,最後約簡結果分數的分子和分母(如果兩個分數相加的結果是4/8,則必須將其化簡成最簡分數的形式1/2),即用分子分母的最大公約數分別除分子和分母。請用四個對話框順序輸入分子和分母,在控制檯上輸出其運算結果。代碼結構附後。 package hu;
public class TestFractory {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub fracAdd(1,5,7,20);//結果爲:11/20 //fracSub(1,5,7,20);//分數相減 //fracMul(1,5,7,20);//分數相乘 //fractDiv(1,5,7,20);//分數相除
} static void fracAdd(int first_numerator,int first_denominator,int second_numrator,int second_denominator){ //以下代碼能夠在控制檯上顯示結果 //需要調用求最大公約數的函數 //需要調用求最小公倍數的函數 } static int gcd(int m,int n){ return 0; } static int lcm(int m,int n){ return 0; }
}
二維數組的一種加法運算 編程思路:求出二維數組(行數和列數必須相等)的非對角線元素之和,即求兩條對角線之外的元素之和。代碼框架如下。 package hu;
public class TestMatrix {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[][] a={{1,1,1,1},{1,2,2,1},{1,2,2,1},{1,1,1,1}};//初始化數組如4*4 printMatrix(a);//按二維方式輸出數組 int sum=addMatrix(a); System.out.println(sum);
} static void printMatrix(int[][] a){ } static int addMatrix(int[][] a){ return 0; }
}
package hu;
public class TestMatrix {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] a={{1,1,1,1},{1,2,2,1},{1,2,2,1},{1,1,1,1}};//初始化數組如4*4
printMatrix(a);//按二維方式輸出數組
int sum=addMatrix(a);
System.out.println(sum);
}
static void printMatrix(int[][] a){
for(int i = 0;i < 4;i++)
{
for(int j = 0;j < 4;j++)
{
System.out.print(a[i][j]);
}
System.out.println();
}
}
static int addMatrix(int[][] a){
int sum = 0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(3-i!=j&&i!=j)
{
sum=sum+a[i][j];
}
}
}
return sum;
}
}
package hu;
public class TestFractory {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
fracAdd(1,5,7,20);//結果爲:11/20
fracSub(1,5,7,20);//分數相減
fracMul(1,5,7,20);//分數相乘
fractDiv(1,5,7,20);//分數相除
}
static void fracAdd(int first_numerator,int first_denominator,int second_numrator,int second_denominator){
//以下代碼能夠在控制檯上顯示結果
int m1=lcm( first_denominator,second_denominator);//需要調用求最小公倍數的函數
int nu=first_numerator*(m1/first_denominator)+second_numrator*(m1/second_denominator);
int de=m1;
int m=gcd(nu,de);//需要調用求最大公約數的函數
nu=nu/m;
de=de/m;
System.out.print(nu);
System.out .print("/");
System.out.print(de);
}
//求最大公約數
static int gcd(int m,int n){
int i;
if(m>n)
{
i=n;
}
else
{
i=m;
}
int t,t1=1;
for(t=i;t>0;t--)
{
if(m%t==0&&n%t==0)
{
t1=t;
break;
}
}
return t1 ;
}
//求最小公倍數
static int lcm(int m,int n){
int i;
if(m>n)
{
i=m;
}
else
{
i=n;
}
int t,t1=1;
for(t=i;t>0;t++)
{
if(t%n==0&&t%m==0)
{
t1=t;
break;
}
}
return t1;
}
}