C语言鼠标操作方法及源码

C语言鼠标操作方法及源码
C语言鼠标操作方法及源码

C语言鼠标操作方法及源码(转载)

鼠标的操作是使用dos中断功能,中断号:33h

下面给几个操作鼠标的示例,后面有更详细的中断功能说明及代码。

显示鼠标:

union REGS regs;

regs.x.ax=1;

int86(0x33,®s,®s);

检查是否被按下:

union REGS regs;

regs.x.ax=6;

int86(0x33,®s,®s);

返回值在bx寄存器中;

在实际编程中一般要使用循环不断的检验是否被按下!

检验鼠标位置:union REGS regs;

regs.x.ax=3;

int86(0x33,®s,®s);

返回值:x坐标在regs.h.cx

y坐标在regs.h.dx

/*下面是各值对鼠标的设置功能*/

(1)、功能00H

功能描述:初始化鼠标,该操作只需要执行一次

入口参数:AX=00H

出口参数:AX=0000H——不支持鼠标功能,FFFFH——支持鼠标功能

BX=鼠标按钮个数(在支持鼠标功能时)

在支持鼠标功能的情况下,鼠标还被设置如下参数:

1 、鼠标指针放在屏幕中央

2 、如果当前鼠标指针是显示的,则操作后,鼠标指针被隐藏

3 、鼠标指针的显示页为0

4 ——、根据屏幕的显示模式显示鼠标指针:文本反向显示矩形块,图形尖头形状

5 、水平象素比=8:8,垂直象素比=16:8

6 、设置水平和垂直的显示边界为当前显示模式的最大边界

7 、允许光笔仿真

8 、双速门槛值=64

(2)、功能01H

功能描述:显示鼠标指针,通常在鼠标初始化后,用此功能显示其指针入口参数:AX =01H

出口参数:无

(3)、功能02H

功能描述:隐藏鼠标指针,一般在程序结束时,调用此功能

入口参数:AX=02H

出口参数:无

(4)、功能03H

功能描述:读取鼠标位置及其按钮状态

入口参数:AX=03H

出口参数:BX =按键状态:位0=1——按下左键

位1=1——按下右键

位2=1——按下中键

——其它位保留,内部使用

CX =水平位置

DX =垂直位置

(5)、功能04H

功能描述:设置鼠标指针位置

入口参数:AX=04H,CX=水平位置,DX =垂直位置

出口参数:无

(6)、功能05H

功能描述:读取鼠标按键信息

入口参数:AX=05H,BX=指定的按键:0—左键,1—右键,2—中键

出口参数:AX=按键状态,参见功能3H中BX的说明

BX=按键次数

CX=水平位置(最后按键时)

DX=垂直位置(最后按键时)

(7)、功能06H

功能描述:读取鼠标按钮释放信息

入口参数:AX=06H,BX=指定的按键:0—左键,1—右键,2—中键

出口参数:AX=按键状态,参见功能3H中BX的说明

BX=释放的次数

CX=水平位置(最后释放时)

DX=垂直位置(最后释放时) (8)、功能07H

功能描述:设置鼠标水平边界

入口参数:AX=07H

CX=最小水平位置

DX =最大水平位置

出口参数:无,鼠标有可能因新区域变小而自动移进新区域内

(9)、功能08H

功能描述:设置鼠标垂直边界

入口参数:AX=08H

CX=最小垂直位置

DX =最大垂直位置

出口参数:无,鼠标有可能因新区域变小而自动移进新区域内

(10)、功能09H

功能描述:设置图形鼠标形状

入口参数:AX=09H

BX=指针的水平位置

CX=指针的垂直位置

ES:DX=16×16 位光标的映象地址参数说明:(BX,CX)是鼠标的指针在16×16点阵中

的位置,(0,0)是左上角;

ES:DX指向的存储单元内存放16×16点阵的位映象隐码,紧跟其后的是16×16点阵的光标掩码。

“”鼠标指针的显示方法:位映象隐码逻辑与上屏幕显示区的内容,然后再用光标掩码内

“”容异或前面运算的结果。

出口参数:无

(11)、功能0AH

功能描述:设置本文鼠标形状

入口参数:AX=0AH

BX =光标类型:0 —CX和DX 的各位含义如下:位7~0 鼠标指针符号

位10~8 字符前景色

位11 亮度

位14~12 字符背景色

位15 闪烁

1 —CX =光标的起始扫描线

DX =光标的结束扫描线

出口参数:无(12)、功能0BH

功能描述:读取鼠标移动计数

入口参数:AX=0BH

出口参数:CX ————=水平移动距离:正数向右移,负数向左移

DX ————=垂直移动距离:正数向下移,负数向上移

(13)、功能0CH

功能描述:为鼠标事件设置处理程序

入口参数:AX=0CH

CX =中断掩码位0=1 ——鼠标指针位置发送变化

位1=1 ——按下左按钮

位2=1 ——释放左按钮

位3=1 ——按下右按钮

位4=1 ——释放右按钮

位5=1 ——按下中间按钮

位6=1 ——释放中间按钮

位7~15=0 ——保留

ES:DX =中断处理程序的地址

在进入中断处理程序时,有关寄存器的值含义:

AX =中断掩码

BX =按键状态

CX =鼠标指针的水平位置

DX =鼠标指针的垂直位置

SI =水平位置的变化量

DI =垂直位置的变化量

出口参数:无

(14)、功能0DH

功能描述:允许光笔仿真

入口参数:AX=0DH

出口参数:无

(15)、功能0EH

功能描述:关闭光笔仿真

入口参数:AX=0EH

出口参数:无

(16)、功能0FH 功能描述:设置鼠标计数与象素比

