x=20
y=50
do a1
?x,y 这是第三次显示值对应命令,x的值因为下级程序将其隐藏所以其值没变还是20,y是全局变量,在过程a2中改为MMM了,所以结果是20 MMM
set proc to
return
*过程文件 kk.prg
proc a1
private x 将主程序的变量x隐藏,其作业范围为当前程序和下级子程序
x=30
local y 这个y只在当前程序起作用
y=10
?x,y 这是第一次显示值对应命令,所以是3010
do a2
?x,y这是第二次显示值对应命令,x的作业范围可包括子程序,所以值在下级程序中改了为KKK,而y只在本程序起作用,下级程序中的y是全局变量虽然改了但与当前的y不同,这两个变量不相同,所以还是10,所以结果是 KKK10
return
proc a2
x="KKK"
y="MMM"
RETURN
楼上的 看不懂你写的!1:
SET TALK OFF
CLEAR
DIMENSION a(9)
a(1)='壹'
a(2)='贰'
a(3)='叁'
a(4)='肆'
a(5)='伍'
a(6)='陆'
a(7)='柒'
a(8)='捌'
a(9)='玖'
do while .t.
input '请输入一个数(1——9): ' to n
IF n!=0
?a(n)
else
?"谢谢使用"
exit
endif
enddo
set talk on
2:
set talk off
clear
dimen a(3)
public z
store 0 to a(1),a(2),a(3),z
input "请输入N: " to n
input "请输入M: " to m
input "请输入P: " to p
do 临时 with n
do 临时 with m
do 临时 with p
s=a(1)*a(2)*a(3)
?s
set talk on
临时:
param x
z=z+1
for y=1 to x
a(z)=y+a(z)
endfor
return a(z)
3:
SET TALK OFF
CLEAR
DIMENSION a(9)
PUBLIC n
a(1)='壹'
a(2)='贰'
a(3)='叁'
a(4)='肆'
a(5)='伍'
a(6)='陆'
a(7)='柒'
a(8)='捌'
a(9)='玖'
do while .t.
do 临时
IF n=0
RETURN
endif
?a(n)
enddo
set talk on
临时:
input '请输入一个数(1——9): ' to n
IF n!=0
return
else
?"谢谢使用"
endif
4:考虑中
5:
set talk off
clear
accept "请输入: " to n
?len(n)
SET TALK ON
6:考虑中
首先第一题,n是变量名,代表符合条件的整数个数。for循环语句,变量i范围从10到1000,默认变化增量为1。if条件句,如果i除以7的余数是0,或i除以9余0,变量n就加1;否则n不加,if条件后,对应地要endif(简写endi),即结束if比对。然后for循环启动,从10到1000,一个接一个自动检验。同理,1000完后,结束循环,要endfor(简写endf)。最后?n是输出命令,输出n值。。。。。初学最好不要简写,即不要只写前4个字母。总结,第一题相当于设计一个程序。最初符合条件的整数为0个,变量n=0。在范围[10,1000]内搜索,常用for循环语句;所有能被被7和9中至少一个数整除,就设定条件if mod(i,7)=0 or mod(i,9)=0 ,符合条件就是找到了一个问题要的整数,故你要加1,即n=n+1。完了,要配套使用if与endif for与endfor 题目问有几个符合条件的,就是输出n值,即?n
第二题同理,s相当于n,就像abcd,只是个代号罢了。给s暂时取值为0,从1开始,s=s+1/i 表示从1开始的连续n个自然数的倒数之和。exit 是立马跳出for循环命令,即进行endfor后面的程序(?i-1 )。最后 ,输出i-1,是因为执行exit的前提是s>=3.5 ,而题目只要求小于3.5就叫停,故i一旦使s多一点点或恰好相等,就立即跳出循环,并输出i-1,即得出最终答案。
其实,第二题答案还有缺陷。若1到100的倒数之和小于3.5,而i-1会输出99。从某种意义上而言,第二题答案还值得再思。
最后,我也是大学生,上学期恰好学了VF,多多跟着书上上机指导一步一步练习非常重要。CHEER UP!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)