vfp程序设计问题···急!
发布网友
发布时间:2022-05-20 22:10
我来回答
共4个回答
热心网友
时间:2023-10-05 03:49
代码可能有点乱,参考一下吧~
第一题:
第一种
clear
accept "请输入一个十六位数:" to nOX &&输入一个16位进制数
strA=ALLTRIM(nOX)
n=LEN(strA)
result=0
FOR i=1 TO n
a=substr(strA,i,1) &&单个取出输入的字符
*以下的if语句用以判断输入的字符是否符合16进制要求
if((ASC(a)>=ASC("0") and ASC(a)<=ASC("9")) or(ASC(a)>=ASC("a") and ASC(a)<=ASC("f")) or
(ASC(a)>=ASC("A") and ASC(a)<=ASC("F")))
DO CASE
CASE a="A" OR a="a"
a="10"
CASE a="B" OR a="b"
a="11"
CASE a="C" OR a="c"
a="12"
CASE a="D" OR a="d"
a="13"
CASE a="E" OR a="e"
a="14"
CASE a="F" OR a="f"
a="15"
ENDcase
aValue=VAL(a)
temp=1
FOR j=0 TO n-i-1 STEP 1
temp=temp*16
ENDfor
result=result+aValue*temp
rStr=STR(result)
ELSE
=MESSAGEBOX("输入的数有误")
rStr="转换失败"
endif
ENDfor
?rStr
第二种
clear
accept "请输入一个十六位数:" to nOX
strA=ALLTRIM(nOX)
n=LEN(strA)
editable=.t.
FOR i=1 TO n
a=substr(strA,i,1)
if((ASC(a)>=ASC("0") and ASC(a)<=ASC("9")) or(ASC(a)>=ASC("a") and ASC(a)<=ASC("f")) or
(ASC(a)>=ASC("A") and ASC(a)<=ASC("F")))
editable=.t.
ELSE
editable=.f.
exit
endif
ENDfor
if(editable=.t.)
result=INT(VAL("0X"+strA))
??result
ELSE
=messagebox("输入的数据不正确")
??"转换失败"
endif
第二题:
CLEAR
DIMENSION arr(20) &&建立数组
FOR i=1 TO 20
result=INT((RAND()*100)+1) &&取出[1,100]的一个数
arr(i)=result
FOR j=1 TO i-1 &&检测新取出的数是否和前面的重复,重复的话则重新取数
if(arr(j)=result)
i=i-1
endif
endfor
ENDFOR
FOR k=1 TO 20 &&输出数组
??arr(k)
endfor
热心网友
时间:2023-10-05 03:50
问题 1:
16进制转10进制:
格式:
INT(VAL('0x+16进制的数')) &&0x(零x)表示其后面的数为16进制
例子:
?INT(VAL('0x0000000F')) && 或 ?INT(VAL('0xF'))
&&结果为数值型的15
问题2:
for i=1 to 20
gnUpper = 100
gnLower = 1
?INT((gnUpper - gnLower + 1) * RAND( ) + gnLower)
endfor
LZ下次两个问题要给两次分,哈哈哈,更多VFP问题交流可以到开心上社www.kxsss.net
参考资料:www.kxsss.net
热心网友
时间:2023-10-05 03:50
随机输出1~100中的20个数字,不能重复:
for i=1 to 20
?int(rand()*99+1)
endfor
热心网友
时间:2023-10-05 03:51
计算机是没有真正意义的随机的。RAND()在一个程序循环里产生的值,也是循环出现的。比如第一次出现0.85,第二次出现0.55,...,N次(N必小于100)后又从0.85开始,接下去0.55,...,跟上一次出现的值和顺序完全一样。因此,当你要随机产生一个数,并保存到表。那么你下次再打开程序重新随机产生不跟先前产生的数值重复的数值并保存,这样下去,你表内的数值越多,这个程序执行起来越慢。若要随机产生不一样的数值又要保证程序执行速度,目前计算机程序是没法做到的,永远也无法做到,除非人为的随机,比如叫一声,另外加以其他控制如TIMER时间来处理