入口参数:AX=0FH

CX =水平比例

DX =垂直比例

出口参数:无

(17)、功能10H

功能描述:设置鼠标指针隐藏区域

入口参数:AX=10H

CX=左上角X 坐标

DX=左上角Y 坐标

SI=右下角X 坐标

DI=右下角Y 坐标

出口参数:无

(18)、功能13H

功能描述:设置倍速的阈值,其缺省值为64

入口参数:AX=13H

DX =阀值

出口参数:无

(19)、功能14H

功能描述:替换鼠标事件中断

入口参数:AX=14H

CX =中断掩码

ES:DX =中断处理程序的地址

出口参数:CX =旧的中断掩码

ES:DX =旧的中断处理程序地址

(20)、功能15H

功能描述:读取鼠标驱动器状态的缓冲区大小

入口参数:AX=15H

出口参数:BX =存放鼠标驱动器状态所需缓冲区的大小(21)、功能16H

功能描述:存储鼠标驱动器状态

入口参数:AX=16H

ES:DX =存储鼠标驱动器状态的地址

出口参数:无(22)、功能17H

功能描述:重装鼠标驱动器状态

入口参数:AX=17H

ES:DX =鼠标驱动器状态的地址

出口参数:无

(23)、功能18H

功能描述:为鼠标事件设置可选的处理程序

入口参数:AX=18H

CX =替换中断掩码

ES:DX =替换中断处理程序的地址

CF=0

出口参数:无

(24)、功能19H

功能描述:读取替换处理程序的地址

入口参数:AX=19H

CX =替换中断掩码

出口参数:若AX=-1——不成功,否则,ES:DX =中断处理程序的地址(25)、功能1AH

功能描述:设置鼠标的灵敏度,其取值1~100

入口参数:AX=1AH

BX=水平灵敏度(每8个象素鼠标需要移动的数量,一般为8)

CX=垂直灵敏度(每8个象素鼠标需要移动的数量,一般为16)

DX =倍速阀值

出口参数:无

(26)、功能1BH

功能描述:读取鼠标的灵敏度

入口参数:AX=1BH

出口参数:BX=水平灵敏度

CX=垂直灵敏度

DX =倍速阀值

(27)、功能1CH

功能描述:设置鼠标中断速率入口参数:AX=1CH

BX=每秒钟中断的次数:0—关中断,1—30/S,2—50/S,3—100/S,4—200/S 出口参数:无

(28)、功能1DH

功能描述:为鼠标指针选择显示页

入口参数:AX=1DH

BX =显示页

出口参数:无

(29)、功能1EH

功能描述:读取鼠标指针的显示页

入口参数:AX=1EH

出口参数:BX =显示页

(30)、功能1FH

功能描述:禁止鼠标驱动程序

入口参数:AX=1FH

出口参数:若AX=-1——不成功,否则,ES:BX =鼠标驱动程序的地址(31)、功能20H

功能描述:启动鼠标驱动程序

入口参数:AX=20H

出口参数:无

(32)、功能21H

功能描述:鼠标驱动程序复位

入口参数:AX=21H

出口参数:若AX=-1——不成功,否则,BX=2

(33)、功能22H

功能描述:设置鼠标驱动程序信息语言

入口参数:AX=22H

BX=语言代码:0—英语,1—法语,2—荷兰语,3—德语,4—瑞典语,5—芬兰语,6—西班

牙语,7—葡萄牙语,8—意大利语

出口参数:无

(34)、功能23H 功能描述:读取语种

入口参数:AX=23H

出口参数:BX =语言代码

(35)、功能24H

功能描述:读取鼠标信息

入口参数:AX=24H

出口参数:BH=主版本号,BL=辅版本号

CL=中断请求号

CH=鼠标类型:1-Bus Mouse,2-Serial Mouse,3-InPort Mouse,4-PS/2

Mouse,5-HP Mouse

(36)、功能25H

功能描述:读取鼠标驱动程序信息

入口参数:AX=25H

出口参数:AX =鼠标驱动程序信息:位15 ——0 :驱动程序是.SYS 文件,否则,

为.COM 文件

位14——0 :不完全鼠标显示驱动程序,否则,为完全的

位13-12——00 :软件文本光标

01 :硬件文本光标

1X :图形光标

(37)、功能26H

功能描述:读取最大有效坐标

入口参数:AX=26H

出口参数:BX=鼠标驱动程序状态

CX=最大水平坐标

DX=最大垂直坐标

#include

#include

#include

#include

#include

#include

/*鼠标信息宏定义*/

#define WAITING 0xff00

#define LEFTPRESS 0xff01

#define LEFTCLICK 0xff10

#define LEFTDRAG 0xff19#define RIGHTPRESS 0xff02

#define RIGHTCLICK 0xff20

#define RIGHTDRAG 0xff2a

#define MIDDLEPRESS 0xff04

#define MIDDLECLICK 0xff40

#define MIDDLEDRAG 0xff4c

#define MOUSEMOVE 0xff08

int hide[16][16], bury[16][16],mousedraw[16][16],pixelsave[16] [16];/*分别定义隐码、掩码、点值*/

int mousebutton,mouseexist,mouseX,mouseY;

void mousepicture() /*画心形,可设置其它的图形*/

