您好,欢迎访问三七文档
11、编程验证任一大于2的偶数可以表示成两个素数之和。PrivateFunctionPrime(aAsInteger)AsBooleanDimiAsIntegerFori=2ToSqr(a)IfaModi=0ThenExitFunctionNextiPrime=TrueEndFunction方法一PrivateSubCommand1_Click()DimmAsInteger,iAsIntegerm=InputBox(请输入一个大于2的偶数)Ifm=2OrmMod20ThenMsgBox请输入大于2的偶数:ExitSubIfPrime(2)AndPrime(m-2)ThenPrintm&=2+&m-2ElseDoi=i+1IfPrime(2*i+1)AndPrime(m-(2*i+1))ThenPrintm&=&2*i+1&+&m-(2*i+1)ExitDoEndIfLoopWhile2*i+1m-(2*i+1)EndIfEndSub'方法二PrivateSubCommand2_Click()DimmAsInteger,iAsInteger,p()AsInteger,nAsIntegerDimflgAsBooleanm=InputBox(请输入大于2的偶数)Ifm=2OrmMod20ThenMsgBox请输入大于2的偶数:ExitSubReDimp(1)p(1)=2n=1Fori=3Tom-2Step2IfPrime(i)Thenn=n+1ReDimPreservep(n)p(n)=iEndIfNextiFori=1TonForj=1TonIfp(i)+p(j)=mThen2Printm&=&p(i)&+&p(j)flg=TrueExitForEndIfNextjIfflg=TrueThenExitForNextiEndSub2、求组合数)!(!!mnmnmnC(n=m),程序中必须包含一个求阶乘的通用过程。PrivateFunctionFact(aAsInteger)AsLongIfa=0Ora=1ThenFact=1ElseFact=a*Fact(a-1)EndIfEndFunctionPrivateSubCommand1_Click()DimnAsInteger,mAsInteger,resultAsSinglen=Val(Text1.Text)m=Val(Text2.Text)Ifn=mThenresult=Fact(n)/Fact(m)/Fact(n-m)Text3.Text=resultElseMsgBox要求n=m,请重新输入Text1.Text=Text2.Text=Text1.SetFocusEndIfEndSubPrivateSubCommand2_Click()Text1.Text=Text2.Text=Text3.Text=Text1.SetFocusEndSub3、编写一个查找10到300之间所有同构数的程序,程序中必须包含一个判定某数是否是同构数的Function过程Istgs。若一个数出现在自己平方数的右端,则此数为同构数。如5在52=25的右端,25在252=625的右端,故5和25为同构数。PrivateFunctionIstgs(nAsInteger)AsBooleanDimsAsString,LAsIntegerL=Len(CStr(n))s=CStr(n^2)3IfRight(s,L)=nThenIstgs=TrueEndFunctionPrivateSubCommand1_Click()DimnAsIntegerForn=10To300IfIstgs(n)ThenList1.AddItemn&^2&=&n^2NextnEndSubPrivateSubCommand2_Click()EndEndSub4、编写程序,随机生成一个由三位正整数组成的3行4列的数组,求数组每一行的最大元素及其所在列号,程序中必须包含一个求一行中最大元素及其所在列号的通用过程。(若一行中有多个最大元素则取其中之一即可)PrivateSubCmdDisp_Click()Dima(3,4)AsInteger,iAsInteger,jAsIntegerDimmAsInteger,mjAsIntegerRandomizeFori=1To3Forj=1To4a(i,j)=Int(900*Rnd+100)Printa(i,j);NextjPrintNextiFori=1To3m=0Callmax(a,i,m,mj)Print第&i&行最大值为&m&,在第&mj&列NextiEndSubPrivateSubmax(a()AsInteger,iAsInteger,mAsInteger,maxjAsInteger)DimjAsIntegerm=a(i,1):maxj=1Forj=2ToUBound(a,2)Ifa(i,j)mThenm=a(i,j)maxj=jEndIfNextjEndSubPrivateSubCmdEnd_Click()EndEndSub5、一个整数N的因子和(不包括N)等于N,则N被成为完全数。例如,28=1+2+4+7+14,28是完全数。编写4程序验证:介于10到10000之间的完全数,把它们的各位数字加起来得到一个数,再把这个数的各位数字加起来又得到一个数,一直做下去,直到得到一个一位数,这个数是1,程序中必须包含一个判定某数是否是完全数的过程。例如,28的各位数字加起来得到一个数10,再把10这个数的各位数字加起来又得到一个数是1。PrivateFunctionIsWqs(nAsInteger)AsBooleanDimsumAsInteger,iAsIntegerFori=1Ton/2IfnModi=0Thensum=sum+iNextiIfsum=nThenIsWqs=TrueEndFunctionPrivateSubCommand1_Click()DimnAsIntegerDimsumAsIntegerForn=10To10000IfIsWqs(n)Thent=nPrintt;=;Dosum=0Fori=1ToLen(t)-1sum=sum+Mid(CStr(t),i,1)PrintMid(CStr(t),i,1);+;Nextisum=sum+Mid(CStr(t),i,1)Ifsum1ThenPrintMid(CStr(t),i,1);=;sum;,;sum;=;ElsePrintMid(CStr(t),i,1);=;sum;EndIft=sumLoopUntilsum=1PrintEndIfNextnEndSubPrivateSubCommand2_Click()EndEndSub6、找出500以内的超完全数,程序中必须包含一个判定某数是否是超完全数的过程。设符号Ф(N)表示N的所有因子的和(包括N在内),若Ф(Ф(N))=2N,则N就是一个超完全数。例如,16的因子和为1+2+4+8+16=31,而31的因子为1+31=32,32=2*16,故16是一个超完全数。PrivateFunctionJudge(nAsInteger)AsBooleanDimsumAsIntegersum=yz(n)5Ifyz(sum)=2*nThenJudge=TrueEndFunctionPrivateFunctionyz(nAsInteger)AsIntegerDimiAsIntegerFori=1TonIfnModi=0Thenyz=yz+iNextiEndFunctionPrivateSubCommand1_Click()DimnAsIntegerForn=1To500IfJudge(n)ThenPrintnNextnEndSub7、编写程序,通过调用通用过程找出100以内的所有不可表示成两个平方数之和的数。PrivateFunctionpfh(nAsInteger)AsBooleanDimiAsInteger,tAsSingleFori=1ToInt(Sqr(n))t=n-i^2IfSqr(t)=Int(Sqr(t))Thenpfh=TrueNextiEndFunctionPrivateSubCommand1_Click()DimnAsInteger,tAsIntegerForn=1To100Ifpfh(n)=FalseThent=t+1Printn;IftMod10=0ThenPrintEndIfNextnEndSub8、编写程序,通过调用通用过程找出30以内所有的无平方因子数。若一个数不能被大于1的数的平方整除,则该数就是一个无平方因子数。PrivateSubCommand1_Click()DimnAsInteger,jAsInteger,flgAsBooleanForn=2To30flg=FalseForj=2TonIfpfs(j)AndnModj=0Thenflg=TrueExitForEndIf6NextjIfflg=FalseThenPrintn;NextnEndSubPrivateFunctionpfs(nAsInteger)AsBooleanIfSqr(n)=Int(Sqr(n))Thenpfs=TrueEndFunction9、编写程序,通过调用通用过程验证下列命题:任意一个正整数和其反序数相加,得到一个新的正整数,再对这个新整数重复上述步骤,最终一定可以得到一个回文数(例如,正整数351,其反序数为153,351+153=504,504+405=909,909是回文数)。PrivateFunctionfxs(nAsLong)AsLong'求反序数DimiAsInteger,sAsStringFori=1ToLen(CStr(n))s=Mid(CStr(n),i,1)&sNextifxs=sEndFunctionPrivateFunctionHws(nAsLong)AsBoolean'判断某数是否为回文数DimiAsInteger,sAsString,LAsIntegers=CStr(n):L=Len(s)Fori=1ToLen(s)/2IfMid(s,i,1)Mid(s,L+1-i,1)ThenExitFunctionNextiHws=TrueEndFunctionPrivateSubCommand1_Click()DimxAsLong,tAsLongx=InputBox(请输入一个正整数:)t=xDoWhileHws(t)=FalsePrintt;+;fxs(t);=;t+fxs(t)t=t+fxs(t)LoopEndSub10、找出1000以内所有的奇妙平方数,程序中必须包含一个判定某事是否是奇妙平方数的过称。所谓奇妙平方数,是指此数的平方与它的逆序数的平方互为逆序数。例如,122=144,212=441,12与21互逆,144与441互逆,12就是奇妙平方数。'求反序数PrivateFunctionfxs(nAsLong)AsLongDimiAsInteger,sAsStringFori=1ToLen(CStr(n))s=Mid(CStr(n),i,1)&sNextifxs=s7EndFunctionPrivateSubCommand1_Click()DimnAsLong,tAsLongForn=1To999t=fxs(n)Ift^2=fxs(n^2)AndnMod100AndntThenList1.AddItemn&&tList2.AddItemn&^2&=&n^2&&t&^2&=&t^2EndIfNextnEndSub11、编写程序,查找介于300~2000之间的所有只有两个数字相同的完全平方数,程序中必须包含一个判定某数是否是只有两个数字相同的完全平方数的过程。所谓完全平方数是指其平方根为整数的数。例如676、900、1521等都是介于300~2000之间符合条件的数。PrivateFunctionJudge(nA
本文标题:VB编程题
链接地址:https://www.777doc.com/doc-5052228 .html