伯德打架:QBASIC语言 谁能给我讲讲课?我不懂!

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 00:30:02
说的详细点~~~~

QBASIC提供了标准函数。一个标准函数就是一段程序,它具有一种特定的功能。 我们在使用时只需写出它的名字(即函数名)和参数就可以直接调用。 QBASIC提供的标准函数包括:算术函数和字符串函数等。这些函数功能齐全、 用途广泛。这里主要介绍算术函数,有关字符串函数将以后章节中介绍。算术函数, 指调用函数后返回一个数值,本节主要介绍取整函数与随机函数。
取整函数
随机函数

1. 取整函数
函数格式:INT(X)
功能:产生一个不大于X的最大整数。其中,X可以是常数、变量或表达式。
使用取整函数可以解决很多数学问题。
(1)取一个数的整数部分
例如:
X=5.3: Y=5.5: Z=-6.1
X=INT(X): Y=INT(Y): Z=INT(Z)
PRINT X,Y,Z
END
执行后屏幕上显示: 5 5 -7
(2)四舍五入
取整函数本身没有四舍五入的功能,但将其稍加变化就可以实现四舍五入。
四舍五入的通式为:
INT(X+0.5)。
例1 将下面的数字保留整数部分,小数部分四舍五入。
1.36 2.5 4.1 0.48
FOR I=1 TO 4
READ X
PRINT X,
INT(X+0.5)
NEXT I
DATA 1.36,2.5,4.1,0.48
END
执行后屏幕上显示:
1.36 1 2.5 3 4.1 4 0.48 0
(3)保留N位小数
将X保留N位小数,可以先将X乘以10N,取整后再除以10N。
通式为INT(X*10^N)/ 10^N。
例2 将3.14159保留三位小数且最后一位小数四舍五入。
X=3.14159
Y=INT(X*1000+0.5)/1000
PRINT X,Y
END
执行后屏幕上显示:
3.14159 3.142
(4)判断整除
要判断一个整数X能否被另外一个整数Y整除,只需判断X/Y=INT(X/Y),条件满足则为整除。
例如:
CLS
INPUT X,Y
IF X/Y=INT(X/Y) THEN PRINT "能整除"ELSE PRINT "不能整除";
END
执行后屏幕上显示:
? 30, 5 能整除
? 30, 7 不能整除
如果将除数改为2,则可以判断一个数的奇偶性。
(5)分离数字
要对一个三位数X分离数字,可以采用如下方法:
百位数字B=INT(X/100)
十位数字S=INT((X-B*100)/10)
个位数字G=X-B*100-S*10
例3 求100~999之间的所有水仙花数,并统计个数。水仙花数是指一个三位数,其中各位数字的立方和就等于该数本身。
REM 求水仙花数
N=0
FOR X=100 TO 999
B=INT(X/100)
S=INT((X-B*100)/10)
G=X-B*100-S*10
IF X=B*B*B+S*S*S+G*G*G THEN N=N+1: PRINT X,
NEXT X
PRINT "N="; N
END
执行后屏幕上显示: 153 370 371 471 N=4
2. 随机函数
什么是随机数?我们可以这样理解:每次从若干个可能的数中抽出一个,抽出哪一个,事先不能确定,这样抽出的数叫做随机数。
函数格式:RND(X)
功能:产生一个0~1之间的随机数。
其中,X可以是任意的数值,也可以忽略不写。
在具体的程序中,无论RND(1)、RND(100)、RND(562),RND产生随机数的效果是相同的,一般写成RND就可以了。
为了能产生真正的随机数(即每次执行程序产生的数各不相同),需要在程序的
开头加上语句RANDOMIZE TIMER。
使用随机函数还可以产生某一个区域中的随机数:
A~B(不包括A和B)
(B-A)*RND+A A~B(包括A和B)
(B-A+1)*RND+A
例4 算术练习程序。
利用随机函数产生10道不同的两位数加法题,要求回答, 每答对一道题加10分,最后给出总得分。
分析:先产生两个两位的随机整数,并显示在屏幕上。
输入答案后判断结果是否正确,如果正确则加10分。如此重复10次即可。
RANDOMIZE TIMER
CLS : S=0
FOR I=1 TO 10
A=INT(90*RND)+10
B=INT(90*RND)+10
PRINT A; "+"; B; "=";
INPUT C
IF C=A+B THEN S=S+10
NEXT I
PRINT "你的得分是:"; S
END
使用随机函数还可以模拟一些自然现象,得到统计数据。
例5 模拟抛硬币试验。求硬币落地以后正面向上或反面向上的次数。 分析:产生一个随机整数,如果这个数是奇数,则将正面向上次数加1,否则将反面向上的次数加1。如此重复N次即可。
RANDOMIZE TIMER
CLS
INPUT "N=";N
FOR I = 1 TO N
X = INT(RND * 100)
IF X / 2 = INT(X / 2) THEN A = A + 1: GOTO 5
B = B + 1
5 NEXT I
PRINT "正面次数=";A, "反面次数=";B
END
执行后屏幕上显示: N=? 100 正面次数=49 反面次数=51 N=? 1000 正面次数=505 反面次数=495 N=? 10000 正面次数=4975 反面次数=5025 从上面的结果我们可以看到,抛硬币的次数越多,正、反面的概率就越接近。

找本谭浩强编写的"QBASIC语言教程"自学,其中有许多范例代码,可以边学习边上机实践,编程需有持之以恒的决心,清晰的思路,逐步深入,才能掌握精髓.祝你取得成功.