{

int i,j,k;

long hidenum[16]={

0xe3c7,0xc183,0x8001,0x0000,

0x0000,0x0000,0x0000,0x8001,

0x8001,0xc003,0xe007,0xf00f,

0xf81f,0xfc3f,0xfe7f,0xffff,

} ; /*隐码点值,是对点素进行设置*/

long burynum[16]={

0x1c38,0x3e7c,0x7ffe,0xffff,

0xffff,0xffff,0xffff,0x7ffe,

0x3ffe,0x3ffc,0x1ff8,0x0ff0,

0x07e0,0x03c0,0x0180,0x0000,

};/*掩码点值*/

for(i=0;i<16;i++)

{

while(hidenum[i]!=0)

{

for(j=15;j>=0;j--)

{

hide[i][j]=hidenum[i]%2;

hidenum[i]/=2;

} /*把隐码转化为0-1*/

}

while(burynum[i]!=0)

{

for(k=15;k>=0;k--)

{

bury[i][j]=burynum[i]%2;

burynum[i]/=2;

}

} for(k=0;k<16;k++)

{

if(hide[i][k]==0&&bury[i][k]==0)

mousedraw[i][k]=1;

else if(hide[i][k]==0&&bury[i][k]==1)

mousedraw[i][k]=2;

else if(hide[i][k]==1&&bury[i][k]==0)

mousedraw[i][k]=3;

else

mousedraw[i][k]=4; /*期间实行逻辑与和异或*/

}

}

}

void mouseon(int x,int y) /*显示鼠标*/

{

int i,j;

for(i=0;i<16;i++)

{

for(j=0;j<16;j++)

{

pixelsave[i][j]=getpixel(x+j,y+i);/*取得指定像素的颜色*/

if(mousedraw[i][j]==1)

putpixel(x+j,y+i,6);

if(mousedraw[i][j]==2) /*1、2采用点的逻辑运算判断进行着色*/ putpixel(x+j,y+i,6);

}

}

}

void mouseoff() /* 消失鼠标*/

{

int i,j,x,y,color;

x=mouseX;

y=mouseY;

for(i=0;i<16;i++)

{

for(j=0;j<16;j++)

{

if((mousedraw[i][j]==3)||(mousedraw[i][j]==4)) /*3、4采用点的逻辑运算判断可否继续运行*/

continue;

putpixel(x+j,y+i,BLACK); /*使其鼠标移动前的位置变为黑色*/ putpixel(x+j,y+i,pixelsave[i][j]);/*使其恢复指定像素的颜色*/}

}

/*鼠标是否加载

MouseExist:1=加载

0=未加载

MouseButton: 鼠标按键数目*/

void mouseload()

{

_AX=0x00;

geninterrupt(0x33);

mouseexist=_AX;

mousebutton=_BX;

}

/*鼠标状态值初始化*/

void mousereset()

{

_AX=0x00;

geninterrupt(0x33);/*0x33是DOS中断,是在DOS下通过调用中断来对鼠标进行操作.*/

}

/*改变鼠标光标形状

SHAPE sp:为以上定义的形状

void MouseShape(SHAPE sp)

{

_BX=sp.hotx;

_CX=sp.hoty;

_ES=FP_SEG(&sp.shape);

_DX=FP_OFF(&sp.shape);

_AX=0x09;

geninterrupt(0x33);

}*/

/*设置鼠标左右边界

lx:左边界

gx: 右边界*/

void mousesetX(int lx,int rx)

{

_CX=lx;

_DX=rx;

_AX=0x07;geninterrupt(0x33);

}

/*设置鼠标上下边界

uy:上边界

dy: 下边界*/

void mousesetY(int uy,int dy)

_CX=uy;

_DX=dy;

_AX=0x08;

geninterrupt(0x33);

}

/*设置鼠标当前位置

x:横向坐标

y: 纵向坐标*/

void mousesetXY(int x,int y)

{

_CX=x;

_DX=y;

_AX=0x04;

geninterrupt(0x33);

}

/*设置鼠标速度(缺省值:vx=8,vy=1) 值越大速度越慢*/

void mousespeed(int vx,int vy)

{

_CX=vx;

_DX=vy;

_AX=0x0f;

geninterrupt(0x33);

}

/*获取鼠标按下键的信息*/

/*是否按下左键

返回值: 1= 按下0=释放*/

int leftpress()

{

_AX=0x03;

geninterrupt(0x33);

return(_BX&1);

}/*是否按下中键

返回值同上*/

int middlepress()

{

_AX=0x03;

geninterrupt(0x33);

return(_BX&4);

}

/*是否按下右键

返回值同上*/

int rightpress()

_AX=0x03;

geninterrupt(0x33);

return(_BX&2);

}

/*获取鼠标当前位置*/

void mousegetXY()

{

_AX=0x03;

geninterrupt(0x33);

mouseX=_CX;

mouseY=_DX;

}

int mousemove()/*鼠标移动;*/

{

int i,j,x,y,color,move,press=0;

x=mouseX;

y=mouseY;

move=0; /*没移动标志*/

if(mouseX!=x||mouseY!=y)

{

move=1;/*判断是否有移动*/

mouseon(mouseX,mouseY);

}

return 1;

}

void main()

{

int gdrive=DETECT,gmode;initgraph(&gdrive,&gmode,""); mousepicture();

outtextxy(200,150,"Mouse");

mousesetY(0,getmaxy());

mousesetX(0,getmaxx()); /*设置鼠标移动范围*/ mousesetXY(100,100);/*

mouseon(mouseX,mouseY);初始鼠标位置*/

while(!kbhit())

{

if(mousemove())

{

mouseoff();

mousegetXY();

mouseon(mouseX,mouseY);

}

}

closegraph(); }

《C程序设计语言》样卷

