主题:新手求助程序运行结果的问题
蓝色的水晶
[专家分:90] 发布于 2006-10-12 11:01:00
有如下程序:
s=0:i=1
do while i<=100
s=s+i
loop
end
程序运动结果是( )
A、5050 B、没有输出 C、无穷大的数 D、无限循环,直到数据溢出程序终止
这题应选哪一个答案?
我是在B和D答案中徘徊,我的想法是:因为i在循环体中不发生变化,所以i始终为1,满足条件循环为无限循环,只有S的值不断增加。 由于没有输出语句,一定没有输出,所以选B是有理由的。
但是,我又想s的值无限大时,是不是可以超过数值的范围,造成数据溢出程序终止呢?我又认为答案是D。
我试着运行程序,但漫长时间过去也没看到溢出,要想溢出数值是很大的,也许看不到溢出。
那这个答案应选哪一个?为什么?请高手指点迷津!
回复列表 (共13个回复)
沙发
qb45 [专家分:2880] 发布于 2006-10-13 09:01:00
这个题目本身问的就不明确,程序运动结果是( ),这个到底是指什么我也不懂,最好的方法是看他自己本身有没有标准答案。
按我的理解
如果他说的是S与I的变量,那么结果是S无穷大到益出,而I总是1,答案肯定不是A,从不考虑计算机本身的限制上来说C是对的,如果考虑,那么D是对的
程序本身没有打印语句,所以在屏幕上没有输出,在这点上来看B是对的。
除了A不对,其他都可选,关键是看出题目的人是怎么想,他可以给你分,也可以不给,很灵活。
把程序加上几句代码就可以控制了
s=0:i=1
do while i<=100
s=s+i
locate 10,10:? "i=";i,"s=";s '在屏幕上显示S与I的直
if inkey$=" " then exit do '当按下空格键就退出循环
loop
end
板凳
蓝色的水晶 [专家分:90] 发布于 2006-10-16 17:13:00
此题为职高QBASIC教材上练习题,题目内容书写完全正确,答案应是唯一的。
“程序运行结果是( )”,应该指屏幕上出现的结果,那(C)答案有点不贴切,s虽然会成为一个无穷大的数,但不要输出,所以C可排除。
由于程序中没有print语句,故答案B应该对。
但再深一步考虑,S无限大时,溢不溢出??如果溢出,程序一定终止。那D答案与是否溢出有关,如果不溢出,此题选B。如果溢出,此题选D
请指点!!
3 楼
maxumi [专家分:2200] 发布于 2006-10-17 10:41:00
DDDDDDDDD
溢出才素王道
4 楼
蓝色的水晶 [专家分:90] 发布于 2006-10-19 07:22:00
楼上的兄弟,此题答案是D??
5 楼
qiujie1142 [专家分:0] 发布于 2007-03-25 00:35:00
选A啊
6 楼
qiujie1142 [专家分:0] 发布于 2007-03-25 00:39:00
1负给了i 你说应该是多少啊
把i 的值代入下面的语句中就可算出
所以选A
7 楼
QB71 [专家分:1300] 发布于 2007-03-25 03:21:00
选 D
因为这是Basic程序,语句是无限循环的,Basic的变量是有上界的,当程序的变量超了上界就会产生溢出并终止程序
8 楼
爱丽斯LING [专家分:560] 发布于 2007-03-30 16:31:00
无限循环
9 楼
黑白猪-- [专家分:420] 发布于 2007-04-01 16:41:00
D
10 楼
Matodied [专家分:7560] 发布于 2007-04-21 20:32:00
应该是D,当S超过38位时,就会溢出.
我来回复