要求完成下面的表達式java
a b c d eios
/*- ========================================================== * 文件名 :YPR_20085_J.java * 開發人員:袁培榮 * 當前版本:1.0.1.2595 * 建立時間:2012-02-23 * 修改時間:2012-02-23 * 功能說明:2008奧運趣味題(單類單方法版) * 版權說明:版權全部 袁培榮 YuanPeirong * 編譯環境:Windows 7(x64) SP1 簡體中文專業版 * JDK版本: JDK 7U3-B05(Windows-x64) - ==========================================================*/ /*- ========================================================== * 解題思路: * 設被加數爲iAdd,最小值爲01234.設和爲iSum,最大值爲98765 * 則iAdd最大值爲98765-20085=78680,從而取得iAdd取值範圍 * 對每個iAdd,可知iSum=iAdd+20085 * 將iAdd,iSum中每一位取出,放入一個一維十元素數組 * 對數組進行是否有至關元素的鑑別,若沒有,符合要求 * 將符合要求的iAdd和iSum輸出便可 * 可能有多組解,不能獲得一組就放棄循環,要循環完iAdd全部取值 * 另外,20085中的兩個0使得十位和百位相加時必須進位,則 * iAdd的百位爲9,這個結論能夠減小程度的運算次數。 - ==========================================================*/ import java.io.*; public class YPR_20085_J { public static void main(String args [ ]) { int iOK=0; //iOK用於記錄解的個數 //變量的命名要儘可能規範,這裏採用匈牙利命名法,iOK中的i表明類型int int iAdd,iSum,iAtemp,iStemp; int iForNubmer[]=new int[10];//數組定義和C++不一樣 //JAVA中用new產生的東西不須要自行回收,JAVA後臺會自動完成 int i,j; System.out.println("2008奧運趣味題的答案爲:"); for(iAdd=1234;iAdd<=78680;iAdd++) { iSum=iAdd+20085; iAtemp=iAdd; iStemp=iSum; for(i=0;i<=4;i++) { iForNubmer[i]=iAtemp % 10; iAtemp=iAtemp/10; } if (iForNubmer[2]!=9) {continue;} for(j=0;j<=4;j++) { iForNubmer[j+5]=iStemp % 10; iStemp=iStemp/10; } boolean IsSame=false;//C++中布爾型爲bool for(i=0;i<=8;i++) { for(j=i+1;j<=9;j++) { if (iForNubmer[i]==iForNubmer[j]) {IsSame=true;break;} } if (true==IsSame) //寫成true==IsSame而非IsSame==true的好處是把==錯寫成=時,編譯器會報錯,容易查錯 {break;} } if (false==IsSame) { System.out.println(iAdd+"+20085="+iSum); //用於運行結果1的輸出 //System.out.println(" "+iAdd+'\n'+"+ 20085"+'\n'+"_______"+'\n'+" "+iSum); //System.out.println("=======================");//以上兩行用於運行結果2的輸出 iOK++; } } System.out.println("以上共有"+iOK+"組答案。"); } }//此處沒有分號,C++中有,這是JAVA和C++的一個區別 /*- 運行結果1===================================================== 2008奧運趣味題的答案爲: 14982+20085=35067 27951+20085=48036 37941+20085=58026 41973+20085=62058 51963+20085=72048 64932+20085=85017 以上共有6組答案。 =====運行結果2===================================================== 2008奧運趣味題的答案爲: 14982 + 20085 _______ 35067 ======================= 27951 + 20085 _______ 48036 ======================= 37941 + 20085 _______ 58026 ======================= 41973 + 20085 _______ 62058 ======================= 51963 + 20085 _______ 72048 ======================= 64932 + 20085 _______ 85017 ======================= 以上共有6組答案。 - ==========================================================*/
/*- ========================================================== * 文件名 :YPR_20085.java * 開發人員:袁培榮 * 當前版本:1.0.2.2595 * 建立時間:2012-02-23 * 修改時間:2012-02-23 * 功能說明:2008奧運趣味題(單類多方法版) * 版權說明:版權全部 袁培榮 YuanPeirong * 編譯環境:Windows 7(x64) SP1 簡體中文專業版 * JDK版本: JDK 7U3-B05(Windows-x64) - ==========================================================*/ /*- ========================================================== * 解題思路: * 設被加數爲iAdd,最小值爲01234.設和爲iSum,最大值爲98765 * 則iAdd最大值爲98765-20085=78680,從而取得iAdd取值範圍 * 對每個iAdd,可知iSum=iAdd+20085 * 將iAdd,iSum中每一位取出,放入一個一維十元素數組 * 對數組進行是否有至關元素的鑑別,若沒有,符合要求 * 將符合要求的iAdd和iSum輸出便可 * 可能有多組解,不能獲得一組就放棄循環,要循環完iAdd全部取值 * 另外,20085中的兩個0使得十位和百位相加時必須進位,則 * iAdd的百位爲9,這個結論能夠減小程度的運算次數。 - ==========================================================*/ import java.io.*; public class YPR_20085 { static String sOut; public static void main(String args [ ]) { YPR_20085 m_ypr20085m=new YPR_20085();//類對象的建立和初始化與C++不一樣 //JAVA中用new產生的東西不須要自行回收,JAVA後臺會自動完成 int iOKm=m_ypr20085m.ypr20085(); if (0==iOKm) //寫成0==iOKm而非iOKm==0的好處是把==錯寫成=時,編譯器會報錯,容易查錯 { System.out.println("對不起,2008奧運趣味題沒有答案!"); } else { System.out.println("2008奧運趣味題的答案爲:(共有"+iOKm+"組)"); System.out.println(sOut); } } public int ypr20085() { sOut=""; int iOK=0; //iOK用於記錄解的個數 //變量的命名要儘可能規範,這裏採用匈牙利命名法,iOK中的i表明類型int int iAdd,iSum,iAtemp,iStemp; int iForNubmer[]=new int[10];//數組定義和C++不一樣 for(iAdd=1234;iAdd<=78680;iAdd++) { iSum=iAdd+20085; iAtemp=iAdd; iStemp=iSum; for(int i=0;i<=4;i++) { iForNubmer[i]=iAtemp % 10; iAtemp=iAtemp/10; } if (iForNubmer[2]!=9) {continue;} for(int j=0;j<=4;j++) { iForNubmer[j+5]=iStemp % 10; iStemp=iStemp/10; } YPR_20085 m_ypr20085=new YPR_20085(); boolean bIsSame_get=m_ypr20085.bIsSame(iForNubmer);//C++中布爾型爲bool if (false==bIsSame_get) { sOut=sOut+iAdd+"+20085="+iSum+'\n'; //用於運行結果1的輸出 //sOut=sOut+" "+iAdd+'\n'+"+ 20085"+'\n'+"_______"+'\n'+" "+iSum+'\n'; //sOut=sOut+"======================="+'\n'; //以上兩行用於運行結果2的輸出 iOK++; } } return iOK; } public boolean bIsSame(int iInt[]) //用於判斷數組中有無相同元素 { int i,j; boolean IsSame=false; for(i=0;i<=8;i++) { for(j=i+1;j<=9;j++) { if (iInt[i]==iInt[j]) {IsSame=true;break;} } if (true==IsSame) {break;} } return IsSame; } }//此處沒有分號,C++中有,這是JAVA和C++的一個區別 /*- 運行結果1===================================================== 2008奧運趣味題的答案爲:(共有6組) 14982+20085=35067 27951+20085=48036 37941+20085=58026 41973+20085=62058 51963+20085=72048 64932+20085=85017 =====運行結果2===================================================== 2008奧運趣味題的答案爲:(共有6組) 14982 + 20085 _______ 35067 ======================= 27951 + 20085 _______ 48036 ======================= 37941 + 20085 _______ 58026 ======================= 41973 + 20085 _______ 62058 ======================= 51963 + 20085 _______ 72048 ======================= 64932 + 20085 _______ 85017 ======================= - ==========================================================*/
/*- ========================================================== * 文件名 :YPR_20085_m.java * 開發人員:袁培榮 * 當前版本:1.0.3.2595 * 建立時間:2012-02-23 * 修改時間:2012-02-23 * 功能說明:2008奧運趣味題(多類多方法版) * 版權說明:版權全部 袁培榮 YuanPeirong * 編譯環境:Windows 7(x64) SP1 簡體中文專業版 * JDK版本: JDK 7U3-B05(Windows-x64) - ==========================================================*/ /*- ========================================================== * 解題思路: * 設被加數爲iAdd,最小值爲01234.設和爲iSum,最大值爲98765 * 則iAdd最大值爲98765-20085=78680,從而取得iAdd取值範圍 * 對每個iAdd,可知iSum=iAdd+20085 * 將iAdd,iSum中每一位取出,放入一個一維十元素數組 * 對數組進行是否有至關元素的鑑別,若沒有,符合要求 * 將符合要求的iAdd和iSum輸出便可 * 可能有多組解,不能獲得一組就放棄循環,要循環完iAdd全部取值 * 另外,20085中的兩個0使得十位和百位相加時必須進位,則 * iAdd的百位爲9,這個結論能夠減小程度的運算次數。 - ==========================================================*/ import java.io.*; public class YPR_20085_m { public static void main(String args [ ]) { YPR20085 m_ypr20085m=new YPR20085();//類對象的建立和初始化與C++不一樣 //JAVA中用new產生的東西不須要自行回收,JAVA後臺會自動完成 int iOKm=m_ypr20085m.ypr20085(); if (0==iOKm) //寫成0==iOKm而非iOKm==0的好處是把==錯寫成=時,編譯器會報錯,容易查錯 { System.out.println("對不起,2008奧運趣味題沒有答案!"); } else { System.out.println("2008奧運趣味題的答案爲:(共有"+iOKm+"組)"); System.out.println(YPR20085.sOut); } } }//此處沒有分號,C++中有,這是JAVA和C++的一個區別 class YPR20085 { static String sOut; public int ypr20085() { sOut=""; int iOK=0; //iOK用於記錄解的個數 //變量的命名要儘可能規範,這裏採用匈牙利命名法,iOK中的i表明類型int int iAdd,iSum,iAtemp,iStemp; int iForNubmer[]=new int[10];//數組定義和C++不一樣 for(iAdd=1234;iAdd<=78680;iAdd++) { iSum=iAdd+20085; iAtemp=iAdd; iStemp=iSum; for(int i=0;i<=4;i++) { iForNubmer[i]=iAtemp % 10; iAtemp=iAtemp/10; } if (iForNubmer[2]!=9) {continue;} for(int j=0;j<=4;j++) { iForNubmer[j+5]=iStemp % 10; iStemp=iStemp/10; } BISSAME m_ypr20085=new BISSAME(); boolean bIsSame_get=m_ypr20085.bIsSame(iForNubmer);//C++中布爾型爲bool if (false==bIsSame_get) { sOut=sOut+iAdd+"+20085="+iSum+'\n'; //用於運行結果1的輸出 //sOut=sOut+" "+iAdd+'\n'+"+ 20085"+'\n'+"_______"+'\n'+" "+iSum+'\n'; //sOut=sOut+"======================="+'\n'; //以上兩行用於運行結果2的輸出 iOK++; } } return iOK; } }//此處沒有分號,C++中有,這是JAVA和C++的一個區別 class BISSAME { public boolean bIsSame(int iInt []) //用於判斷數組中有無相同元素 { int i,j; boolean IsSame=false; for(i=0;i<=8;i++) { for(j=i+1;j<=9;j++) { if (iInt[i]==iInt[j]) {IsSame=true;break;} } if (true==IsSame) {break;} } return IsSame; } }//此處沒有分號,C++中有,這是JAVA和C++的一個區別 /*- 運行結果1===================================================== 2008奧運趣味題的答案爲:(共有6組) 14982+20085=35067 27951+20085=48036 37941+20085=58026 41973+20085=62058 51963+20085=72048 64932+20085=85017 =====運行結果2===================================================== 2008奧運趣味題的答案爲:(共有6組) 14982 + 20085 _______ 35067 ======================= 27951 + 20085 _______ 48036 ======================= 37941 + 20085 _______ 58026 ======================= 41973 + 20085 _______ 62058 ======================= 51963 + 20085 _______ 72048 ======================= 64932 + 20085 _______ 85017 ======================= - ==========================================================*/
/*- ========================================================== * 文件名 :YPR_20085_cppJ.cpp * 開發人員:袁培榮 * 當前版本:1.0.1.2595 * 建立時間:2012-02-23 * 修改時間:2012-02-23 * 功能說明:2008奧運趣味題(C++單函數版) * 版權說明:版權全部 袁培榮 YuanPeirong * 編譯環境:Windows 7(x64) SP1 簡體中文專業版 * 編譯器: Visual Studio 2010 SP1 及 MinGW 2011118 - ==========================================================*/ /*- ========================================================== * 解題思路: * 設被加數爲iAdd,最小值爲01234.設和爲iSum,最大值爲98765 * 則iAdd最大值爲98765-20085=78680,從而取得iAdd取值範圍 * 對每個iAdd,可知iSum=iAdd+20085 * 將iAdd,iSum中每一位取出,放入一個一維十元素數組 * 對數組進行是否有至關元素的鑑別,若沒有,符合要求 * 將符合要求的iAdd和iSum輸出便可 * 可能有多組解,不能獲得一組就放棄循環,要循環完iAdd全部取值 * 另外,20085中的兩個0使得十位和百位相加時必須進位,則 * iAdd的百位爲9,這個結論能夠減小程度的運算次數。 - ==========================================================*/ #include<iostream> using namespace std; int main() { int iOK=0; //iOK用於記錄解的個數 int iAdd,iSum,iAtemp,iStemp; int iForNubmer[10]; int i,j; cout<<"2008奧運趣味題的答案爲:"<<endl; for(iAdd=1234;iAdd<=78680;iAdd++) { iSum=iAdd+20085; iAtemp=iAdd; iStemp=iSum; for(i=0;i<=4;i++) { iForNubmer[i]=iAtemp % 10; iAtemp=iAtemp/10; } if (iForNubmer[2]!=9) {continue;} for(j=0;j<=4;j++) { iForNubmer[j+5]=iStemp % 10; iStemp=iStemp/10; } bool IsSame=false; for(i=0;i<=8;i++) { for(j=i+1;j<=9;j++) { if (iForNubmer[i]==iForNubmer[j]) {IsSame=true;break;} } if (true==IsSame) {break;} } if (false==IsSame) { iOK++; //cout<<iAdd<<"+20085="<<iSum<<endl;//用於運行結果1的輸出 cout<<" "<<iAdd<<endl<<" +20085"<<endl; cout<<"_______"<<endl<<" "<<iSum<<endl; cout<<"======================="<<endl;//以上三行用於運行結果2的輸出 } } cout<<"以上共有"<<iOK<<"組答案。"<<endl; return 0; } /*- 運行結果1===================================================== 2008奧運趣味題的答案爲: 14982+20085=35067 27951+20085=48036 37941+20085=58026 41973+20085=62058 51963+20085=72048 64932+20085=85017 以上共有6組答案。 =====運行結果2===================================================== 2008奧運趣味題的答案爲: 14982 + 20085 _______ 35067 ======================= 27951 + 20085 _______ 48036 ======================= 37941 + 20085 _______ 58026 ======================= 41973 + 20085 _______ 62058 ======================= 51963 + 20085 _______ 72048 ======================= 64932 + 20085 _______ 85017 ======================= 以上共有6組答案。 - ==========================================================*/
'- ========================================================== '* 文件名 :YPR_20085_VBA.bas '* 開發人員:袁培榮 '* 當前版本:1.0.1.2595 '* 建立時間:2012-02-23 '* 修改時間:2012-02-23 '* 功能說明:2008奧運趣味題(VBA版) '* 版權說明:版權全部 袁培榮 YuanPeirong '* 編譯環境:Windows 7(x64) SP1 簡體中文專業版 '* VBA版本: 7.0.1590 '- ==========================================================*/ '/*- ========================================================== '* 解題思路: '* 設被加數爲iAdd,最小值爲01234.設和爲iSum,最大值爲98765 '* 則iAdd最大值爲98765-20085=78680,從而取得iAdd取值範圍 '* 對每個iAdd,可知iSum=iAdd+20085 '* 將iAdd,iSum中每一位取出,放入一個一維十元素數組 '* 對數組進行是否有至關元素的鑑別,若沒有,符合要求 '* 將符合要求的iAdd和iSum輸出便可 '* 可能有多組解,不能獲得一組就放棄循環,要循環完iAdd全部取值 '* 另外,20085中的兩個0使得十位和百位相加時必須進位,則 '* iAdd的百位爲9,這個結論能夠減小程度的運算次數。 '- ========================================================== Private Sub CommandButton1_Click() Dim iOK As Integer Dim iAdd, iSum, iAtemp, iStemp As Long Dim iForNumber(1 To 10) As Long Dim i, j As Integer Dim IsSame As Boolean ThisWorkbook.ActiveSheet.Cells(1, 1) = "2008奧運趣味題的答案爲:" For iAdd = 1234 To 78680 iSum = iAdd + 20085 iAtemp = iAdd iStemp = iSum For i = 1 To 5 iForNumber(i) = iAtemp Mod 10 iAtemp = iAtemp \ 10 Next i For j = 6 To 10 iForNumber(j) = iStemp Mod 10 iStemp = iStemp \ 10 Next j IsSame = False For i = 1 To 9 For j = (i + 1) To 10 If (iForNumber(i) = iForNumber(j)) Then IsSame = True Exit For End If Next j If (IsSame = True) Then Exit For End If Next i If (IsSame = False) Then iOK = iOK + 1 Dim str As String ThisWorkbook.ActiveSheet.Cells(iOK + 1, 1) = "(" & iOK & ")" ThisWorkbook.ActiveSheet.Cells(iOK + 1, 2) = iAdd ThisWorkbook.ActiveSheet.Cells(iOK + 1, 3) = "+" ThisWorkbook.ActiveSheet.Cells(iOK + 1, 4) = 20085 ThisWorkbook.ActiveSheet.Cells(iOK + 1, 5) = "=" ThisWorkbook.ActiveSheet.Cells(iOK + 1, 6) = iSum End If Next iAdd ThisWorkbook.ActiveSheet.Cells(iOK + 2, 1) = "結束" End Sub