韩山师范学院2011年专升本插班生考试样卷 计算机科学与技术专业高级语言程序设计试卷(A卷) 一、填空题(每空1分,共10分) 1.C程序的基本单位是________。 2.C语言源程序文件的后缀是________。 3.C语言中的标识符由________、________和字母组成。 4.设y为float型变量,执行表达式y=6/5之后,y的值是________。 5.在C语言中,要求运算量必须是整型的运算符是___________。 6.如果函数值的类型与返回值的类型不一致时,应该以___________为准。7.已知int a=8,*p=&a;,则*p的值是___________。 8.把一些不同类型的数据作为一个整体来处理时,常用___________。9.若x=2,y=3,则x|y<<2的结果是___________。 二、单项选择题(每小题1.5分,共30分) A.顺序结构、选择结构、循环结构B.递归结构、循环结构、转移结构C.嵌套结构、递归结构、顺序结构D.循环结构、转移结构、顺序结构2.在一个C语言的源程序中,以下叙述正确的是()。

A.必须有除主函数外其他函数B.可以有多个主函数 C.必须有一个主函数D.可以没有主函数 3.以下叙述正确的选项是()。 A.C语言的源程序不必通过编译就可直接执行 B.C语言中的每条语句最终都将被转换成二进制的机器指令 C.C语言程序经编译形成的二进制代码可以直接执行 D.C语言中的函数不可以单独进行编译 4.算法是指为解决某个特定问题而采取的正确且有限的步骤,下面不属于算法的5个特性的是( )。 A.有零个输入或多个输入B.高效性C.有穷性D.确定性5.以下能正确定义且赋初值的语句是( )。 A.int n1=n2=10; B.char c=32; C.float f=f+1.1; D.double x=12.3E2.5 6.有以下程序: main() { char a='a',b; printf("%c",++a); printf("%c\n",b=a++); } 程序运行后的输出结果是( )。 A.bb B.bc C.ab D.ac 7.以下程序段的输出结果是( )。 int a=1234; printf("%2d ",a); A.12 B.34 C.1234 D.提示出错 8.有以下程序:

C语言超市收银管理系统实现详解

超市收银管理程序的设计与实现 1摘要和关键字 1.1摘要 该系统主要用于超市商品管理人员对于商品的信息(包括商品号、商品名、单价)进行输入、删除、修改和查询。除此之外,当销售人员输入商品号及销售数量时,系统应计算应收钱数,并根据实际收银计算找零数量。最后,系统能对销售情况进行查询。Abstract The system is mainly used in the supermarket goods management personnel of the information (including commodity number, name of goods, unit price) input, delete, modify, and query. In addition, when sales staff input article number and sales volume, the system should be calculated according to the actual amount receivable, and cashier calculation change. Finally, the system can inquire the sales situation. 1.2 关键字 登陆系统操作菜单建立信息库查询付款 Keywords Login system Operation menu Set up information database Inquire Pay 2 正文 2.1 引言 随着经济的发展,人们每天接触并且需要处理的信息越来越多,人们就需要寻求一个工具来实现信息的管理和处理。尤其是超市里,需要管理各种商品的数目及销售情况,而超市收银管理程序则是针对这种问题而产生的,系统能够实现对商品信息的录入、修改、查询、删除操作,并且在销售时能计算出应收钱数,并能根据实际收钱而计算找零,最后能对销售情况进行查询。

C语言程序设计(第二版)课后答案 丁亚涛

习题二 一、选择题 二、填空题 1.18 2.int float double 3.10 11 4.8 16 10 5.% 三、阅读题 1. 10,10,9,10 2. j=1, i=2 k=3,i=3 i=3,i=2 k=1,i=1 习题三 一、选择题 二、填空题 1. 从键盘上读入一个字符在屏幕上输出一个字符 #include 2. 按十进制整数形式输出,有符号 按16进制整数形式输出,没有符号 按十进制小数形式输出,输出的数据长度为7位,有2位小数 按字符形式输出一个字符 3. 按十进制整数形式输入数据 按十进制整数形式输入三位数据 跳过3位十进制数据 按字符形式输入一个字符 4. 分程序;; 5. 大写字母L 6. -1 三、阅读题 1. 6 6 6.00 6.00

2. x=127,x= 127,x=177,x=7f y=123.4567,y= 123.46,y=123,45670 3. 2,1 4. 1234 5. 4,3 6. -6,-6 习题四一、选择题 二、填空题 1. 非0 0 、 2. k==0 3. n%7==0&&n%==0 else 三、阅读题 1. a=1,b=0 2. c=1 习题五一、选择题 二、填空题 1. for语句 do-while 语句 while 语句 2. a=14,y=26 3. k=14,n=-1 4. 39 5. s=19 6. 22222 7. 10 8. 7 9. 8 10. 5,5 三、改错题

1. for( i=0;i<5;i++);for控制部分用分号分隔 2. int j=0;while(j<10){j++;i=j} 分号是多余的,否则会造成死循环 3. int s=1,i=1; while(i<5) {s*=i; i++; } 两条语句需要加上花括号 4. while(j<10);(分号不能少) 5. continue改为break 习题六 一、选择题 二、填空题 1. 20 0 19 2. 数组名 3. 越界 4. 6 5. j==k a[j][k]=1; a[j][k]=0; 三、阅读题 1. 6 5 4 3 2 1 2. aaa bbb ccc ddd 3. 2,2,1 习题七 一、选择题 二、填空题 1. 整个函数体内局部 2. 整型 3. k<=b return y;

C程序设计语言 (第二版) 课后答案第一章

Chapter 1 Exercise 1-1 Run the “hello world” program on your system. Experiment with leaving out parts of the program, to see what error message you get. #include int main() { printf("hello, "); printf("world"); printf("\n"); return 0; } Exercise 1-2 Experiment to find out what happens when printf’s argument string contains \c, where c is some character not list above. Exercise 1-3 Modify the temperature conversion program to print a heading above the table. #include int main() { float fahr, celsius; float lower, upper, step; lower = 0; upper = 300; step = 20; fahr = lower; printf("Fahrenheit temperatures and their centigrade or Celsius equivalents\n"); while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32.0); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; } return 0; }

