要求完成下面的表达式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