2024年3月6日发(作者:扬新之)
1 什么是Qt Framework?如何下载和安装Qt库及其开发工具?
QT Framework是cpp的标准库一个总的更换。
从Qt的官方网站/downloads-cn下载Qt SDK 中包括最新完整的Qt
4.6.3 库,Qt Creator 2.0 以及Qt Designer 等开发工具。
下载后双击 进行安装,安装过程中可以自定义安装路径,但路径中不能有中文字符!建议直接使用默认的安装路径即可。安装老外的软件,一个基本原则就是,不要使用路径中含有‘A’-‘Z’, ‘a’-‘z’, ‘0’-‘9’, '.', '-', '_' 以外字符的路径名称,这样可以避免很多莫名其妙不可理喻的问题;安装完成后,会在桌面上创建Qt Creator到快捷方式,双击该快捷方式就可以进入到Qt到可视化开发环境下。 通常在Qt Creator IDE中,不需要进行额外的配置即可正常编写、编译、调试、运行程序,但需要注意:如果系统里安装了VC 等开发工具,这些工具可能会在系统的环境变量中添加
Include 和 Libs 等变量以方便在命令行下用nmake之类的工具编译、生成程序,但这些设置与 Qt Creator IDE 是有冲突的。如果不需要进行命令行的操作,可以将Include和Libs 删除,这样 Qt Creator IDE 环境下编译 Qt 程序的时候就会使用刚刚安装的Qt SDK 中的头文件和库。
2 什么是QtCreator?它有什么作用?生成含有主界面简单工程的主要方法有哪些?
1) Qt Creator是跨平台的Qt IDE,Qt Creator是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,它的界面简洁大方、操作便捷顺畅,支持的系统包括Linux(32 位及 64 位)、Mac OS X 以及 Windows。
2) Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务.Qt Creator 包括项目生成向导、高级的 C++ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、图形化的 GDB 调试前端,集成 qmake 构建工具等。
3) 生成含有主界面简单工程的主要方法有哪些
A. 使用VB直接设计自己所需的主界面,进而生成简单的工程;
B. 使用Qt Creator生成含有主界面简单工程;
3 请用graphics库初始化绘图环境并绘制 ★ ☆ 形图案。
答案见附件
4 请简单介绍6-10个QtCreator中的快捷键及其作用。
1) F1使用方法:选中某一类或函数,按下F1,出现帮助文档
2) F2使用方法:选中某一类或函数,按下F2,迅速定位到该类或函数声明的地方或被调用的地方
3) F3作用:查找下一个你选的内容
4) F4使用方法:在*.cpp和*.h之间切换
5) F5的作用:调试
6) F9的作用:切换断点
7) Ctrl+鼠标滚轮的使用方法:按住Ctrl,使鼠标滚轮旋转,可调整字体的大小
8) Ctrl+F使用方法:(作用:查找当前文档)选中你想选的内容之后,按下Ctrl+F,会列出所有和你选的内容一样的语句
9) Ctrl+1,2,3,4,5,6使用介绍:在Welcome,Edit,Debug,Projects,Help,Output几种模式之间切换
10) Shift + F3作用:查找上一个你选的内容
11) Ctrl + Shift + F作用:弹出查找对话框
12) Ctrl + M的作用:书签之间切换
13) Shift+F5的作用:停止调试
14) F10的作用:单步跳过
15) F11的作用:单步进入
16) Shift + F11的作用:单步跳出
17) Ctrl + Shift + F5的作用:重启调试
18) Alt + 0的作用:隐藏或显示边栏
19) Alt + 1的作用:切换至生成窗口
20) Alt + 2的作用:切换至搜索结果窗口
21) Alt + 3的作用:切换至应用输出窗口
22) Alt + 4的作用:切换至编译输出窗口
5 单击主窗口菜单,弹出自定义窗口界面。请简介QtCreator中的做法。
6 请为QtCreator中的主界面添加动作响应、添加新的信号和槽。
7 请以查询Qt库中某个类为例,介绍Qt Assistant的用法。
库
QtCore
QtGui
QtNetwork
QtOpenGL
QtSql
QtSvg
QtXml
Qt3Support
QAxContainer
QAxServer
QtAssistant
QtDesigner
QtUiTools
QtTest
描述
核心非GUI功能
核心GUI功能
网络模块
OpenGL模块
SQL模块
SVG透视图类
XML模块
支持Qt3的类
ActiveQt客户端的扩充
ActiveQt服务器段的扩充
Qt助手的语言类
Qt设计器的扩展类
生成动态GUI类
单元测试工具类
8 请以自己的主界面为例,介绍Qt Linguist在自己应用程序国际化过程中的应用。
QT国际化步骤:
1) 编写源代码
2) 在pro中添加TRANSLATIONS+*.ts,有多少中语言就添加多少个ts文件。
3) 运行lupdate *.pro 生成ts文件。lupdate会根据源代码中的内容提取出待翻译的字段,然后生成ts文件,ts文件是xml格式的。
4) 用qt linguist打开ts文件,并翻译相应字段。
5) 运行lrelease *.pro生成qm文件。lrelease会根据ts文件生成二进制的qm翻译文件。
6) 使用QTranslator 加载qm文件。
7) 为QApplication安装translator。
9 Qt开发工具uic、rcc、moc和qmake有何作用?
(1)uic 的全称是User Interface Compiler for the Qt GUI toolkit,顾名思义,它就是.ui 文件编译器,也是Qt 提供的工具之一。它的主要功用可以用一句话来概括,就是读取由Qt
Designer 制作的用户界面文件(即.ui 文件),并生成相对应的C++头文件。该头文件的形式
是Ui_YourFormName.h。
(2)rcc是Qt自带的一个工具。这是Qt的一个资源编译器,其编译对象是qrc文件,而生成rcc二进制资源文件。
(3)moc是QT的预编译器,用来处理代码中的slot,signal,emit,Q_OBJECT等。moc文件是对应的处理代码,也就是Q_OBJECT宏的实现部分,与其文件在同一目录下。
(4)qmake是一个协助简化跨平台进行专案开发的构建过程的工具程式,Qt附带的工具之一 。qmake能够自动生成Makefile、Microsoft Visual Studio 专案文件 和 xcode 专案文件。不管源代码是否是用Qt写的,都能使用qmake,因此qmake能用于很多软件的构建过程。
10 试用QDesigner设计一个记事本程序的主界面和计算器的主界面。
11 C语言#include
1) #include
"graphics.h"编译器会先在当前目录寻找如果找不到就会调用标准库#include
2) 如果想使用其他的库文件,加入以下内容:QT += network opengl sql qt3support
12 请用graphics库在终端窗口中绘制基本直线、圆弧、椭圆和长方体
//用graphics库在终端窗口中绘制基本直线、圆弧、椭圆和长方体
#include
#include
void main()
{
initgraph(640,480);//初始化图形窗口
circle(60,60,40);//绘制圆!circle(int x,int y,int 半径)
line(20,120,90,150);//绘制直线!line(xmin,ymin,xmax,ymax)
arc(100,250,30,150,60);//绘制圆弧!arc(int x,int y,int 起始角,int 中止角,int 半径);
ellipse(100,320,0,360,60,40);//绘制椭圆!ellipse(x,y,起始角,中止角,横轴,纵轴)
rectangle(20,400,70,440);//绘制长方体!用矩形代替画直线!rectangle(x1,y1,x2,y2)
getch();//按任意键继续
closegraph();//关闭图形界面
}
13 什么是SQLite?如何初始化SQLite?请创建调心滚子轴承及其如下表格:
轴承名称
FAG 21304E·TVPB轴承
SKF 21304CC轴承
SKF 21304 CCK轴承
新型号
21304CC
21304CC
21304CCK
旧型号 内径
53304
53304
53304
20
20
20
外径
52
52
52
52
厚度
15
15
15
15
参考型号
21304E·TVPB
21304CC
21304 CCK
21304 CDK H 304X
NSK 21304 CDK H 304X轴承
21304CCK+H304 253303 17
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
14 什么是数据结构?什么是栈、堆、二叉树?请举例说明。
1) 数据结构是指同一数据元素类中各数据元素之间存在的关系。
2) 栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
3) 堆:n个元素的序列{k1,k2,ki,„,kn}当且仅当满足下关系时,称之为堆。" ki<=k2i,ki<=k2i+1;或ki>=k2i,ki>=k2i+1.(i=1,2,„,[n/2])"。若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,则堆的含义表明,完全二叉树中所有非终端结点的值均不大于(或不小于)其左、右孩子结点的值。
4) 二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left
subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树不是树的特殊情形。在图论中,二叉树是一个连通的无环图,并且每一个顶点的度不大于3。
15 已知公式 B = 4T / (d L h) ,等号后各因子可分别从不同表格中查得,编写程序实现之。
16 实现一元插值函数的程序。
#include
#include
typedef struct data
{
float x;
float y;
}Data;
Data d[20];
float lagrange(float x,int count)
{
float y=0.0;
for(int k=0;k { float p=1.0; for(int j=0;j { if(k==j) continue; p=p*(x-d[j].x)/(d[k].x-d[j].x); } y=y+p*d[k].y; } return y; } void main() { float x,y; int count,choice,i; cout<<"请选择1.线形插值2.抛物插值:"< cin>>choice; if(choice==1) { cout<<"你选择了线形插值:"< for(i=0;i<2;i++) { cout<<"请输入第"< cin>>d[i].x; d[i].y=float(sin(d[i].x)); cout<<"第"< } cout<<"请输入x的值:"; cin>>x; y=lagrange(x,2); cout< } else if(choice==2) { cout<<"你选择了抛物插值:"< while(1) { cout<<"请输入x[i],y[i]的组数,不超过20组:"; cin>>count; if(count<=20) break; } for(int i=0;i { cout<<"请输入第"< cin>>d[i].x; d[i].y=float(sin(d[i].x)); cout<<"第"< } cout<<"请输入x的值:"; cin>>x; y=lagrange(x,count); cout< } else { cout<<"输入有误"< } } 17 什么是最小二乘法多项式拟合?试举例其应用。 1) 对给定数据点{(Xi,Yi)}(i=0,1,„,m),在取定的函数类Φ 中,求p(x)∈Φ,使误差的平方和E^2最小,E^2=∑[p(Xi)-Yi]^2。从几何意义上讲,就是寻求与给定点 {(Xi,Yi)}(i=0,1,„,m)的距离平方和为最小的曲线y=p(x)。函数p(x)称为拟合函数或最小二乘解,求拟合函数p(x)的方法称为曲线拟合的最小二乘法。当拟合曲线的表达式可以用多项式表示时就成为最小二乘法的多项式拟合。 2) 对下面的七个点用二项式拟合! 1 2 3 4 5 6 7 点号 X值 Y值 -3 4 -2 2 -1 3 0 0 1 -1 2 -2 3 -5 #include #include #include #include #define N 7//N个节点 #define M 2//M次拟合 #define K 2*M void zhuyuan (int k,int n,float a[M+1][M+2]) { int t,i,j; float x,y; x=fabs(a[k][k]);t=k; for(i=k+1;i<=n;i++) if(fabs(a[i][k])>x) { x=fabs(a[i][k]);t=i; } for(j=k;j<=n+1;j++) { y=a[k][j];a[k][j]=a[t][j];a[t][j]=y; } } void xiaoyuan(int n,float a[M+1][M+2]) { int k,i,j; for(i=0;i { zhuyuan(i,n,a); for(j=i+1;j<=n;j++) for(k=i+1;k<=n+1;k++) a[j][k]=a[j][k]-a[j][i]*a[i][k]/a[i][i]; } } void huidai(int n,float a[M+1][M+2],float x[M+1]) { int i,j; x[n]=a[n][n+1]/a[n][n]; for(i=n-1;i>=0;i--) { x[i]=a[i][n+1]; for(j=i+1;j<=n;j++) x[i]=x[i]-a[i][j]*x[j]; x[i]=x[i]/a[i][i]; } } main() { float x_y[N][2],A[N][K+1],B[N][M+1],AA[K+1],BB[M+1],a[M+1][M+2],m[M+1]; int i,j,n; printf("请输入%d个已知点:n",N); for(i=0;i { printf("(x%d y%d):",i,i); scanf("%f %f",&x_y[i][0],&x_y[i][1]); } for(i=0;i { A[i][0]=1; for(j=1;j<=K;j++) A[i][j]=A[i][j-1]*x_y[i][0]; for(j=0;j<=M;j++) B[i][j]=A[i][j]*x_y[i][1]; } for(j=0;j<=K;j++) for(AA[j]=0,i=0;i AA[j]+=A[i][j]; for(j=0;j<=M;j++) for(BB[j]=0,i=0;i BB[j]+=B[i][j]; for(i=0;i { a[i][M+1]=BB[i]; for(j=0;j<=M;j++) a[i][j]=AA[i+j];} n=M; printf("正规系数矩阵为:n"); for(i=0;i<=n;i++) { for(j=0;j<=n+1;j++) printf("%5.2f ",a[i][j]); printf("n"); } xiaoyuan(n,a); huidai(n,a,m); printf("拟合曲线方程为:ny(x)=%g",m[0]); for(i=1;i<=n;i++) { printf(" + %g",m[i]); for(j=0;j { printf("*X"); } } return 0; } 18 简述列主元高斯消去法求解线性联立方程的程序实现过程。 过程: 1) 找主元素; 2) 主元素换到对角线的位置; 3) 消元过程; 4) 回代过程; 举例应用: #include #include using namespace std; int main() { int n,i,j,k; double a[100][100],b[100],m; cout<<"输入未知数个数:"< cin>>n; cout<<"输入"< for(i=1;i<=n;i++) for(j=1;j<=n+1;j++) cin>>a[i][j]; } for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) if(fabs(a[j][i])>1e-7) { m=a[i][i]/a[j][i]; for(k=i;k<=n+1;k++) { a[j][k]=a[j][k]*m-a[i][k]; } } for(i=n;i>0;i--) { b[i]=a[i][n+1]/a[i][i]; for(j=i-1;j>0;j--) { a[j][n+1]=a[j][n+1]-b[i]*a[j][i]; } } cout<<"利用该程序求解得:"< for(i=1;i<=n;i++) { cout< } system("pause"); return 0; 19线性表的存储方式有哪些?试简述其优、缺点。 顺序存储方式: 优点:可以随机访问数据元素; 缺点:大小固定,不利于增删结点; 链式存储方式: 优点:采用指针方式增减结点,非常方便只需要改变指针指向,不移动结点; 缺点:不能进行随机访问,每个结点上增加指针域,造成额外存储空间增大; 20 二维图形的变换矩阵统一表述是什么?简述其各变量所代表的含义。 abp T=cdqlms其中 abcd可以实现图形的比例、对称、错切、旋转等基本变换; lm可以实现图形的平移变换; pqT可以实现图形的透视变化; s可以实现图形的全比例变换。 21 三维图形的变换矩阵统一表述是什么?简述其各变量所代表的含义。 adT=hl其中 bcpefq ijrmnsabcdef产生比例、对称、错切、旋转等基本变化; hij33lpmn13产生平移变换; qr31产生透视变换; Ts产生全比例变换。 2024年3月6日发(作者:扬新之) 1 什么是Qt Framework?如何下载和安装Qt库及其开发工具? QT Framework是cpp的标准库一个总的更换。 从Qt的官方网站/downloads-cn下载Qt SDK 中包括最新完整的Qt 4.6.3 库,Qt Creator 2.0 以及Qt Designer 等开发工具。 下载后双击 进行安装,安装过程中可以自定义安装路径,但路径中不能有中文字符!建议直接使用默认的安装路径即可。安装老外的软件,一个基本原则就是,不要使用路径中含有‘A’-‘Z’, ‘a’-‘z’, ‘0’-‘9’, '.', '-', '_' 以外字符的路径名称,这样可以避免很多莫名其妙不可理喻的问题;安装完成后,会在桌面上创建Qt Creator到快捷方式,双击该快捷方式就可以进入到Qt到可视化开发环境下。 通常在Qt Creator IDE中,不需要进行额外的配置即可正常编写、编译、调试、运行程序,但需要注意:如果系统里安装了VC 等开发工具,这些工具可能会在系统的环境变量中添加 Include 和 Libs 等变量以方便在命令行下用nmake之类的工具编译、生成程序,但这些设置与 Qt Creator IDE 是有冲突的。如果不需要进行命令行的操作,可以将Include和Libs 删除,这样 Qt Creator IDE 环境下编译 Qt 程序的时候就会使用刚刚安装的Qt SDK 中的头文件和库。 2 什么是QtCreator?它有什么作用?生成含有主界面简单工程的主要方法有哪些? 1) Qt Creator是跨平台的Qt IDE,Qt Creator是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,它的界面简洁大方、操作便捷顺畅,支持的系统包括Linux(32 位及 64 位)、Mac OS X 以及 Windows。 2) Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务.Qt Creator 包括项目生成向导、高级的 C++ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、图形化的 GDB 调试前端,集成 qmake 构建工具等。 3) 生成含有主界面简单工程的主要方法有哪些 A. 使用VB直接设计自己所需的主界面,进而生成简单的工程; B. 使用Qt Creator生成含有主界面简单工程; 3 请用graphics库初始化绘图环境并绘制 ★ ☆ 形图案。 答案见附件 4 请简单介绍6-10个QtCreator中的快捷键及其作用。 1) F1使用方法:选中某一类或函数,按下F1,出现帮助文档 2) F2使用方法:选中某一类或函数,按下F2,迅速定位到该类或函数声明的地方或被调用的地方 3) F3作用:查找下一个你选的内容 4) F4使用方法:在*.cpp和*.h之间切换 5) F5的作用:调试 6) F9的作用:切换断点 7) Ctrl+鼠标滚轮的使用方法:按住Ctrl,使鼠标滚轮旋转,可调整字体的大小 8) Ctrl+F使用方法:(作用:查找当前文档)选中你想选的内容之后,按下Ctrl+F,会列出所有和你选的内容一样的语句 9) Ctrl+1,2,3,4,5,6使用介绍:在Welcome,Edit,Debug,Projects,Help,Output几种模式之间切换 10) Shift + F3作用:查找上一个你选的内容 11) Ctrl + Shift + F作用:弹出查找对话框 12) Ctrl + M的作用:书签之间切换 13) Shift+F5的作用:停止调试 14) F10的作用:单步跳过 15) F11的作用:单步进入 16) Shift + F11的作用:单步跳出 17) Ctrl + Shift + F5的作用:重启调试 18) Alt + 0的作用:隐藏或显示边栏 19) Alt + 1的作用:切换至生成窗口 20) Alt + 2的作用:切换至搜索结果窗口 21) Alt + 3的作用:切换至应用输出窗口 22) Alt + 4的作用:切换至编译输出窗口 5 单击主窗口菜单,弹出自定义窗口界面。请简介QtCreator中的做法。 6 请为QtCreator中的主界面添加动作响应、添加新的信号和槽。 7 请以查询Qt库中某个类为例,介绍Qt Assistant的用法。 库 QtCore QtGui QtNetwork QtOpenGL QtSql QtSvg QtXml Qt3Support QAxContainer QAxServer QtAssistant QtDesigner QtUiTools QtTest 描述 核心非GUI功能 核心GUI功能 网络模块 OpenGL模块 SQL模块 SVG透视图类 XML模块 支持Qt3的类 ActiveQt客户端的扩充 ActiveQt服务器段的扩充 Qt助手的语言类 Qt设计器的扩展类 生成动态GUI类 单元测试工具类 8 请以自己的主界面为例,介绍Qt Linguist在自己应用程序国际化过程中的应用。 QT国际化步骤: 1) 编写源代码 2) 在pro中添加TRANSLATIONS+*.ts,有多少中语言就添加多少个ts文件。 3) 运行lupdate *.pro 生成ts文件。lupdate会根据源代码中的内容提取出待翻译的字段,然后生成ts文件,ts文件是xml格式的。 4) 用qt linguist打开ts文件,并翻译相应字段。 5) 运行lrelease *.pro生成qm文件。lrelease会根据ts文件生成二进制的qm翻译文件。 6) 使用QTranslator 加载qm文件。 7) 为QApplication安装translator。 9 Qt开发工具uic、rcc、moc和qmake有何作用? (1)uic 的全称是User Interface Compiler for the Qt GUI toolkit,顾名思义,它就是.ui 文件编译器,也是Qt 提供的工具之一。它的主要功用可以用一句话来概括,就是读取由Qt Designer 制作的用户界面文件(即.ui 文件),并生成相对应的C++头文件。该头文件的形式 是Ui_YourFormName.h。 (2)rcc是Qt自带的一个工具。这是Qt的一个资源编译器,其编译对象是qrc文件,而生成rcc二进制资源文件。 (3)moc是QT的预编译器,用来处理代码中的slot,signal,emit,Q_OBJECT等。moc文件是对应的处理代码,也就是Q_OBJECT宏的实现部分,与其文件在同一目录下。 (4)qmake是一个协助简化跨平台进行专案开发的构建过程的工具程式,Qt附带的工具之一 。qmake能够自动生成Makefile、Microsoft Visual Studio 专案文件 和 xcode 专案文件。不管源代码是否是用Qt写的,都能使用qmake,因此qmake能用于很多软件的构建过程。 10 试用QDesigner设计一个记事本程序的主界面和计算器的主界面。 11 C语言#include 1) #include "graphics.h"编译器会先在当前目录寻找如果找不到就会调用标准库#include 2) 如果想使用其他的库文件,加入以下内容:QT += network opengl sql qt3support 12 请用graphics库在终端窗口中绘制基本直线、圆弧、椭圆和长方体 //用graphics库在终端窗口中绘制基本直线、圆弧、椭圆和长方体 #include #include void main() { initgraph(640,480);//初始化图形窗口 circle(60,60,40);//绘制圆!circle(int x,int y,int 半径) line(20,120,90,150);//绘制直线!line(xmin,ymin,xmax,ymax) arc(100,250,30,150,60);//绘制圆弧!arc(int x,int y,int 起始角,int 中止角,int 半径); ellipse(100,320,0,360,60,40);//绘制椭圆!ellipse(x,y,起始角,中止角,横轴,纵轴) rectangle(20,400,70,440);//绘制长方体!用矩形代替画直线!rectangle(x1,y1,x2,y2) getch();//按任意键继续 closegraph();//关闭图形界面 } 13 什么是SQLite?如何初始化SQLite?请创建调心滚子轴承及其如下表格: 轴承名称 FAG 21304E·TVPB轴承 SKF 21304CC轴承 SKF 21304 CCK轴承 新型号 21304CC 21304CC 21304CCK 旧型号 内径 53304 53304 53304 20 20 20 外径 52 52 52 52 厚度 15 15 15 15 参考型号 21304E·TVPB 21304CC 21304 CCK 21304 CDK H 304X NSK 21304 CDK H 304X轴承 21304CCK+H304 253303 17 SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。 14 什么是数据结构?什么是栈、堆、二叉树?请举例说明。 1) 数据结构是指同一数据元素类中各数据元素之间存在的关系。 2) 栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。 3) 堆:n个元素的序列{k1,k2,ki,„,kn}当且仅当满足下关系时,称之为堆。" ki<=k2i,ki<=k2i+1;或ki>=k2i,ki>=k2i+1.(i=1,2,„,[n/2])"。若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,则堆的含义表明,完全二叉树中所有非终端结点的值均不大于(或不小于)其左、右孩子结点的值。 4) 二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树不是树的特殊情形。在图论中,二叉树是一个连通的无环图,并且每一个顶点的度不大于3。 15 已知公式 B = 4T / (d L h) ,等号后各因子可分别从不同表格中查得,编写程序实现之。 16 实现一元插值函数的程序。 #include #include typedef struct data { float x; float y; }Data; Data d[20]; float lagrange(float x,int count) { float y=0.0; for(int k=0;k { float p=1.0; for(int j=0;j { if(k==j) continue; p=p*(x-d[j].x)/(d[k].x-d[j].x); } y=y+p*d[k].y; } return y; } void main() { float x,y; int count,choice,i; cout<<"请选择1.线形插值2.抛物插值:"< cin>>choice; if(choice==1) { cout<<"你选择了线形插值:"< for(i=0;i<2;i++) { cout<<"请输入第"< cin>>d[i].x; d[i].y=float(sin(d[i].x)); cout<<"第"< } cout<<"请输入x的值:"; cin>>x; y=lagrange(x,2); cout< } else if(choice==2) { cout<<"你选择了抛物插值:"< while(1) { cout<<"请输入x[i],y[i]的组数,不超过20组:"; cin>>count; if(count<=20) break; } for(int i=0;i { cout<<"请输入第"< cin>>d[i].x; d[i].y=float(sin(d[i].x)); cout<<"第"< } cout<<"请输入x的值:"; cin>>x; y=lagrange(x,count); cout< } else { cout<<"输入有误"< } } 17 什么是最小二乘法多项式拟合?试举例其应用。 1) 对给定数据点{(Xi,Yi)}(i=0,1,„,m),在取定的函数类Φ 中,求p(x)∈Φ,使误差的平方和E^2最小,E^2=∑[p(Xi)-Yi]^2。从几何意义上讲,就是寻求与给定点 {(Xi,Yi)}(i=0,1,„,m)的距离平方和为最小的曲线y=p(x)。函数p(x)称为拟合函数或最小二乘解,求拟合函数p(x)的方法称为曲线拟合的最小二乘法。当拟合曲线的表达式可以用多项式表示时就成为最小二乘法的多项式拟合。 2) 对下面的七个点用二项式拟合! 1 2 3 4 5 6 7 点号 X值 Y值 -3 4 -2 2 -1 3 0 0 1 -1 2 -2 3 -5 #include #include #include #include #define N 7//N个节点 #define M 2//M次拟合 #define K 2*M void zhuyuan (int k,int n,float a[M+1][M+2]) { int t,i,j; float x,y; x=fabs(a[k][k]);t=k; for(i=k+1;i<=n;i++) if(fabs(a[i][k])>x) { x=fabs(a[i][k]);t=i; } for(j=k;j<=n+1;j++) { y=a[k][j];a[k][j]=a[t][j];a[t][j]=y; } } void xiaoyuan(int n,float a[M+1][M+2]) { int k,i,j; for(i=0;i { zhuyuan(i,n,a); for(j=i+1;j<=n;j++) for(k=i+1;k<=n+1;k++) a[j][k]=a[j][k]-a[j][i]*a[i][k]/a[i][i]; } } void huidai(int n,float a[M+1][M+2],float x[M+1]) { int i,j; x[n]=a[n][n+1]/a[n][n]; for(i=n-1;i>=0;i--) { x[i]=a[i][n+1]; for(j=i+1;j<=n;j++) x[i]=x[i]-a[i][j]*x[j]; x[i]=x[i]/a[i][i]; } } main() { float x_y[N][2],A[N][K+1],B[N][M+1],AA[K+1],BB[M+1],a[M+1][M+2],m[M+1]; int i,j,n; printf("请输入%d个已知点:n",N); for(i=0;i { printf("(x%d y%d):",i,i); scanf("%f %f",&x_y[i][0],&x_y[i][1]); } for(i=0;i { A[i][0]=1; for(j=1;j<=K;j++) A[i][j]=A[i][j-1]*x_y[i][0]; for(j=0;j<=M;j++) B[i][j]=A[i][j]*x_y[i][1]; } for(j=0;j<=K;j++) for(AA[j]=0,i=0;i AA[j]+=A[i][j]; for(j=0;j<=M;j++) for(BB[j]=0,i=0;i BB[j]+=B[i][j]; for(i=0;i { a[i][M+1]=BB[i]; for(j=0;j<=M;j++) a[i][j]=AA[i+j];} n=M; printf("正规系数矩阵为:n"); for(i=0;i<=n;i++) { for(j=0;j<=n+1;j++) printf("%5.2f ",a[i][j]); printf("n"); } xiaoyuan(n,a); huidai(n,a,m); printf("拟合曲线方程为:ny(x)=%g",m[0]); for(i=1;i<=n;i++) { printf(" + %g",m[i]); for(j=0;j { printf("*X"); } } return 0; } 18 简述列主元高斯消去法求解线性联立方程的程序实现过程。 过程: 1) 找主元素; 2) 主元素换到对角线的位置; 3) 消元过程; 4) 回代过程; 举例应用: #include #include using namespace std; int main() { int n,i,j,k; double a[100][100],b[100],m; cout<<"输入未知数个数:"< cin>>n; cout<<"输入"< for(i=1;i<=n;i++) for(j=1;j<=n+1;j++) cin>>a[i][j]; } for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) if(fabs(a[j][i])>1e-7) { m=a[i][i]/a[j][i]; for(k=i;k<=n+1;k++) { a[j][k]=a[j][k]*m-a[i][k]; } } for(i=n;i>0;i--) { b[i]=a[i][n+1]/a[i][i]; for(j=i-1;j>0;j--) { a[j][n+1]=a[j][n+1]-b[i]*a[j][i]; } } cout<<"利用该程序求解得:"< for(i=1;i<=n;i++) { cout< } system("pause"); return 0; 19线性表的存储方式有哪些?试简述其优、缺点。 顺序存储方式: 优点:可以随机访问数据元素; 缺点:大小固定,不利于增删结点; 链式存储方式: 优点:采用指针方式增减结点,非常方便只需要改变指针指向,不移动结点; 缺点:不能进行随机访问,每个结点上增加指针域,造成额外存储空间增大; 20 二维图形的变换矩阵统一表述是什么?简述其各变量所代表的含义。 abp T=cdqlms其中 abcd可以实现图形的比例、对称、错切、旋转等基本变换; lm可以实现图形的平移变换; pqT可以实现图形的透视变化; s可以实现图形的全比例变换。 21 三维图形的变换矩阵统一表述是什么?简述其各变量所代表的含义。 adT=hl其中 bcpefq ijrmnsabcdef产生比例、对称、错切、旋转等基本变化; hij33lpmn13产生平移变换; qr31产生透视变换; Ts产生全比例变换。