C语言 超市收银系统

/* --------------------------------------- 时间:2015-7-1 16:44:21 吴俊龙 C语言专周设计 超市收银系统 --------------------------------------- */ # include # include #include int menu1(void);//主页面 int menu2(void);//商品管理页面 int menu3(void);//退出页面 int menu4(void);//添加商品信息 int menu5(void);//商品信息浏览 int menu6(void);//商品信息修改 int menu7(void);//商品信息查询 int menu8(void);//商品信息删除 int menu9(void);//结账页面 int sign(void);//欢迎页面 struct ima { int id; //商品编号 char name[20]; //商品的名称 char produce[30]; //商品的产地 int number; //商品的数量 int money; //商品的价格 }; int len = 0; struct ima thing[50]; struct ima * p; int menu1(void)//主页面 { int n; system("cls"); printf("\n\n\n"); printf("\t\t ----------------------------------------- \n"); printf("\t\t| 欢迎使用结账管理系统|\n"); printf("\t\t|-----------------------------------------|\n");

超市管理系统_C语言课程设计

大连科技学院 C语言课程设计题超市商品管理系统 学生姓名专业班级 指导教师职称 所在单位 教学部主任 完成日期 2014年12月13日

课程设计成绩考核表 综合评定: (优、良、中、及格、不及格) 指导教师签字: 2014年12月13 日

课程设计任务书 1.设计(研究)内容和要求 研究内容: 设计并编写一个完善的C语言程序,并要求达到以下几点: (1)系统功能要求:系统功能完善,具有简洁的操作流程。 (2)以软件工程理论为指导,按照进度计划,完成系统需求分析、系统的概要设计与系统的详细设计等。要求能够对系统进行全面测试和调试,及时更正错误,直至系统运行稳定可靠,要求报告中具有系统测试内容。 (3)完成课程设计报告的编辑工作,报告要求在3000字以上,包括综述、系统总体设计、系统实现、运行调试、结论等,参考文献数量至少2篇,论文书写格式按学校规定来写。 (4)工作量要饱满,具备两周课程设计的基本要求,代码行达到300行左右。 原始依据: 对学过的C语言程序设计课程进行巩固和加深印象。了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。通过用C语言完成的题目的编写与设计,以提高用C语言解决实际问题的能力。 2.系统环境 硬件环境:CPU的主频在500MHZ以上,内存在128MB以上 软件环境:编程语言及工具:C语言;操作系统:Windows 操作系统 3.参考文献 [1] 李瑞. 徐克圣. 刘月凡. 戚海英. C程序设计基础[M]. 北京:清华大学出版社. 2009.7 [2] 布鲁志著.吴丹等译.面向对象的软件工程—构建复杂且多变的系统.清华大学出 版社.2002.10 [3] 霍顿(美).杨杰(译). 北京:清华大学出版社. 2008 [4] 薛圆圆.C语言开发手册. 北京:电子工业出版社. 2011.4 [5] 王娣. 安剑. 孙秀梅. 北京:人民邮电出版社.2010

第5章-C语言程序设计(第2版)教材习题答案

【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。2011年10月第二版。ISBN:978-7-302-26972-4。售价:35元。 【答案版本】本习题答案为2012年2月修订版本。 一、选择题 1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。 A. while循环执行10次 B. 循环是无限循环 C. 循环体语句执行一次 D. 循环体语句一次也不执行 2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。 A. 运行程序段后输出1 B. 程序段执行无限次 C. 运行程序段后输出0 D. 程序段中的控制表达式是非法的 3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。 A. int a=1,b=2; while(b--); B. int a=1,b=2; do a++; while(a==b); C. int a=1,b=2; while(a=3); D. int a=1,b=2; do b-- while(b==0); 4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。 do{ printf(“%d\n”,i--); } while(i!=0); A. 0 B. 1 C. 5 D. 无限 5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。 A. 0 B. 5 C. 10 D. 无限 6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。 A. break语句用于循环体内,它将结束该循环 B. break语句用于开关语句,它结束该开关语句 C. break语句用于if语句的内嵌语句内,它结束该if语句 D. break语句在一个循环体内可使用多次 7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。 A. 循环体内可以包含有循环语句 B. 循环体内必须同时出现break语句和continue语句 C. 循环体内可以出现选择语句 D. 循环体可以是空语句 8. 以下不是死循环的是D)for(;(c=getchar()!=’\n’);)printf(“%c”,c);。 A. for(; ; x+=i); B. while(1) { x++; } C. for( i=10; ; i--) sum+=i; D. for( ; (c=getchar() )!=’\n’ ; ) printf( “%c”,c); 9. 执行语句”for(i=0;i++<3;);”后,变量i的值为C) 4。 A.2 B. 3 C. 4 D. 5 10.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C)循环4次。 A. 无限循环 B. 循环次数不定 C. 循环4次 D. 循环3次

(完整版)C程序设计语言复习题(试题及答案版)

