回 帖 发 新 帖 刷新版面

主题:关于子程序的几个问题

问题一:在主程序或子程序中定义的符号常量如何在主程序和子程序中进行数据传递的.
       有如下程序:
DECLARE SUB SUM()
  CONST X=4
  COMMON SHARED Z
  Y=3
  CALL SUM
  PRINT X;Y;Z
END
SUB SUM
  CONST Y=2
  Z=8
  PRINT X;Y;Z
END SUB

此程序的运行结果:
4  2  8
4  3  8
此程序中,想搞清楚x,y在主程序和调用子程序时是如何变化的?

回复列表 (共7个回复)

沙发

问题二:自定义函数的一个填空问题:
       下列程序的功能是:用3个变量a,b,c分别代表3个学生的成绩,要求输出它们的平均分,最高分和最低分.请仔细阅读程序并在程序"       "处填入所需的内容.

DECLARE FUNCTION AVER!(A!,B!,C!)
COMMON SHARED MAX,MIN
A=70:B=68:C=90
PRINT   (1)
END
   (2)
S=A+B+C
AVER=S/3
MAX=A:MIN=A
IF   (3)   THEN MIN=B ELSE MAX=B
IF  C>A  THEN    (4)
IF C<B THEN      (5)
END FUCTION

其实这个问题很简单,编写的语句有多种,也易于理解,但这个题目中自定义函数中(4),(5)两个填空不如第一个IF语句简单,希望大家给出答案。

板凳

问题三:
选择题:设有如下形式的SUB子程序:
sub x(y( ),n)
……
end sub
则以下对该子程序的调用正确的是(   )
A、CALL x(y,10)
B、K=10 : CALL x(a( ),k) 
C、CALL subx(y( ),10)
D、CALL a(b( ),10)

此题我对子程序sub x(y( ),n)中的y( )不太理解,是数组?
我认为明显C,D不对,因为调用的子程序名和子程序名不一致。
那A,B中哪个对?


3 楼

等了两天也没见到别人的回复,我知好自己找答案了:
我先找到问题一读程序题的疑惑:
DECLARE SUB SUM()
  CONST X=4
  COMMON SHARED Z
  Y=3
  CALL SUM
  PRINT X;Y;Z
END
SUB SUM
  CONST Y=2
  Z=8
  PRINT X;Y;Z
END SUB
解决此题的最关键是:
1、主程序中定义的符号常量在子程序中有效。
2、子程序中定义的符号常量只在子程序中有效。
分析:
此题中的x是在主程序中定义的符号常量(x=4),在子程序中(x=4)调用返回还是(x=4)
而此题中的y是局部变量,在主程序中是变量(y=3),在子程序中它被定义为常量(y=2)在子程序中定义的常量只在子程序中有效,所以返回主程序时y还是变量(y=3)
而Z是全局变量,在主程序中是(z=0),在子程序被赋值(z=8),返回主程序时因为Z是全程变量故是(z=8)

    通过对QBASIC学习获得如下的心得:
    1、必须树立严谨地科学态度,不能想当然。
    2、端正态度,认真细心,注重细节,不能粗枝大叶。
    3、三人行必有我师,要不耻下问。
    4、博览群书,开阔视野,掌握重点,挖掘难点。
    ……

4 楼

狠晕

5 楼

    当我在自学QBASIC中总是有这样那样的问题,在某个时候,虽然对高手来说那是再简单不过或者是小儿科的问题,但对我来说是百思不得其解,我知道那只是学习过程中暂时的,每个坎都要度过,哪怕是一个再简单的问题。
    这个论坛不只是高手交流地方,更是初学者求学的地方?不知道楼主从何晕起?
    本人想删除此贴,可没有找到删除操作,那请你把此贴删除了吧!

6 楼

哦,不.
不能删,
其实我很赞同你的学习过程.
我晕只是我自己晕,而不是说被你晕.

学习最关键的就是发现问题.
更关键的是解决问题.
这样,才能学到本领.
开始学的时候,会发现问题越来越多,这是因为你的能力在不断提高,视界在扩阔.
只要坚持下来了,能力有了,难题自然就轻易而举了.

7 楼

我晕的意思是:
我这几天思想状态不太行,
没有办法整理向你解释的内容.

我来回复

您尚未登录,请登录后再回复。点此登录或注册