C++程序设计专业考试.题库资料大全.doc

上传人:一*** 文档编号:808775 上传时间:2019-07-16 格式:DOC 页数:171 大小:362KB
返回 下载 相关 举报
C++程序设计专业考试.题库资料大全.doc_第1页
第1页 / 共171页
C++程序设计专业考试.题库资料大全.doc_第2页
第2页 / 共171页
点击查看更多>>
资源描述

《C++程序设计专业考试.题库资料大全.doc》由会员分享,可在线阅读,更多相关《C++程序设计专业考试.题库资料大全.doc(171页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、【课程信息】 课程名称:C+程序设计 课程编码:L131001 前导课程:计算机导论、计算机基础 课程说明:C+程序设计是为本科生开设的一门专业基础课程。通过本课程的学习, 使学生能够掌握 C+程序设计的基本原理、有关算法的模型和程序的设计方法。通过对较 复杂的程序范例的剖析,使学生掌握结构化程序设计方法与面向对象的程序设计方法,并 学会运用 C +进行程序设计与开发的技巧。提高利用计算机语言分析问题和解决问题的能 力,为学生应用开发和后续课的学习打下扎实的基础。 任课教师:120123 - 黄超【录入】黄超 【章节】第 1 章 C+基础知识 【知识点】 1、 C+程序的构成与书写形式; 2、

2、 基本数据类型,常量、变量和表达式 3、 C+的标准输入输出【单选题】1、在 C+中,源程序变为可执行程序的正确顺序应该是( ) 。A. 编辑、链接、编译、执行 B. 编辑、编译、链接、执行C. 编译、编辑、链接、执行D. 编译、链接、编辑、执行 答案:B 分值:2 难度:1 知识点:1 评析: 2、 要把高级语言编写的源程序转换为目标程序,需要使用( ) 。A. 编辑程序B. 驱动程序C. 调试程序D. 编译程序 答案:D 分值:2 难度:1 知识点: 评析:3、下列关于 C+与 C 语言的关系描述中,错误的是( ) 。A. C 语言是 C+语言的一个子集B. C+与 C 语言是兼容的C.

3、C+对 C 语言进行了一些改进D. C+和 C 语言都是面向对象的 答案:D 4、下面为使用面向对象语言的正确理由是( ) 。A.面向对象程序由三种基本结构组成,分别是顺序结构、选择结构和循环结构B. 程序语句比面向过程语言简单C. 面向对象程序设计可以设计为自行修改错误D. 面向对象程序很容易概念化 答案:D 分值:2 难度:1 知识点: 评析: 5、以下选项中,合法的用户标识符是( ) 。A. longB. _2TestC. 3DmaxD. A.dat 答案:B 分值:2 难度:1 知识点: 评析: 6、下列描述中正确的是( ) 。A. 不是每个 C+程序都必须包含预处理命令#includ

4、eB. C+程序必须有 return 语句C. C+程序中的变量必须定义在主程序内部D. C+程序中所使用的符号常量可以不进行定义 答案:A 分值:2 难度:1 知识点: 评析: 7、C+源程序文件的扩展名为( ) 。A. .CPPB. .CC. .DLLD. .EXE 答案:A 分值:2 难度:1 知识点: 评析: 8、cout 是 I0 流库预定义的( ) 。A. 类B. 对象C. 包含文件D. 常量 答案:B 分值:2 难度:1 知识点: 评析: 9、 C+对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是( ) 。A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺

5、省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念 答案:D 分值:2 难度:1 知识点: 评析: 10、下列选项中,( ) 是不合法的标识符.A. ProgramB. Obj23C. doubleD. B_C_D 答案:C 分值:2 难度:1 知识点: 评析: 11、下列标识符中,不合法的用户标识符为( ) 。A. a!B. _intC. a_10D. PAd 答案:A 分值:2 难度:1 知识点: 评析: 12、只能向终端输出一个字符的函数是( ) 。A. pringf 函数B. putchar 函数C. getchar 函数D. scanf 函数答案:B 分值:2 难度:1

6、知识点: 评析: 13、如果有整型量 int x = 5,执行情况 x += 1.9 后 x 的值为( ) 。A. 6B. 7C. 结果不确定D. 表达式非法 答案:A 分值:2 难度:1 知识点: 评析: 14、已知 a=5,b=3,表达式 a+=a*=+b*3 的值为( ) 。A. 40B. 80C. 100D. 120 答案:D 分值:2 难度:1 知识点: 评析: 15、下列语句彼此等价的是( ) 。A. !(a 0)和!(a 0)B. !(a = b)和(a b) int main() int a = 7, b = 4, c = 6, d; cout b ? (a c? a : c)

7、:(b); 答案:7 分值:4 难度:1 知识点: 评析: 【程序改错题】选做【编程题】 选做【章节】 第 2 章 基本控制结构程序设计 【知识点】 1、算法的相关概念 2、C+语句及应用 3、C+程序的阅读与设计、调试 【单选题】 1、结构化程序设计所规定的三种基本控制结构是( ) 。A. 顺序结构、选择结构、循环结构B. 输入、输出、处理C. for、while、switchD. 主程序、子程序、函数 答案:A 分值:2 难度:1 知识点: 评析: 2、当执行以下程序段时,循环体将执行( ). int main( ) int y = 1; do y-; while (-y); A. 一次B

8、. 两次C. 无限次D. 系统将提示有语法错误 答案:C 分值:2 难度:1 知识点: 评析: 3. while(!x)中的(!x)与下面( ) 条件等价.A. x=1B. x!=1C. x!=0D. x=0 答案:D 4、下面程序的输出结果是( ) 。 #include using namespace std; int main() int x = 4;do cout using namespace std; void main( ) int x = 1, a = 0, b = 0; switch(x) case 0 : b+; case 1 : a+; case 2 : a+; b+; c

9、out using namespace std; int main() int a = 7, b = 4, c = 6, d; cout b ? (a c? a : c):(b); 答案:7 分值:4 难度:1 知识点: 评析:2、写出以下程序的输出结果 #include using namespace std; int main() int a = 0,i; for(i = 1; i using namespace std; void main( )int n,a,b,c;for(n=100;n using namespace std; void main() int m; for(m=10

10、0;m using namespace std; int main() int i,j; for (i=1;i int f(int b,int n) int i,r=1; for(i=0;i void fun(int num)cout using namespace std; int fun(int n) static int m=2; m=m+n; return m; int main( ) int a=3,b=4; int x; x=fun(a); x=fun(b); cout using namespace std; void fun() static int a=0; a+=2; co

11、ut using namespace std; long fib(int n) if (n2) return (fib(n-1)+fib(n-2); else return 2; int main() cout using namespace std;int i=1;int main(void) int a=3; int b=-10; static int c=0; void other(void); cout using namespace std;int fun(int x) if(x using namespace std;int max1(int x, int y, int z) re

12、turn (yz?y:z); double max1(double x, double y) return (xy?x:y); double max1(double x, double y, double z) double temp1=max1(x,y); return (yz?y:z); int main() int x2;double d1, d2; x2 = max1(2,3,4); d1 = max1(2.1, 5.6); d2 = max1(12.3, 3.4, 7.8);cout using namespace std;int fun(int x) if(x using name

13、space std;int fun(int a = 10, int b = 100) return a + b; int main() int x = 100; cout using namespace std; void fun(int a, int n, int for(int i = 0; i using namespace std; int max(int x, int y) return x y ? x : y; int max(int x, int y, int z) int t; t = max(x, y); return t z ? t : z; int main() int

14、x = 5, y = 8, z = 3; cout using namespace std; maxCommonDevisor(int n,int m) int i; for( i=n;i=1;i-) if(n%i=0 return i; minCommonMultiple(int n,int m) int i; for(i=n;iij; cout #include using namespace std; mod(int n,int m) return n%m; round(double x)/ 四舍五入函数 if(x=0) return int(x+0.5); else return in

15、t(x-0.5); mod(double x,double y) return round(x)%round(y); int main() cout using namespace std; int main( ) int I; int a33=1,2,3,4,5,6,7,8,9; for(I=0;I void mian () char ch7=“12ab56”; int I,s=0; for(I=0;chI=0 aj=t; j-; 则该程序段的功能是( ) 。A. 对数组 a 进行插入排序(升序)B. 对数组 a 进行插入排序(降序)C. 对数组 a 进行选择排序(升序)D. 对数组 a 进

16、行选择排序(降序) 答案:B 分值:2 难度:1 知识点: 评析: 4、 若有说明“int a34=0;” ,则下面正确的是( ) 。A. 只有元素 a00可得到初值 0B. 此说明语句不正确C. 数组 a 各元素都可得到初值,但其值不一定是 0D. 数组 a 中每个元素均可得到初值 0 答案:D 分值:2 难度:1 知识点: 评析: 5、 以下程序的输出结果是( ) 。 #include int main () char b=”Hello ,you”; b5=0; cout #include int main( ) char ss10=”1,2,3,4,5”; cin ss; strcat(

17、ss,”6789”); cout int main () int b33=0,1,2,0,1,2,0,1,2,I,j,t=1; for(I=0;I=A cout #include using namespace std; int main( ) char s = “n123“; cout using namespace std; int main( ) char b=”Hello,you”; b5=0; cout #include int main ( ) char st20=”hello0t”; cout #include using namespace std; int main() ch

18、ar s = “n123“; cout using namespace std; int main( ) char b=”Hello,you”; b5=0; cout void main () int I,x33=1,2,3,4,5,6,7,8,9; for(I=0;I int main( ) int a33=1,2,3,4,5,6,I,j,s=0;for(I=1;I using namespace std; int main() char b=”Hello,you”; b5=0; cout void main () int I,x33=1,2,3,4,5,6,7,8,9; for(I=0;I

19、 int main() int a33=1,2,3,4,5,6,I,j,s=0; for(I=1;I using namespace std; int main() char w10=“ABCD“,“EFGH“,“IFKL“,“MBOP“,k; for(k=1;k #include using namespace std; int main() char arr24; strcpy(arr0,”you”); strcpy(arr1,”me”); arr03 = cout using namespace std; int main() int I; int a33=1,2,3,4,5,6,7,8

20、,9; for(I=0;I void mian () char ch7=“12ab56”; int I,s=0; for(I=0;chI=0 int I=0; cin s; while(sI!=0) if(sI=c-) aI=sI-32; else if(sI=c-32) sI=sI+32; I+; cout int main( ) char a=”morning”,t; int I,j=0; for(I=1;I void mian( )char a=”abcdabcabfgacd”; int i1=0,i2=0, I=0 while(aI) if(aI=a) i1+; if(aI=b) i2

21、+; I+ cout using namespace std; int b=2; int func(int *a) b+=*a; return(b); int main( ) int a=2,res=2; res+=func( cout using namespace std;int main( ) int a33,*p,i; p= for(i=0;i using namespace std; int main( ) char ch25=“6934“,“8254“,*p2; int i,j,s=0; for(i=0;i using namespace std;int main( ) char

22、*p1, *p2 ,str50=“xyz“; p1=“abcd“; strcpy(str+2,p1+2); cout using namespace std; void fun(int x,int y,int *cp,int *dp) *cp=x+y;*dp=x-y; int main( ) int a,b,c,d; a=30;b=50; fun(a,b, cout using namespace std; int main( ) char a=“programming“, b=“language“; char *p1,*p2; int i;p1=a; p2=b; for(i=0;i usin

23、g namespace std; int main( ) char *s = “12“; int k = 0, a = 0, b = 0; do k+; if(k%2=0) a=a+sk-0; continue; b=b+sk-0; a=a+sk-0; while(sk+1); cout using namespace std; int main( ) int x = 10, *p; float y = 2.4; x = y+; p = *p += x+y+; cout using namespace std; int main( ) int *p1, *p2, x = 10; int y =

24、 11; p1 = p2 = cout using namespace std; int main( ) static char st=“program“; char *pointer; pointer=st; for(pointer=st;pointer using namespace std; int main( ) char *p=“BOOK“,“OPK“,“H“,“SP“; int i; for(i=3;i=0;i-,i-) cout using namespace std; int a=2,4,6,8; int main( ) int i; int *p=a; for(i=0;i u

25、sing namespace std; int main( ) int a5=2,4,6,8,10, *p, *k; p=a; k= cout using namespace std;int main( ) char *str=“one“,“two“,“three“,“four“; char *ptr=str; int i; for(i=0;i using namespace std; void fun(char *w, int m) char s, *p1, *p2; p1 = w; p2 = w+m-1; while(p1using namespace std; int main( ) i

26、nt a=5,8,7,6,2,7,3; int y, *p= y = (*-p)+; cout using namespace std; int main( ) int a=1,2,3,4,5,6, *p; p = a; *(p+3)+=2; cout using namespace std; main() int arr=30,25,20,15,10,5,*p=arr; p+; cout using namespace std; swap(int *pt1,int *pt2) int i; i=*pt1; *pt1=*pt2; *pt2=i; exchange(int *q1,int *q2

27、,int *q3) if(*q1 using namespace std; void ast(int x,int y,int *cp,int *dp) *cp=x+y; *dp=x-y; int main() int a,b,c,d; a=4;b=3; ast(a,b, cout using namespace std; int x=10; count1(char *s) char *p=s; int x; while(*p) p+; x=p-s; cout using namespace std;main() char *alpha6=“ABCD“,“IJKL“,“MNOP“,“QRST“,

28、“UVWX“; char *p;int i; p=alpha; for(i=0;i using namespace std;fun(int *s,int n1,int n2) int i, j, t; i=n1;j=n2; while(i using namespace std;int main() int a3=1,2,3,4,5,0,(*pa)3,i; pa=a; for(i=0;i using namespace std; int main( ) static char st=“program“; char *pointer; pointer=st; for(pointer=st;poi

29、nter using namespace std; int main( ) char *p=“BOOK“,“OPK“,“H“,“SP“; int i; for(i=3;i=0;i-,i-) cout using namespace std; int a=2,4,6,8; int main( ) int i; int *p=a; for(i=0;ii0=0x39; s-i1=0x38; coutc0 ; A39 B9 C38 D8 答案:B 分值:2 难度:1 知识点: 评析: 9、设有一结构体类型变量定义如下: struct date int year; int month;int day;

30、struct worklist char name20; char sex;struct date birthday; person; 若对结构体变量 person 的出生年份进行赋值时,下面正确的赋值语句是( )。Ayear=1976 Bbirthday.year=1976 Cperson.birthday.year=1976 Dperson.year=1976 答案:C 分值:2 难度:1 知识点: 评析: 10、共用体类型在任何给定时刻( )。A所有成员一直驻留在结构中。 B只能有一个成员驻留在结构中。 C部分成员驻留在结构中。 D没有成员驻留在结构中。 答案:B 分值:2 难度:1 知

31、识点: 评析: 11、以下对枚举类型名的定义中正确的是( )。Aenum a=one,two,three; Benum a one=9,two=-1,three; Cenum a=“one“,“two“,“three“; Denum a “one“,“two“,“three“; 答案:B 分值:2 难度:1 知识点: 评析: 12、设有如下枚举类型定义: enum language Basic=3,Assembly,Ada=100,COBOL,Fortran; 枚举量 Fortran 的值为( ) 。A4 B7 C102 D103 答案:C 分值:2 难度:1 知识点: 评析: 13、已知下列

32、共用体定义: union u_type int i; char ch ; temp ; 则执行语句:temp . i=266;后 , temp . ch 的值为 ( ) 。 A266 B256 C10 D1 答案:C 分值:2 难度:1 知识点: 评析: 14、有以下结构体说明和变量定义,如图所示:p q r 指针 p、q、r 分别指向此链表中的三个连续结点。 struct node int data; struct node *next;*p,*q,*r; 现要将 q 所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句 是 ( ) 。 Ap-next=q-next; Bp

33、-next=p-next-next; Cp-next=r; Dp=q-next; 答案:D 分值:2 难度:1 知识点: 评析: 15、以下各选项企图说明一种新的类型名,其中正确的是( ) 。 Atypedef v1 int; Btypedef v2=int; Ctypedef int v3; Dtypedef v4: int; 答案:C 分值:2 难度:1 知识点: 评析: 16、typedef int INTEGER;的作用是( ) 。 A建立了一种新的数据类型。 B定义了一个新的数据类型标识符。 C定义了一个整型变量。 D以上说法都不对。 答案:B 分值:2 难度:1 知识点: 评析:

34、【程序改错题】选做 1、 题干 程序中错误行上有表示。如全国计算机等级考试 2 级 C 语言。 答案:多个答案分行 分值:默认 1 分 可选项 难度:默认 2,范围分为 1-5,可选项 知识点:可选项 空同上一题 评析:【编程题】 选做【章节】第 7 章 类与对象 【知识点】 1、面向对象程序设计的基本概念 2、类定义、属性与行为、访问权限控制,对象的定义、使用3、构造函数与析构函数 4、函数重载技术与运算符重载技术 5、友元 【单选题】 1、对于下面定义的类 MyClass, 在函数 f( )中将对象成员 n 的值修改为 50 的语句(划线处) 应该是( ) 。 class MyClass

35、public: MyClass(int x) n=x; void SetValue(int n1) n=n1; private: int n; ; int f( ) MyClass *ptr=new MyClass(45); _; A. MyClass(50)B. SetValue(50)C. ptr - SetValue(50)D. ptr - n=50 答案:C 分值:2 难度:1 知识点: 评析: 2、类 MyClass 的定义如下: class MyClass public: MyClass() value=0; setVariable(int i) value=i; private:

36、 int value; ; 则以下各项对如下语句序列的描述中,正确的是( ) 。 MyClass *p , my; p = A. 语句”p = ”是把对象 my 赋值给指针变量 pB. 语句”MyClass *p , my;”会调用两次类 MyClass 的构造函数C. 对语句”*p.SetVariable(5)”的调用是正确的D. 语句”p - SetVariable(5)”与语句”my.SetVariable(5)”等价 答案:D 分值:2 难度:1 知识点: 评析: 3、 下面类的定义,有( )错误 。 class MyClass int i=0; public: void MyClas

37、s(); MyClass(int Value);A. 1B. 2C. 3D. 4 答案:C 分值:2 难度:1 知识点: 评析: 4、 定义析构函数时,应该注意( )。A. 其名与类名完全相同B. 返回类型是 void 类型C. 无形参,也不可重载D. 函数体中必须有 delete 语句。 答案:C 分值:2 难度:1 知识点: 评析: 5、 构造函数不具备的特征的是( )。A. 构造函数的函数名与类名相同B. 构造函数可以重载C. 构造函数可以设置默认参数D. 构造函数必须指定返回类型答案:D 分值:2 难度:1 知识点: 评析: 6、 类的析构函数是在( )被自动调用的。A. 类创建时B.

38、 创建对象时C. 删除对象时D. 不自动调用 答案:C 分值:2 难度:1 知识点: 评析: 7、 对于任何一个类,析构函数最多有( ) 个。A. 0B. 1C. 2D. 4 答案:B 分值:2 难度:2 知识点: 评析: 8、通常,拷贝构造函数的参数是( )。A. 某个对象名B. 某个对象的引用名C. 某个对象的成员名D. 某个对象的指针名 答案:B 分值:2 难度:1 知识点: 评析: 9、 面向对象程序设计中的数据隐藏指的是( )。A. 输入数据必须输入保密口令B. 数据经过加密处理C. 对象内部数据结构上建有防火墙D. 对象内部数据结构的不可访问性 答案:D 分值:2 难度:1 知识点

39、:评析: 10、下列关于类的访问权限的描述中,错误的是( ).。A. 说明为公有的成员可以被程序中的任何代码访问B. 说明为私有的成员只能被类的成员和说明为友元类的成员函数访问C. 说明为保护的成员,除了能被本身的成员函数和说明为友元类的成员函数访问外,该 类的派生类的成员也可以访问D. 类的所有成员都可以被程序中的任何代码访问 答案:D 分值:2 难度:1 知识点: 评析: 11、一个类的友元函数或友元类可以访问该类的( )。A. 私有成员B. 保护成员C. 公有成员D. 所有成员 答案:D 分值:2 难度:1 知识点: 评析: 12、下列关于成员函数特征的描述中,错误的是( )。A. 成员

40、函数一定是内联函数B. 成员函数可以重载C. 成员函数可以设置参数的默认值D. 成员函数可以是静态的 答案:A 分值:2 难度:1 知识点: 评析: 13、下面对类中静态数据成员的描述中,正确的是( )。A. 静态数据成员是类的所有对象共享的数据B. 类的每个对象都有自己的静态数据成员C. 类的不同对象有不同的静态数据成员D. 静态数据成员不能通过类的对象调用 答案:A 分值:2 难度:1 知识点: 评析: 14、C 中对于类中定义的成员,其默认的访问权限为( )。A. publicB. protectedC. privateD. static 答案:C 分值:2 难度:1 知识点: 评析:

41、15、类的析构函数的作用是( )。A. 作为类的一般成员函数B. 类的初始化C. 对象的初始化D. 对象扫尾处理 答案:D 分值:2 难度:1 知识点: 评析: 16、若有一个 MyClass 类,则执行语句”MyClass,a,b(2),*p;”后,自动调用该类的构造函数( )次。A. 2B. 3C. 4D. 5 答案:A 分值:2 难度:1 知识点: 评析: 17、C+ 对 C 语言作了很多改进,即从面向过程变成为面向对象的主要改进是( )A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念 答案:D 分值:2 难度:1

42、知识点: 评析: 18、类 MyClass 的定义如下: class MyClass public: Myclass() MyClass(int i) value=new int (i); int* value; ; 若要对 value 赋值,则下面语句正确的是( ) 。A. MyClass my; my.value=10;B. MyClass my; *my.value=10;C. MyClass my; my.*value=10;D. MyClass my(10); 答案:D 分值:2 难度:1 知识点: 评析: 19、下面是对类 MyClass 的定义,对定义中语句描述正确的是( ) 。

43、 class MyClass public:void MyClass(int a) X=a; / int f(int a,int b) / X=a; Y=b; int f(int a,int b,int c=0) / X=a; Y=b; Z=c; static void g() X=10; / private: int X,Y,Z; ;A. 语句是类 MyClass 的构造函数定义B. 语句是类和语句实现类成员函数的重载C. 语句实现对类成员变量 X 的更新操作D. 语句、和都不正确 答案:D 分值:2 难度:1 知识点: 评析: 20、类 aClass 的定义如下:class aClassp

44、ublic:aClass()aClass(int i)value=new int(i);int *value;若要对类中的 value 赋值,则下面的语句中,正确的是 ( )。A. aClass my;my.value = 10;B. aClass my;*my.value = 10;C. aClass my;my.*value = 10;D. aClass my(10); 答案:D 分值:2 难度:1 知识点: 评析: 21、对于下面定义的类 MyClass,在函数 f()中将对象成员 n 的值修改为 50 的语句(划线处)应 该是 ( )。 class MyClass public: My

45、Class(int x) n=x; void SetValue(int n1) n=n1; private: int n; ; int f() MyClass *ptr=new MyClass(45); _; A. MyClass(50)B. SetValue(50)C. ptr - SetValue(50)D. ptr - n=50 答案:C 分值:2 难度:1 知识点: 评析: 22、类 MyClass 的定义如下: class MyClass public: MyClass() value=0; setVariable(int i) value=i; private: int value; ; 则以下各项对如下语句序列的描述中,正确的是( ).。 MyClass *p , my; p = A. 语句”p = ”是把对象 my 赋值给指针变量 pB. 语句”MyClass *p , my;”会调用两次类 MyClass 的构造函数C. 对语句”*p.SetVariable(5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com