一.填空题 26.C#源程序的后缀名为______.cs________。 26.C#中每个int 类型的变量占用____4___个字节的内存。 26.C#的每行语句以________分号_______结尾。 26.布尔型的变量可以赋值为关键字_____true__________或_____false_________。 26.如果int x的初始值为5,则执行表达式x - =3之后,x的值为_____2_________。 26.do...while语句在执行循环体_____之后________测试语句是否满足循环条件。 26.关键字_______class________表示一个类的定义。 26.如果一个类包含一个或多个抽象方法,它是一个_________抽象_____________类。 26.try块运行后,总是会执行_________finally_____________块中的代码。 26.一个数组如果有两个索引值,那么它是__________二维__________数组。 二.单项选择题 1.在对SQL Server 数据库操作时应选用()。 A、SQL Server .NET Framework 数据提供程序; B、OLE DB .NET Framework 数据提供程序; C、ODBC .NET Framework 数据提供程序; D、Oracle .NET Framework数据提供程序; 2.下列选项中,()是引用类型。 A、enum类型 B、struct类型 C、string类型 D、int类型 3.C#的数据类型有() A、值和调用类型; B、值和引用类型; C、引用和关系类型; D、关系和调用类型 4.下列描述错误的是() A、类不可以多重继承而接口可以; B、抽象类自身可以定义成员而接口不可以; C、抽象类和接口都不能被实例化; D、一个类可以有多个基类和多个基接口; 5.下列关于构造函数的描述正确的是() A、构造函数可以声明返回类型。 B、构造函数不可以用private修饰 C、构造函数必须与类名相同 D、构造函数不能带参数 6.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; 那么myArray3[2][2]的值是( )。 A、9 B、2 C、6 D、越界 7.接口是一种引用类型,在接口中可以声明(),但不可以声明公有的域或私有的成员变量。 A、方法、属性、索引器和事件; B、方法、属性信息、属性; C、索引器和字段; D、事件和字段; 8.在https://www.360docs.net/doc/5711777576.html,中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误 的是()。 A、insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行; B、ExecuteNonQuery()方法返回执行Sql语句所影响的行数。 C、Select操作的Sql语句只能由ExecuteReader()方法来执行; D、ExecuteReader()方法返回一个DataReder对象; 9.Winform中,关于ToolBar控件的属性和事件的描述不正确的是( )。 A、Buttons属性表示ToolBar控件的所有工具栏按钮 B、ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度 C、DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭 头键 D、ButtonClick事件在用户单击工具栏任何地方时都会触发

程序设计基础——基于C语言(第2版) 课后习题参考答案汇总

习题1参考答案 1.1解释以下术语 (1)计算机软件:计算机软件是一系列按照特定结构组织的程序、数据(Data)和文档(Document)的集合。 (2)计算机程序:用计算机语言所编写的一系列指令的集合。 (3)数据:数据是程序加工和处理的对象。 (4)算法:算法是一组有穷的规则,它们规定了为解决某一特定问题而采取的一系列运算步骤。 (5)数据结构:数据结构是存在一种或多种特定关系的数据元素的集合,其外在表现为数据的组织形式。 (6)数据类型:数据类型是一个值的集合和定义在这个值集上的操作的总称。 (7)程序设计:程序设计是给出解决特定问题程序的方法和过程,是软件构造活动中的重要组成部分。 1.2 简答题 (1)简述内存的组织结构形式? 计算机系统把内存看作是由若干个连续的存储单元(Storage Location)组成的,每个存储单元的大小为一个字节(Byte)。为了能唯一标志每个存储单元,在计算机系统中给每个存储单元指定一个唯一的编号,该编号被称为存储单元的地址(Address),计算机在读写内存时就是按照存储单元的地址进行的。 (2)为什么计算机系统是一个通用的计算系统? 在计算机硬件相对固定不变的前提下,计算机的通用性主要表现在通过运行不同的程序来完成不同的计算任务。 (3)简述结构化程序设计的基本思想? 在程序设计过程中,如果仅仅使用顺序、选择和循环这三种基本控制结构,并且使每个代码块只有一个入口和一个出口,则这样的程序设计方法被称为结构化程序设计(Structured Programming)。 (4)简述计算机语言的发展史? 程序设计语言经历了从机器语言、汇编语言、高级语言到超高级语言的发展历程。(5)简述利用计算机进行问题求解的过程? 1、理解问题特征 2、设想解决方案 3、优化解决方案 4、描述解决方案 5、执行并分析解决方案 (6)简述各个程序质量要素的含义? 1、正确性(Correctness):正确性是指一个计算机程序的正确程度,即程序在预定的

C语言超市商品管理系统

题目:超市商品管理系统 院系:信息科技学院 专业:计算机科学与技术 姓名: 学号: 指导教师: 日期: 桂林电子科技大学信息科技学院 目录 1 问题定义 (3) 2 系统设计 (3) 2.1 总体设计 (3) 实训报告

2.2 详细设计 (3) 2.2.1 数据结构设计 (3) 2.2.2 主控流程 (3) 2.2.3 信息输入模块 (4) 2.2.4 信息增加模块 (4) 2.2.5 信息修改模块 (4) 2.2.6 信息删除模块 (4) 2.2.7 信息查看模块 (4) 2.2.8 信息统计模块 (4) 函数功能描述 (4) 3 系统实现 (5) 编码 (5) 3.1.1 程序预处理 (5) 3.1.2 主函数main() (5) 3.1.3 主菜单界面 (6) 3.1.4 商品信息建立 (7) 3.1.5 商品信息查看 (9) 3.1.6 商品信息增加 (11) 3.1.7 商品信息删除 (12) 3.1.8 商品信息修改 (14) 3.1.9 商品数目统计 (16) 测试与调试 (22) 3.2.1 概述 (22) 3.2.2 程序测试 (22) 4 系统维护 (25) 5 归纳总结 (25) 开发经验 (25)

