大家好,欢迎来到IT知识分享网。
Qbasic 程序设计入门
Qbasic 程序设计入门
第一章 BASIC语言概述
三、QBasic的特点
QBasic是结构化的程序设计语言,与第二代BASIC相比有如下特点:
1、扩充了变量和常量的类型
.变量名长度:40个字符
.增加了长整型、定长字符型变量
.可定义数值常量、字符串常量
2、提供了新的选择结构
.条件语句
IF <条件> THEN
<语句组1>
ELSE
<语句组2>
END IF
.多分支语句SELECT
3、改进了循环结构
增加以下两个循环语句:
.WHILE循环
WHILE <条件>
<循环体>
WEND
4、子程序和函数作为单独的模块
5、不需要行号
6、具有良好的编辑环境
7、提供联机“Help”
8、提供“分步执行”“跟踪”等调试
9、采用先进的解释执行方式
10、与Visual BASIC完全兼容
四、QBasic使用环境
1、启动
.在DOS状态下运行QBASIC,如: F:\>QBASIC
.在WIN98下双击QBASIC图标;
.软盘启动
把QBASIC系统文件(QBASIC.EXE、QBASIC.HLP) 复制到A盘,再执行:A:\>QBASIC
2、工作窗口
.程序窗口(上)
.命令窗口(下)
.两窗口之间的切换F6
Qbasic 程序设计入门
第二章 QBasic程序设计初步
程序设计=算法+数据结构+程序设计方法+语言工具和计算机环境
四、变量
五、标准函数
六、运算符和表达式
括号—正负号—函数—乘方—乘、除、整除—余数—加、减
Qbasic 程序设计入门
第三章 顺序程序设计
程序的执行次序,从上到下,由一些非控制转移语句组成
(3)变量值的传递
(4)关于赋值类型
Qbasic 程序设计入门
第四章 选择结构程序设计
二、关系式和逻辑表达式
算术运算—关系运算—逻辑运算(例P123)
关于逻辑表达式结果:
x=6>4
print x x=-1
a=5=3 =>a=(5=3) a=0
四、块if语句
2、应用举例
P125 改写为:
五、多分支选择语句
每一个CASE句中指定一个值条件,当CASE变量的值符合条件时,执行该子句下面的语名组,在执行完该语句组后,跳过其它CASE子句,从END SELECT转出。
c=int(s/250)
2、在CASE子句中使用TO
3、在CASE子句中使用IS
CASE IS <关系运算符> <表达式>
4、在CASE子句中使用多个条件
5、SELECT CASE语句的一般格式
Qbasic 程序设计入门
第五章 循环结构程序设计
循环体——反复执行的一组语句
例:求s=1+2+3+…+100
注: <条件>是终止循环的逻辑表达式,<条件>应随循环的执行而变化,最终退出循环。
构成“死循环”——无终止的循环。这时可用Ctrl+Break终止其程序运行。
例1(P152例7.5): 如果我国工农业生产每年以12%速度增长,问多少年后产值翻一番:基值设为100。
(逐年计算产值,看是否达到200)
例2 (P152例7.6) : 给出两个正整数,求它们的最大公约数。
算法:(辗转相除法)
(1)、以大数m作被除数,小的数n作为除数,相除后余数为r。
例3 (P153例7.7):给一个整数n(>2),判别它是否素数(质数)。
1、格式
FOR <变量>=<初值> TO <终值> STEP <增量>
循环体
WEXT <变量>
如: for i=1 to 10 step 2
注意:在循环体内可对循环变量赋值,但这将改变循环次数。
4、应用举例
斐波那契数列
猴子吃桃:每次吃掉一半多一个,直到第10天只剩一个,第一天共摘了多少个桃子?
思考:for n%=10 to 1 step -1 或for n%=1 to 9
三、DO 循环语句
终止循环可用: exit do
计算三门课程的平均成绩
格式一为前测试与while…wend相同。格式二为后测试,至少应执行循环体一次。
思考:(1)用do while…loop 改写程序;
(2)两种格式do 循环的区别?
3、带until子句的do循环语句
作用:当条件为真时终止循环
思考: 条件可写成: (1)if (y mod 4=0 and y mod 100<>0) or (y mod 100=0 and y mod 400=0) then l=1 else l=0
人口增长平均1.5%,设现人口12.3 亿,问多少年后人口达到或超过15亿。 p=1.23e+0.9 r=0.015 n=0 do until p>=1.5e+0.9 p=p*(1+r) n=n+1 loop print n;”年”,”人口”;p end
(2)凡是用do until循环可以解决的问题,全部可用do while解决,只需把“<条件>”取成“<反条件>” p=1.23e+0.9 r=0.015 n=0 do while p<1.5e+0.9 p=p*(1+r) n=n+1 loop print n;”年”,”人口”;p end
四、循环的嵌套
一个循环体内包含另一个循环
例打印乘法九九表
Qbasic 程序设计入门
第六章 函数与子程序
“模块化程序设计”中的“模块”是指:完成程序全部或部分任务的独立源程序文件。
程序的每一个模块可以是子程序或函数,它是通过执行一系列语句来完成一个特定的操作过程,常称为“过程”。
“执行一个过程”——调用一个子程序或函数;
一、自定义函数
QBASIC函数:
①标准函数
②自定义函数
③外部函数
1、单行自定义(DEF)函数
语句函数——用一个语句定义一个函数
(1). 一般格式;
DEF fn<名字>(<参数>)=<表达式>
例1. 已知圆的半径r,求圆的面积:S=πr2
例2.DEF fns$=”this is a string”
PRINT fns$
例3. 求以下公式:
(2).说明
- 函数名由两部分组成
fn s
自定义函数标志(fn),用户定义名(一个字母s);
- 参数可有多个,但调用时的参数(实参)与定义时的
参数(形参)要一致。
2、多行自定义(DEF)函数
用多行语句来定义一个函数。
(1)、一般格式
例4、定义函数f(n)=1+2+…+n
(2)、说明
(i)形式参数——定义函数的自变量
实际参数——调用函数时的参数。
(ii)函数先定义后使用,即习惯把DEF语句
放在程序的开头。
二、块内子程序
1、gosub-return 语句
子程序定义:
return
子程序调用:
GOSUB <标号或行号>
例5:求4!+5!+6!
2、on gosub-return 语句
(1).一般格式
子程序定义:
return
子程序调用:
ON <表达式> gosub <子程1>,<子程2>,…,<子程n>
例:“小学生算术练习”——轮流出一个二位数和一个一位数的加法、减法和乘法的题目,共出十题,每题 10分。
a1: print a;”+”;b;”=”;
a3: print a;”*”;b;”=”
(2)、说明:
<表达式>的值不是整数时,按四舍五入处理,值为0或大于n则不起作用,值为负时系统给出错误信息——“不正确的函数调用”。
3、ON KEY(n) GOSUB-RETURN 语句
(1)、调用格式
ON KEY(n) GOSUB <标号>
其中n是数值表达式,代表一个“陷阱键”。n的值与 设定键的对应关系如下:
n值
键名
1~10
功能键F1~F10
11
方向键↑
12
方向键←
13
方向键→
14
方向键↓
例: 求和式:S=12+22+…+n2 n=
(2).说明
三、独立模块的子程序
1、建立子程序
2、子程序的调用
(1).格式
或 <子程序名> <参数表>
例:SUB stars(n)
(2). 说明
如: Call stars(30)
可写成: stars 30
3、参数传递
(1).值传递方式
SUB stars (n)
(2).地址传递方式
例:求4!+5!+6!+7!
子程序:SUB Fact(n,f)
主程序:DECLARE SUB Fact(n,f)
注:地址传递方式是当实际参数为变量时发生,它将可能会改变原变量的值,若实际参数是变量时,又不想用地址传递(即用值传递方式)则可把变量用括号括起来。
例:求两个整数的最大公约数和最小公倍数。(P208) 最小公倍数=(m*n)/最大公约数
求最大公约数子程序:
求最小公倍数子程序:
主程序:
例:验证哥德巴赫猜想:一个不小于6的偶数可以表示为两个素数之和。(P209)
算法: n=10
n1 n2
2(T) 8(F)
3(T) 7(T)
n=16
n1 n2
2(T) 14(F)
3(T) 13(T)
四、模块化的函数
1、建立一个函数
2、函数的调用
与标准函数相同,只是在主程序开头加上 DECLARE FUNCTION <函数名>(<参数表>),无参数函数也要写上两个括号( );
例:求4到7的阶乘之和
注意函数的参数传递
3、STATIC选项(静态)
外部函数中使用的变量,在函数调用结束后将全部被释放,其值不再保留。如要保留函数中的变量,可在建立函数时加写“STATIC”即 FUNTION 函数名(<参数>) STATIC
五、全局变量与局部变量
1、局部变量
每一个模块(子程序、主程序、函数)中的变量都只在本模块中有效,即是它们的作用域只限于模块,这种变量称为局部变量。
2、全局变量
在程序所有模块中都有效的变量,即作用域为整个程序变量称为全局变量。其定义格式为:
COMMON SHARED <变量表>
六、过程的嵌套调用
在一个过程里又调用另一个过程。
七、过程的递归调用
在一个过程里又调用该过程本身;
例如直接调用:
又如交叉调用:
执行的结果造成无终止的自身调用,显然,程序中不应出现这种无终止的调用,而只应是有限次数的、有终止的递归调用。
主程序: DECLARE FUNCTION Age(n)
Qbasic 程序设计入门
第七章 数组
一、概念
例如要求一个班50名学生的平均成绩:
下标变量Si 用数组表示为:S(i)
1、有关说明:
(1).数组与普通变量一样,用来存放数据;
(2).数组中的数据必须是同一类型;
2、数组与循环结合
二、数组的建立和引用
1、数组的建立
(1).DIM <数组名>(下标上界)
或DIM <数组名>(上界1,上界2)
说明:
- 一般情况下,下标值从0开始
如:DIM A(5) 即定义了a(0)、a(1)、…、a(5);
若要修改下标起始值,可用下面语句:
(2)DIM <数组名>(n1 to n2)
下标值的范围:-32768~32767
- 数组名与变量名的定义相同;
- 允许在同一模块中,数组名与变量名同名,它们不代表同一对象;
DIM a(100)
A=3
- DIM语句中的上界可是常数或变量、表达式;
如: DIM a(10)
DIM a(n)
DIM a(n+2)
但变量值一定先赋值
- 定义全局数组
DIM SHARED a(50)
- 用DIM 语句可定义变量类型
DIM <变量> AS <类型>
其中<类型>是:INTEGER(整型)、LONG(长整型)、SINGLE(单精度型)、DOUBLE(双精度型)、STRING(字符串型);
但<变量>不能加类型定义符,如下写法是错误的:
DIM A& AS LONG
在用DIM语句定义了一个变量类型后,该变量名后面加上类型定义符或不加类型定义符都是合法的,且代表同一个对象。例如:
DIM a AS LONG
a=
a&=77777
print a , a&
END
运行结果如下:
77777 77777
但程序中不能再用a作其它类型的变量名。
2、数组的引用
- 引用数组元素(下标变量),即在括弧中指定下标;
- 在程序中,数组与其它变量的使用相同,即可参与运算,可以被赋值;
- 在引用数组时,数组名、类型、维数以及下标的范围,应与定义时一致;
- 同一模块中,数组和变量可同名,但数组与数组不能同名;
下列情况是不允许的:
DIM a(10,10) 或 DIM a(50,50)
DIM a(15) DIM a%(15)
3、静态数组和动态数组
静态数组——建立数组后,其维数和大小不能改变;
动态数组——在程序执行程序设计入门中,可改变大小或者被释放;
QBASIC规定:在DIM 语句中用常数指定下、上界的数组为静态数组,如果用变量(或表达式)指定上下界的数组为动态数组。
(1).重定义语句
REDIM <数组名>(上界)
如:DIM S(20),X(20,30)
……
√REDIM S(50)
×REDIM X(30)
只改变同名数组的大小,但不能改变维数;
(2).释放数组语句
ERASE <数组名>
释放数组所占据的空间;
例1:释放和重定义数组:
说明:
(3).数组上、下界函数
例:
三、数组的应用
1、一维数组
只有一个下标的数组。
(1).数据统计
例: 输入n个学生的成绩,求平均成绩。
例: 输入n个学生的学号和成绩,要求输出平均成绩和高于平均分的学生学号及成绩。
(2)、数据排序
例:从键盘输入10个数。要求按由小到大的顺序将它们打印出来;
- 比较交换法
a1、a2、a3、a4、a5、a6、a7、a8、a9、a10
- 选择法
- 顺序查找法
- 折半查找法(二分查找法);
对按一定规律(由小到大或由大到小)排列好的数据进行检索;假设:num(i)为按从小到大排列的学生学号,nam$(i)为姓名,num为查找对象。
2、二维数组
矩阵的表示:
aij——双下标变量 a(i,j)→二维数组
数组定义:DIM A(m,n)
a(i,j)→b(j,i)
例: 输出魔阵——每行、每列和对角线之和均相等。
四、过程中的数组参数
1、作为下标变量
子程序定义:SUB A(x,y)
……
END SUB
调用:DIM T(10)
……
Call A(t(1),t(2))
2、作为数组:
定义 :
调用 CALL B(p(),g())
将主程序
Qbasic 程序设计入门
第八章 字符串处理
字符串——字符系列
一、字符串常量
1、显式常量
- 用双引号括起来的一串字符(不包括双引号);
- 空格也是一个字符,没有字符的字符串叫空串””;
- 数值常量与字符串常量的分别。
123表示一个数值常量,而”123″表示一个字符串常量
2、符号常量
用一个符号名(字母)代表一个字符串常量;
如:CONST c=”Beijing”
CONST c$=”Beijing”
注意:字串常量与字串变量的区别,字串常量是不能改变的;
CONST c$=”Shanghai”不正确。
二、字符串变量
1、变长字符串变量
长度在0-32767范围;
(1)定义方法
①变量名后加类型说明符“$”;
②用DEFSTR语句;
如;DEFSTR a,b 以a和b开头的变量均为字串;
③用DIM语句;
格式:DIM <变量名> AS STRING
变量名不应包含类型说明符;
(2)说明
①变量名不分大小写;
②变量名应避开关键字;
2、定长字符串变量
格式;DIM <变量名> AS STRING*n;
n为字符串长度;
如:DIM NAM AS STRING*20
DIM A AS STRING*10,B AS STRING *20
在对定长字串变量赋值时,如果实际长度小于定义个数,则字符一律靠左存放,右端补空格;
三、字符串变量的赋值
1、用LET语句
[LET] <变量名>=<字符串>
例 用LET语句给字符串变量赋值。
2、用INPUT语句
输入时字符串用引号或不用引号的区别:
①如果字符串首尾有空格,不用引号时,空格将被舍弃;
②如果输入的字符串有逗号,则一定要有引号。
3、用LINE INPUT 语句
行输入语句:输入一行以回车结束,中间可以是任何字符,不显示”?”号;
例 用LINE INPUT语句给字符串变量赋值。
4、用READ/DATA语句
READ语句中可包含数值变量和字符串变量,而DATA语句中只能相应放置数值常量和字符常量。
例 用READ/DATA语句给字符串变量赋值。
四、字符串的连接
两个字符串的合并,运算符为“+”
例 字符串连接。
五、字符串的比较
1、字符比较规则
用字符的ASCⅡ代码的大小进行比较(见课本附表P353-355),常用的字符顺序如下(由小到大):
空格 ! ” # $ % & ‘ ( ) * + , – . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ 、a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ 中文字。
2、字符串比较的规则
两个字串从左到右逐个字符比较。
“BASIC”=”BASIC 但 ” BASIC”< >”BASIC”
3、字符关系表达式
两字符串的比较结果(真假值);
六种关系运算符:= , <, <> ,> ,<=, >= 。
六、字符串数组
与数值数组的定义相类似。
七、字符串函数
八、字符串处理
Qbasic 程序设计入门
第九章 屏幕控制和作图
一、显示模式
显示模式:信息在屏幕上的显示方式。
1、文本模式
屏幕上显示的最小单位为一个字符,这种模式下的用户不能用线条来绘制各种图形只能用字符组合成粗糙的图案。
在这种模式下屏幕分为25行,每行80个字符。
屏幕左上角为原点坐标,坐标为(1,1)。
2、图形模式
二、屏幕控制语句
2、WIDTH语句(设置输出的行宽)
3、CLS语句
4、CSRLIN和POS函数
5、SCREEN语句
格式:SCREEN [<模式>],[<色彩>]
功能:设置屏幕的显示方式(文本或图形)
其中:“模式”代表显示器的工作方式
“色彩”是一个数值表达式,只有在模式为0、1和2时它才有效。
例:SCREEN 0,0 模式为0,彩色为0
6、COLOR语句
功能:设置屏幕显示的颜色
(1)、设置文本方式的屏幕显示颜色
格式:COLOR <前景色>,<背景色>
(2)、 设置模式1的屏幕显示颜色
格式:COLOR <背景色>,<配色器号>
<配色器号>:0和1号配色器
(3)、设置图形模式12-13的显示颜色
格式:COLOR [<前景色>]
例:显示模式12的16种前景颜色。
例:动态显示文字。
三、作图语句
1、画点
(1)、PSET(x,y)[,<色彩>]
功能:在屏幕上指定的坐标位置画一个点
例:画一点。
例:画一连线。
例:从(1,1)到(199,199)画一斜线。
CLS
SCREEN 1,0
FOR i = 1 TO 199
PSET (i,i),2
功能:作用相同PSET,区别是省略色彩时,用背景色画点,可用它擦去位于(x,y)的点。
(3)、STEP (X,Y)表示相对坐标
格式:LINE (x1,y1)-(x2,y2),<彩色>[,B|BF]
功能:在屏幕上指定的位置画一直线或矩形。
2)、DRAW语句(连续画线语句)
格式:DRAW <字符串>
功能:在屏幕上连续画出各种直线
说明:<字符串>Un 向上移动n个单位
Dn 向下移动n个单位
Ln 向左移动n个单位
Rn 向右移动n个单位
En 向右上方移动n个单位
Fn 向右下方移动n个单位
Gn 向左下方移动n个单位
Hn 向左上方移动n个单位
Cn 选择颜色n
Sn 比例图示
An 把图形旋转一个角度,n的数值为0、1、2、3(0表示不转,1逆时针转90,2为逆时针转180,3为逆时针转270度)
Mx,y 从当前位置开始向(x,y)画线
3、画圆语句
(1)、画圆
(2)、画椭圆
CIRCLE(x,y),半径[,<色彩>],<起始角>,<终止角>
五、图形窗口
1、WINDOW语句
(1)、WINDOW (X1,Y1)-(X2,Y2)
定义一个标准的坐标系,Y轴向上。
(2)、WINDOW SCREEN (X1,Y1)-(X2-Y2)
定义一个标准的坐标系,Y轴向下。
一旦定义了一个新的坐标系(逻辑坐标系),程序中的图形语句都将使用此坐标系的坐标值作图;当WINDOW后无参数时,返回屏幕坐标系统。
2、VIEW语句
格式:VIEW [SCREEN] (X1,Y1)-(X2,Y2),<底色>,<边界色>
Qbasic 程序设计入门
第十章 文件
文件——程序或数据存放在磁盘上的形式,存放在外部介质上的数据的集合;
程序——文件
数据 ——文件
一、文件的概念
1、分类
(1)从文件的内容区分;
- 程序文件——源程序或可执行的目标程序
- 数据文件——输入/输出数据;
(2)从文件的存储形式区分;
- ASCⅡ文件(文本文件)
存储时需转换ASCⅡ——二进制形式;
- 二进制文件
用二进制形式存储
(3)从文件的组织形式区分;
- 顺序文件(不定长)
- 随机文件(定长)
2、文件与记录
一个文件是由若干个记录组成,一个记录包含若干个数据项。
例如一个学生的数据:学号、姓名、年龄、成绩等可看成一组数据组成一个记录;
3、文件名
扩展名:.BAS、.FOR、.PAS、.C
4、文件的读写和文件缓冲区
5、文件指针
每文件都有一个指针,指向当前应读写的位置,从文件中读数据,就是读指针所指向位置处的数据。向文件写数据,是写到指针所指向的位置处。
二、顺序文件
1、概念
顺序存取文件(SEQIEMCE ACCESS FILE)
记录1
……
记录i
……
记录n
2、顺序文件的打开与关闭
使用之前,先“打开”文件,使用后“关闭”它;
(1).OPEN 语句
格式:OPEN <文件名> FOR <读写方式> AS#<文件号>
<读写方式>:
- OUTPUT:写数据,向文件输出;
- INPUT:读数据,从文件读入;
- APPEND:写数据:添加记录;
<文件号>:即文件缓冲区号,每一个文件都要指定一个不同的文件号(1~225);
说明:
- 以OUTPUT方式打开文件,建立新文件,指针指向首记录;将删除已存在的文件。
- 以INPUT方式打开已存在的文件,指针指向首记录;
- 以APPEND方式打开文件,指针指向文件尾;可建立新文件
(2)CLOSE语句
关闭已用的文件
CLOSE [#<文件号1>][,#<文件号2>]……
关闭由文件号指定的文件缓冲区,将内容存盘,如不指定文件号,则关闭所有已打开的文件;
3、输出数据(写文件)
新文件写入记录
(1)PRINT#语句
格式:PRINT #<文件号>,<输出项>
例;PRINT #1,a;b;c
注意:逗号与分号的差别,与PRINT语句类似在对字符串存盘时,注意引入定界符。
例:
(2)、文件最后用“文件结束符”结束CHR$(26)
- WRITE#语句(数据项之间用“,”或“;”均相同)
- PRINT#语句(数据项之间用“;”)
- PRINT#语句(数据项之间用“,”)
4、输入数据(读文件)
从已建立文件中读入数据到计算机中;
例:
终止函数
检查记录指针是否指向文件尾,是则真(-1),否则为假(0)
(2)LINE INPUT#语句
格式:LINE INPUT#<文件号>,<字串变量>
将文件的记录,以字符形式读入;
例:
5、文件的修改
例:
END IF
6、有关函数和语句
- EOF()函数
- INPUT$()函数
从指定的打开文件中读取指定数目的字符;
- LOF()函数
- SEEK()函数
给出指定文件的当前指针
- SEEK语句
格式:SEEK#<文件号>,<字节位置>
三、随机文件(RAMDOM ACCESS FILE)
随机存取文件——所有记录等长,各记录相应的数据项的长度也相同;
按记录号进行存取,记录的顺序不一致,可直接读写任一条记录。
1、随机文件的建立
(1)OPEN <文件名> AS#<文件号> [LEN=<长度>]
存取方式不用指定,自动加上“FOR RANDOM”,表示随机文件;
FIELD <文件名>,<域宽>AS<域名>[,<域宽>AS <或名>]
定义记录的结构
如:FIELD #1, 10 AS A$, 15AS B$, 36AS C$
MKI$(<整型表达式>) 2字节
MKS$(<单精度表达式>) 4字节
MKD$(<双精度表达式>) 8字节
LSET <域变量>=<字符串>(左对齐)
例:
2、随机文件的读入
GET #<文件号> [,<记录号>]
(4)、将内码字符串还原为数值型数据;
(5)、关闭文件
CLOSE
例:
GET #1,i%
3、随机文件的修改
随机文件的优点:可直接读写任何一个记录,且既能读又能写。
例:
GET #1,r
3、记录型变量
1001
Shirt
67
120
1002
Skirt
87
108
1003
Coat
231.5
67
(1)、定义记录类型
格式:TYPE <记录类型名>
END TYPE
(2)、定义记录变量
格式: DIM <记录变量名> AS <记录类型名>
例如: DIM a AS goods
(3)、记录变量中的域表示法
格式: <记录变量名>.<域名>
例如: a.num 表示a变量中的num域。
4、用于记录变量的读写语句
例:用记录变量的方法读入一个随机文件内容。
例:用记录变量的方法修改一个随机文件内容。
四、文件与目录处理
例:FILES “*.BAS” —显示当前目录下,扩展名为BAS的所有文件;
其它:
对于SimQB的使用请查看《SimQBa简介及安装教程》。
非常高兴您愿意学习QBASIC,Chaobs的这个SimQB希望能给您的学习带来帮助,相信各位热爱编程的小朋友能够学有所成,努力提高。
如果遇到任何问题,或有任何建议与意见,请Email:
另外,QB语言的学习,请见另一份文档《QBASIC程序设计入门》。
Chaobs简介:
姓名:Chaobs (意思是Character out of bits)
生于1998年。
QQ:578836573
致力于程序设计、算法与编译研究。语言Pascal/Delphi,C/C++,Python,Ada,Fortran,QBAISC/VB,HTML,8086汇编,shell,bat。亦研究OpenGL,JAVA,DirectX,OnpeCV。平台:Linux,Vim。业余提供Scientific and Numeric。Code,Machine,Life。无处不Chao,无处不Geek。
Chaobs
3/30/2014
转载于:https://www.cnblogs.com/Chaobs/p/3838448.html
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/139324.html