实训中遇到的问题及解决方法 (25) 设计中的不足之处 (25) 感想和心得体会 (25) 6 参考资料 (25) 超市商品管理系统 本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C 语言的单链表的各种基本操作。本程序中涉及结构体、单链表、文件保存等方面的知识。通过本程序的训练,使学生能对C语言的链表的操作有一个更深刻的了解,掌握利用单链表存储结构实现对超市信息管理系统的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。 1、问题定义 创建一个超市管理系统。该程序具有保存商品信息、查询商品信息、修改商品信息、删除商品信息、统计商品信息并具有自动判断商品价格、库存等的功能。

《C语言程序设计教程(第二版)》习题答案

2 第1章程序设计基础知识 一、单项选择题(第23页) 1-4.CBBC 5-8.DACA 二、填空题(第24页) 1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分 三、应用题(第24页) 2.源程序: main() {int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */ printf("cock hen chick\n"); for(i=1;i<=20;i++) for(j=1;j<=33;j++) for(k=1;k<=33;k++) if (i+j+k*3==100&&i*5+j*3+k==100) printf(" %d %d %d\n",i,j,k*3);} 执行结果: cock hen chick 4 18 78 8 11 81 12 4 84 3.现计算斐波那契数列的前20项。 递推法源程序: main() {long a,b;int i; a=b=1; for(i=1;i<=10;i++) /*要计算前30项,把10改为15。*/ {printf("%8ld%8ld",a,b); a=a+b;b=b+a;}} 递归法源程序: main() {int i; for(i=0;i<=19;i++) printf("%8d",fib(i));} fib(int i) {return(i<=1?1:fib(i-1)+fib(i-2));} 执行结果: 1 1 2 3 5 8 13 21 3 4 55 89 144 233 377 610 987 1597 2584 4181 6765

超市管理系统C语言

超市管理系统C语言 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

西安邮电大学 高级语言课程设计报告题目:超市管理系统 院系名称:理学院 专业名称:应用物理学 班级: 1301 学生姓名:王松 学号(8位): 07132022 指导教师:王西龙 设计起止时间:2014年06月19日~2014年06月27日1:程序模型 2:原函数概况 1:创建函数 void start(); /*启动界面*/ void input(); /*商品数据信息输入函数*/ void change(); /*商品数据信息修改函数*/ void dele(); /*给定指定商品名称,删除商品信息*/ void output(); /*商品信息输出*/ void search(); /*商品信息查找*/ void mima();/*密码程序*/ void colour();品信息的录入:\n"); printf(" 2.商品信息的修改:\n"); printf(" 3.删除某个商品信息:\n"); printf(" 4.查找商品信息:\n"); printf(" 5.颜色选择:\n"); printf(" 0.退出程序\n"); printf(" ********************************************\n"); printf(" ********************************************\n");

printf(" 输入你的选择: "); scanf("%d",&chi); /*根据你的选择执行相应的函数*/ if(chi==1) input(); else if(chi==2) change(); else if(chi==3) dele(); else if(chi==4) search(); else if(chi==5) colour(); else if(chi==0) { printf("你已经退出超市商品管理系统!谢谢您的使用,再见\n"); exit(0); } else { printf(" You Enter The Choice Is Not valid ! \n"); getch(); system("cls"); start(); } } void huanying() { printf("\t\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\ 3\3\3\3\n"); printf("\t\3 欢迎使用 \3\n"); printf("\t\3 \3\n"); printf("\t\3 \3\n"); printf("\t\3 超市管理系统 \3\n"); printf("\t\3 \3\n"); printf("\t\3 \3\n"); printf("\t\3 \4\4\4\4\4\4 \3\n"); printf("\t\3 \3\n"); printf("\t\3 \5\5\5\5\5\5\5\5\5 \3\n"); printf("\t\3 \3\n");

C语言程序的设计习题参考答案(第二版_杜友福)

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 4. 求1×2×3×…×10的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

《C程序设计语言》模拟试卷二

一、单项选择题 1.以下并非C语言的特点的是____________。 A.C语言简洁紧凑 B.能够编写出功能复杂的程序 C.C语言可以直接对硬件进行操作 D.C语言移植性好 2.在C程序中,main()的位置___ ______。 A.必须作为第一个函数 B.必须作为最后一个函数 C.可以任意 D.必须放在它所调用的函数之后 3.一个C程序是由____ ________。 A.一个主程序和若干个子程序构成 B.一个或多个函数构成 C.若干过程组成 D.若干子程序组成 4.以下字符串为标识符的是___ _________。 A._MY B.2_2222 C.short D.LINE 5 5.下列符号可以作为变量名的是___ ________。 A.+a B.*p C._DAY D.next day 6.设c是字符变量,则以下表达式正确的是___ _______。 A.c=666 B.c='c' C.c="c" D.c="abcd" 7.以下说法正确的是_____ _______。 A.输入项可以为一个实型常量,如scanf("%f", 3.5) B.只有格式控制没有输入项也能进行正确输入,如scanf("%d") C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如 D.当输入数据时,必须指定变量的地址,如scanf("%f", &f) 8.若a, b, c均定义为整型,要给它们输入数据,正确的输入语句是____ ________。 A.read(a, b, c); B.scanf("%d%d%d", a, b, c); C.scanf("%D%D%D", a, b, c); D.scanf(%d%d%d", &a, &b, &c); 9.若a是float变量,b是unsigned型变量,以下输入语句中合法的是____ ___。 A.scanf("%6.2f%d", &a, &b); B.scanf("%f%n", &a, &b); C.scanf("%f%3o", &a, &b); D.scanf("%f%f", &a, &b); 10.if后面的表达式之值__________。 A.只能是0或1 B.只能是正整数或负整数 C.只能是整数或字符型数据 D.可以是任何类型的数据 11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与__ ___组成配对 关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其直接最近的未配对的if D.同一行上的if 12.选择出合法的if语句(设int x, a, b, c;)____ _____。 A.if(a = b0 x++; B.if (a =< b) x++; C.if(a <> b) x++; D.if (a=>b) x++; 13.语句while(!e); 中的条件!e等价于____ _______。 A. e == 0 B.e!=1 C.e!=0 D.~e 14.C语言中while和do-while循环的主要区别是____ _______。 A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格

C语言程序设计超市管理系统

程序设计——超市管理系统 学院: 专业: 班级: 姓名: 学号: 指导老师: 超市管理系统课程设计 1)需求分析: 设计题目:超市管理系统 设计要求:有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统系统功能需求分析:

1.保存及输出:超市中的各种商品信息保存在指定文件中,可以把它们输出显示。2.计算并排序:计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。 3.统计:统计输出库存量低于100的货号及类别。统计输出有两种以上(含两种)商品库存量低于100的商品类别。 2)概要设计: 系统总体设计框架: 系统功能模块图: 3)详细设计:

主要功能模块的算法设计思路:本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块。 1)主模块:通过调用各分模块实现功能; 2)信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息; 3)新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文件中; 4)排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储; 5)计算模块:将所有商品的价格与库存量进行累加求和; 6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7)统计模块1:统计库存量低于100的货名及类别; 8)统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类别 工作流程图: 4)主要源程序代码: #include "" /*输入,输出头文件*/ #include "" /*申请空间头文件*/ #include "" /*对字符串加工头文件*/ #include "" /*清屏头文件*/ FILE *fp;

课后题答案-C语言程序设计(第2版)

《C语言程序设计能力教程(第二版)》课后作业及实训题 参考答案 第1章进入C语言程序世界 二、 1. I love China! printf("we are students.\n") 2. 6 项目实训题参考答案 1.编写一个C程序,输出以下信息: * * * * * * * * * * * * * * * * * * * * I am a student! * * * * * * * * * * * * * * * * * * * * main() { printf("********************\n"); printf(" I am a student!\n "); printf("********************\n"); } 2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。 解: main() { int a,b,c,v; a=10; b=20; c=15; v=a*b*c; printf("v=%d",v); } 本程序运行结果为: v=3000 第2章编制C程序的基础知识 一选择题 C B A B A C C 二操作题

,2,-8,2 3.000000,2.500000,-8.000000 2. ABC DE FGH why is 21+35 equal 52 3. 3 1 4 3 2 3 1 2 4. aa bb cc abc A N 项目实训题 1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。 #define M 5 main() { int n,c; n=2; c=M*n; printf("%d\n",c); } 2.编程求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7; (2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。 (1)main() { int a=7; float x=2.5,y=4.7; printf("%f\n",x+a%3*(int)(x+y)%2/4); } (2)main() { int a=2,b=3; float x=3.5,y=2.5; printf("%f\n",(float)(a+b)/2+(int)x%(int)y); } 第三章顺序结构程序设计 一选择题 A C D C C 二操作题 1. x=3,a=2,b=3 2. z=12.700000

C程序设计语言资料

第3次作业 一、填空题(本大题共20分,共5小题,每小题4分) 1?假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为 2. 类型兼容原则指的是:任何在需要________ 对象的地方,都可以用_______________________________________ 的对象 去替代。 3. 重新抛出异常的表达式为:__________ 4. 以下程序的执行结果是______________________ #i nclude using n amespace std; class Base{ public: Base(){cout<< ” T ;} ~Base(){cout<< ” 2” ;} }; class Derived : public Base{ public: Derived(){cout<< ” 3” ;} ~Derived(){cout<< ” 4” ;} }; void mai n(){ Derived d;

5. 以下程序的执行结果是______________________ #i nclude using n amespace std; class A{ int x; public: A(int x){this->x=x;} A &operator--(){x--;return *this;} A operator— nt){A a(x-=2);retur n a;} void show(){ cout? x;} }; void mai n(){ A a(3),b(3); (a--).show(); (--b).show(); } 二、程序阅读题(本大题共40分,共5小题,每小题8分) 1.写出下面程序运行结果。 #i nclude void rev(i nt a[],i nt n) { int t; for(int i=0,j=n-1;i

C程序设计语言第次

第1次作业 一、单项选择题(本大题共60分,共 20 小题,每小题 3 分) 1. C++程序中,用于实现数据输出的是()。 A. 输出流对象cin和提取运算符>> B. 输出流对象cin和插入运算符<< C. 输出流对象cout和提取运算符>> D. 输出流对象cout和插入运算符<< 2. C++程序中,定义内联函数时需要函数的返回值类型前加上关键字()。 A. outline B. inline C. in D. inport

3. 下面所列选项中,合法的用户标识符是()。 A. if B. switch C. finename D. int 4. C++程序中,定义引用变量时,()。 A. 使用的运算符是* B. 使用的运算符是() C. 使用的运算符是& D. 使用的运算符是[] 5. C++程序中要使用标准输入/输出流对象,必要包含()。 A.

string头文件 B. cmath头文件 C. iostream头文件 D. cctype头文件 6. C++程序中,为了导入标准命名空间,使用的语句是()。 A. inporting namespace std; B. using namespace std; C. using namespace standard; D. inporting namespace standard; 7. 下列关于函数的说法中,不正确的是()。 A. 在不同函数中可以使用相同的名字命名变量 B. 形式参数是局部变量 C. 在函数内部定义变量的作用域在本函数中 D. 在一个函数内的复合语句中定义变量的作用域也是整个函数 8. C++程序的函数调用中,使用数值参数传递时,()。

相关文档
最新文档