2023年计算机等级考试二级C语言经典400道.doc

上传人:知****量 文档编号:58276928 上传时间:2022-11-07 格式:DOC 页数:44 大小:110.54KB
返回 下载 相关 举报
2023年计算机等级考试二级C语言经典400道.doc_第1页
第1页 / 共44页
2023年计算机等级考试二级C语言经典400道.doc_第2页
第2页 / 共44页
点击查看更多>>
资源描述

《2023年计算机等级考试二级C语言经典400道.doc》由会员分享,可在线阅读,更多相关《2023年计算机等级考试二级C语言经典400道.doc(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、计算机级别考试二级C语言超级典型400道题目1、C语言程序基本单位是_c_ A) 程序行 B) 语句 C) 函数 D) 字符、C、12、C语言程序三种基本构造是_a_ A、顺序构造,选取构造,循环构造 B、递归构造,循环构造,转移构造 C、嵌套构造,递归构造,顺序构造 D、循环构造,转移构造,顺序构造、A、13、C语言规定,程序中各函数之间 A) 既允许直接递归调用也允许间接递归调用 B) 不允许直接递归调用也不允许间接递归调用 C) 允许直接递归调用不允许间接递归调用 D) 不允许直接递归调用允许间接递归调用、A、14、C语言中可解决文献类型是( b) A) 文本文献和数据文献 B)文本文献

2、和二进制文献 C) 数据文献和二进制文献 D)数据代码文献、B、15、C语言可执行程序开始执行点是( c) A) 程序中第一条可执行语句 B) 程序中第一种函数 C) 程序中main函数 D) 涉及文献中第一种函数、C、16、C语言提供合法数据类型核心字是 A)double B) short C) integer D) char、B、17、C语言中,运算对象必要是整型数运算符是a A) % B) C) %和 D) * *、A、18、C语言中函数返回值类型是由( d)决定。 A) return语句中表达式类型 B) 调用函数主调函数类型 C) 调用函数时暂时 D) 定义函数时所指定函数类型、D、

3、19、C语言中数组名作为参数传递给函数,作为实在参数数组名被解决为_。 A、该数组长度。 B、该数组元素个数。 C、该数组中各元素值。 D、该数组首地址。、D、110、C语言中数组下标下限是_。 A、1 B、0 C、视具体状况 D、无固定下限、B、111、C语言中提供合法核心字是_ A、swith B、cher C、case D、default、D、112、C语言中文献存取方式是_c_。 A、顺序存取 B、随机存取 C、顺序存取、随机存取均可 D、顺序存取、随机存取均不可、C、113、C语言中最简朴数据类型涉及 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、字符型、逻辑型 D

4、) 整型、实型、逻辑型、字符型、B、114、sizeof(float)是(c ) A) 一种函数调用 B) 一种不合法表达形式 C) 一种整型表达式 D) 一种浮点表达式、C、1b15、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,对的输入语句是 A) input x,y,z;B) scanf(%d%d%d,&x,&y,&z);C) scanf(%d%d%d,x,y,z);D) read(%d%d%d,&x,&y,&z);、B、116、表达式:10!=9值是 A) true B) 非零值 C) 0 D) 1、D、117、表达关系x=y=zc语言表达式为 A) (X=Y)&(Y=

5、Z) B) (X=Y)AND(Y=Z) C) (X=Y=Z) D) (X=Y)&(Y=Z)、A、118、程序片段:在TC20中,int i=65536;printf(%dn,i);输出成果是_ A) 65536 B) 0 C) 有语法错误,无输出成果 D) -1、B、119、当调用函数时,实参是一种数组名,则向函数传送是_ A) 数组长度 B) 数组首地址 C) 数组每一种元素地址 D) 数组每个元素中值、B、120、对嵌套子程序调用说法对的是_。 A、外层子程序可以调用所有内层子程序 B、内层了程序只可以调用涉及自身外层子程序,不可以隔层调用 C、外分程序必要能完全套住内分程序 D、以上说法

6、均不对的、C、121、对于基类型相似两个指针变量之间,不能进行运算是 A) B) = C) + D) -、C、122、合法C语言中,合法长整型常数是 A) t B) A C) 65 D) A、A、123、假定int类型变量占用两个字节,其有定义:int x10=0,2,4;,则数组x在内存中所占字节数是 A) 3 B) 6 C) 10 D) 20、D、124、假定有如下变量定义:int k=7 ,x=12;则能使值为3表达式是 A x%=(k%=5) B x%=(k-k%5) C x%=k-k%5 D (x%=k)-(k%=5)、D、125、请读程序片段(字符串内没有空格):printf(%d

7、n,strlen(ATSn0121);输出成果是 A) 11 B) 10 C) 9 D) 8 、C、126、请选出合法C语言赋值语句 A) a=b=58 B) i+;C) a=58,b=58 D) k=int(a+b);、B、127、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a值是 A) -3 B) 9 C) -12 D) 6、C、128、若int类型占两个字节,则如下语句输出为_。 int k=-1;printf(%d,u%n,k,k);A、-1,-1 B、-1,65536 C、-1,32768 D、-1,65535、D、129、若变量a是int类型,并执行了语句:a

8、=A+1、6;,则对的论述是 A) a值是字符C B) a值是浮点型 C) 不允许字符型和浮点型相加 D) a值是字符AASCII值加上1。、D、130、若变量已对的阐明为float类型,要通过语句scanf(%f %f %f ,&a,&b,&c);给a赋于10、0,b赋予22、0,c赋予33、0,不对的输入形式是: A) 10 B) 10、0,22、0,33、0 22 33 C) 10、0 D) 10 22 22、0 33、0 33、B、131、若规定在if后一对圆括号中表达a不等于0关系,则能对的表达这一关系表达式为 A) a0 B) !a C) a=0 D) a、B、132、若已定义x和

9、y为double类型,则表达式:x=1,y=x+3/2值是 A)1 B)2 C)2、0 D)2、5、C、133、若有定义:int a=8,b=5,c;,执行语句c=a/b+0、4;后,c值为 A) 1、4 B) 1 C) 2、0 D) 2、B、134、若有定义:int x,y;char a,b,c;并有如下输入数据(此处 代表换行符,/u代表空格):1u2 AuBuC 则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 对的程序段是 A) scanf(x=%d y+%d,&x,&y);a=getchar();b=getchar();c=getchar();B) scanf

10、(%d %d,&x,&y);a=getchar();b=getchar();c=getchar();C) scanf(%d%d%c%c%c,&x,&y,&a,&b,&c);D) scanf(%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);、D、135、若有定义和语句:char s10:s=abcd;printf(%sn,s);则成果是(如下u代表空格) A) 输出abcd B) 输出a C) 输出abcduuuuu D) 编译不通过、D、136、若有如下程序段, int c1=1,c2=2,c3;c3=1、0/c2*c1;则执行后,c3中值是 A) 0 B)

11、 0、5 C) 1 D) 2、A、137、若有如下定义:char a;int b;float c;double d;则表达式a*b+d-c值类型为 A) float B) int C) char D) double、D、1数据类型相运算38、若有如下定义和语句 char c1=b,c2=e;printf(%d,%cn,c2-c1,c2-a+A);则输出成果是:A)2,M B)3,E C)2,E D)输出项与相应格式控制不一致,输出成果不拟定、B、139、若有如下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b);在此函数调用语句中实参个数是 A)3 B)4 C)5 D)

12、6、A、1实参与形参41、若执行下面程序时从键盘上输入5,则输出是 A) 7 B) 6 C) 5 D) 4 main() int x;scanf(%d,&x);if(x+5) printf(%dn,x);else printf(%dn,x-);、B、143、设 a、b、c、d、m、n均为 int型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式 (m=ab)&(n=cd)运算后,n值为_ A) 0 B) 1 C) 2 D) 3、C、144、设 int a=12,则执行完语句 a+=a-=a*a后,a值是 A) 552 B) 264 C) 144 D) -264、D、1运算

13、符优先级45、设 int b=2;表达式(b2)/(b1)值是 A) 0 B) 2 C) 4 D) 8、A、146、设a,b和c都是int型变量,且a=3,b=4,c=5,则下列表达式中,值为0表达式是_ A)a&b B)a=b C)a|b+c&b-c D)!(aB)&!C|1)、D、1 47、设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x值为 A 4 B 16 C 32 D 52、C、1理由48、设x=3,y=-4,z=6,写出表达式成果。 !(xy)+(y!=z)|(x+y)&(y-z) A、0 B、1 C、-1 D、6、B、149、设x和y均为i

14、nt 型变量,则如下语句:x+=y;y=x-y;y=x-y;x-=y;功能是 A、把x 和y按从大到小排列 B、把x和y按从小到大排列 C、无拟定成果 D、互换x和y中值、D、150、设有 int x=11;则表达式 (x+ * 1/3) 值是 A) 3 B) 4 C) 11 D) 12、A、1运算符51、设有如下变量定义:int i =8,k ,a,b ;unsigned long w=5;double x=1,42,y=5、2;则如下符合C语言语法表达式是 A、a+=a-=(b=4)*(a=3) B、x%(-3);C、a=a*3=2 D、y=float(i)、A、152、设有如下定义:ch

15、ar *aa2=abcd,ABCD;则如下就法中对的是 A) aa数构成元素值分别是abcd和ABCD B) aa是指针变量,它指向具有两个数组元素字符型一维数组 C) aa数组两个元素分别存储是具有4个字符一维字符数组首地址 D) aa数组两个元素中各自存储了字符a和A地址、D、153、设有如下定义:int x=10,y=3,z;则语句 printf(%dn,z=(x%y,x/y)代表什么);输出成果是 A) 1 B) 0 C) 4 D) 3、D、154、设有数组定义:char array =China;则数组 array所占空间为 A) 4个字节 B) 5个字节 C) 6个字节 D) 7个

16、字节、C、155、设有阐明语句:char a=72;则变量a A) 涉及1个字符 B) 涉及2个字符 C) 涉及3个字符 D) 阐明不合法、A、156、设有如下语句:int x=03,y=02,z=01;那么语句printf(%d,x|y&Z)执行成果()。 (A) 1 (B) 2 (C) 3 (D) 0、C、157、下列if语句中,不对的是_。 A、if(xy);B、if(x=y) x+=y;C、if(x!=y) scanf(%d,&x) else x=1;D、if(x、C、1为什么第一种和第三个58、下列变量定义中合法是 A) short _a=1-、le-1;B) double b=1+

17、5e2、5;C) long do=0xfdaL;D) float 2_and=1-e-3;、A、1定义59、下列标记符中不合法是_ A、s_name B、_e C、fox D、3DS、D、160、下列不对的转义字符是 A) B) C) 074 D) 0、C、161、请读程序:main() int a=1,b=2;printf(%dn,a=a+1,a+6,b+2); 则上面程序输出成果是_ A、2 B、3 C、4 D、1、A、1?62、请读程序:int i=0,j=0,a=6;if(+i0)|(+j0)a+;printf(i=%d,j=%d,a=d%n,i,j,a);则上面程序输出成果是_ A、

18、i=0,j=0,a=6 B、i=1,j=0,a=7 C、i=1,j=1,a=6 D、i=1,j=1,a=7、B、163、下列程序段输出成果为_?int y=1;while(y-);printf(y=%dn,y);A、y=-1B、y=0C、死循环D、y=9 、A、165、下列程序执行后输出成果是 A) G B) H C) i D) J main() int x=f;printf(%c n,A+(x-a+1);、A、166、下列程序执行后输出成果是(小数点后只写一位) A) 6 6 6、0 6、0 B) 6 6 6、7 6、7 C) 6 6 6、0 6、7 D) 6 6 6、7 6、0 main(

19、) double d;float f;ling l;int i;i=f=1=d=20/3;printf(%d %ld %f %f n,i,l,f,d);、A、167、下列可作为C语言赋值语句是 A)x=3,y=5 B)a=b=6 C)i-;D)y=int(x);、C、168、下列描述中不对的是 A) 字符型数组中可以存储字符串 B) 可以对字符型数组进行整体输入、输出 C) 可以对整型数组进行整体输入、输出 D) 不能在赋值语句中通过赋值运算符=对字符型数组进行整体赋值、C、169、下列说法中对的是_。 A、在switch语句中一定要使用break语句 B、在switch语句中不一定要使用br

20、eak语句 C、break语句是switch语句一某些 D、break只能用于switch语句中、B、170、下列运算符其优先级最高是_。 A、| B、& C、+ D、=、C、171、下面DO循环中,一共循环()次。 M=5 N=1 DO WHiLE N=M N=N+1 ENDDO (A) 1 (B) 6 (C) 4 (D) 5、D、172、请读程序:#include main() int a=1,b=4,c=2;float x=5、5,y=9、0,z;z=(a+b)/c+sqrt(double)y)*1、2/c+x;printf(%fn,z); 则上面程序输出成果是_ A、数据溢出B、9、3

21、C、9、300000D、0、93、C、173、请读程序:int a,b,c;a=(b=(c=10)+5)-5;printf(a,b,c=d%,d%,d%,a,b,c);c=a=0;b=(a+10);printf(a,b,c=%d,d%,d%,a,b,c);则上面程序输出成果是_ A、a,b,c=0,10,10 a,b,c=10,15,10 B、a,b,c=10,15,10 a,b,c=10,15,10 C、a,b,c=10,15,10 a,b,c=0,10,0 D、a,b,c=10,15,10 a,b,c=10,15,15、C、174、写出下列语句执行后a,b值。 int a=6,b;b=(+

22、b)+(a+);A、a=8,b=14 B、a=7,b=8 C、a=14,b=14 D、a=8,b=8、A、175、请读程序:m=1234、123;printf=(%-8、3fn,m);printf=(%10、3fn,m);则上面程序输出成果是_ A、1234、12300 1234、123 B、1234、123 1234、123 C、1234、123 1234、12300 D、1234、12300 1234、123、B、176、一种C语言语句至少应包一种_ A、 B、逗号 C、分号 D、什么不要、C、177、一种完整C源程序是_。 A、要由一种主函数(或)一种以上非主函数构成 B、由一种且仅由一

23、种主函数和零个以上(含零)非主函数构成 C、要由一种主函数和一种以上非主函数构成 D、由一种且只有一种主函数或各种非主函数构成、B、178、已知整型变量a=13和b=6,则a&b值是_,ab值是_ A、4 13 B、4 11 C、1 11 D、4 13、B、179、如下for语句构成循环执行了()次。 # include #define N i #define M N+1 # define NUM (M+1)*M/2 main( ) int i,n=0;for (i=1;i=num;i+) n+;printf(%d,n); (A) 5 (B) 6 (C) 8 (D) 9、C、180、如下程序输

24、出成果是_0_ # include main( ) printf(%dn,NULL); (A) 不拟定 (B) 0 (C) -1 (D) 1、B、181、在调用函数时,如下描述中对的是_。 A、调用函数时,实参可以是表达式 B、调用函数时,将为形参分派内存单元 C、调用函数时,实参与形参原型不一定一致 D、调用函数时,实参与形参可以用内存单元、D、182、有如下程序段 int k=0 while(k=1)k+;while 循环执行次数是 A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次、A、183、有如下函数 char fun(char *p) return p; 该

25、函数返回值是 A) 无确切值 B) 形参p中存储地址值 B) 一种暂时存储单元地址 D) 形参p自身地址值、B、184、语句printf(%dn,12&012);输出成果是_ A) 12 B) 8 C) 6 D) 012、B、185、语句:printf(%d,(a=2)&(b= -2);输出成果是_ A) 无输出 B) 成果不拟定 C) -1 D) 1、D、186、运算完下面C语言程序段后来,a值是_,b值是_,c值是_。 int x=10,y=9;int a,b,c;a=(-x=y+)?-x:+y;b=x+;c=y;A、6 9 13 B、8 7 11 C、8 9 10 D、8 7 10、C、

26、187、在C语言程序中,注释某些从哪开始,到哪结束?A、从(到)结束 B、从REM开始无结束志标志 C、无起始标志 D、从/*开始,*/结束、D、188、在C语言提供合法核心字是 A) swicth B) cher C) Case D) default、D、189、在C语言中,不对的int类型常数是_ A) 32768 B) 0 C) 037 D) 0xAF、A、190、在C语言程序中,当while语句构成循环中条件为_时,结束循环。 A、0 B、1 C、true D、非0、A、191、在C语言中,函数隐含存储类别是 A) auto B) static C) extern D) 无存储类别、C

27、、192、在C语言中,合法长整型常数是 A) OL B) 4962710 C) 324562& D) 216D、A、193、在C语言中,合法字符常量是 A) 084 B) x43 C) ab D) 0、B、194、在C语言中,若对函数类型未加明显式阐明,则函数隐含类型是_类型 A) void B) double C) int D) char、C、195、在C语言中,形参缺省存储类是 A) auto B) register C) static D) extern、A、196、在C语言中,规定运算数必要是整型运算符是 A) % B) / C) D) !、A、197、在宏定义 #define PI

28、3、14159中,用宏名PI代替一种 A) 单精度数 B) 双精度数 C) 常量 D) 字符串、D、198、在C语言程序中,可以用做变量名是_ A) 1e5 B) a1 C) int D) *p、B、199、在如下一组运算符中,优先级最高运算符是 A)= B)= C)% D)&、C、1100、字符(char)型数据在微机内存中存储形式是_ A) 反码 B) 补码 C) EBCDIC码 D) ASCII码、D、1102、指出下面对的输入语句是( ) A:scanf(a=b=%d,&a,&b) B:scanf(a=%d,b=%f,&a,&b) C:scanf(%3c,c) D:scanf(%5、2

29、f,&a)、B、2103、执行下面程序后,a值为 main() int a,b;for (a=1,b=1;a=20) break;if(b%3=1) b+=3;continue; b-=5; A) 7 B) 8 C) 9 D) 10、B、2104、在执行如下程序时,假如从键盘上输入:ABCdef回车,则输出为 A)ABCdef B)abcdef C)abc D)DEF # include main() chsr ch;while(ch=getchar()!=n) if(ch=A& ch0?1:x0) y=1;B) if(x) else if(x0)y=1;else y=0;else if(x=

30、0) if(x0)y=1;if(x0)y=1;else if(x=0)y=0;else y=-1;else y=-1;、A、2119、如下合法赋值语句是 A) x=y=100 B) d-;C) x+y;D) c=int(a+b);、B、2120、如下函数返回a所指数组中最小值所在下标值 fun(int *a,int n) int i,j=0,p;p=j;for(i=j;i、D、2121、如下函数值类型是 fun ( float x ) float y;y= 3*x-4;return y; A) int B) 不拟定 C) void D) float、A、2122、如下说法中对的是 A) C语言

31、程序总是从第一种函数开始执行 B) 在C语言程序中,要调用函数必要在main()函数中定义 C) C语言程序总是从main()函数开始执行 D) C语言程序中main()函数必要放在程序开始某些、C、2123、如下所列各函数首部中,对的是 A) void play(var a:integer,var b:integer) B) void play(int a,b) C) void play(int a,int b) D) sub play(a as integer,b as integer)、C、2124、如下论述对的是 A)输入项可以是一种实型常量,如: scanf(%f、3、5);B)只有

32、格式控制,没有输入项,也能对的输入数据到内存,例如: scanf(a=%d,b=%d);C)当输入一种实型数据时,格式控制某些可以规定小数点后位数,例如: scanf(%4、2f,&f);D)当输入数据时,必要指明变量地址,例如: scanf(%f、&f);、C、2125、如下论述对的是 A) do-while语句构成循环不能用其他语句构成循环来代替。 B) do-while语句构成循环只能用break语句退出。 C) 用do-while语句构成循环,在while后表达式为非零时结束循环。 D) 用do-while语句构成循环,在while后表达式为零时结束循环。、D、2126、如下论述中不对

33、的是 A) 在C中,函数中自动变量可以赋初值,每调用一次,赋一次初值。 B) 在C中,在调用函数时,实在参数和相应形参在类型上只需赋值兼容。 C) 在C中,外部变量隐含类别是自动存储类别。 D) 在C中,函数形参可以阐明为register变量。、C、2127、如下论述中不对的是_ A) 在不同函数中可以使用相似名字变量 B) 函数中形式参数是局部变量 C) 在一种函数内定义变量只在本函数范畴内有效 D) 在一种函数内复合语句中定义变量在本函数范畴内有效、D、2128、如下程序运营后,输出成果是 A)1000 B)10010 C)00110 D)10100 main () int y=18,i=

34、0,j,a8;do ai=y%2;i+;y=y/2; while(y=1);for(j=i-10;j-)printf(%d,aj);printf(hn);、B、2129、如下程序运营后,假如从键盘上输入: book book 则输出成果是 A)*8 B)#9 C)#6 D)*9 #include main() char a180,a280,*s1=a1,*s2=a2;gets(s1);gets(s2);if(!strcmp(s1,s2) printf(“*”);else printf(“#”);printf(“%dn”,strlen(strcat(s1,s2) 、B、2130、如下程序运营后,

35、输出成果是 A)6385 B)22 C)33 D)693825 main() char ch25=693,825,*p2;int i,j,s=0;for (i=0;i=0 & pij=9;j+=2) s=10*s+pij-0;printf(%dn,s);、A、2131、如下程序运营后,输出成果是 A)84 B)99 C)95 D)44 int d=1;fun (int p) int d=5;d+=p+;printf(%d,d); main() int a=3;fun(a);d+=a+;printf(%dn,d);、A、2132、如下程序执行后a值是 A)4 B)1 C)0 D)运营时犯错,a无

36、定值 main() int a,k=4,m=6,*p1=&k,*p2=&m;a=p1=&m;printf(%dn,a); 、C、2133、如下程序执行后sum值是 A)15 B)14 C) 不拟定 D)0 min() int i ,sum;for(i=1;i、C、2134、如下程序中,while循环循环次数是 main() int i=0;while(i、D、2135、如下定义语句中,错误是 A) int a=1,2;B) char *a3;C) char s10=test;D) int n=5,an;、D、2136、如下对C语言函数关于描述中,对的是 A) 在C中,调用函数时,只能把实参值传

37、送给形参,形参值不能传送给实参 B) C函数既可以嵌套定义又可以递归调用 C) 函数必要有返回值,否则不能使用函数 D) C程序中有调用关系所有函数必要放在同一种源程序文献中、A、2137、如下对枚举类型名定义中对的是_ A)enum a=one,two,three;B)enum a one=9,two=-1,three;C)enum a=one,two,three;D)enum a one,two,three;、B、2138、如下各选项企图阐明一种新类型名,其中对的是 A) typedef v1 int;B) typedef v2=int;C) typedefv1 int v3;D) typ

38、edef v4:int;、C、2139、如下选项中,不能对的赋值是 A) char s110;s1=Ctest;B) char s2=C,t,e,s,t;C) char s320=Ctest;D) char *s4=Ctestn、A、2140、如下选项中,非法字符常量是 A) t B) 17 C)n D) xaa、C、2141、如下选项中不属于C语言类型是 A) signed short imt B) unsigned long int C) unsigned int D) long short、D、2142、如下选项中合法字符常量是 A)B B) 010 C) 68 D) D、B、2143、如下循环体执行次数是 A) 3 B) 2 C) 1 D) 0 main() int i,j;for(i=0,j=1;i2) return(fib(n-1)+fib(n-2);else return(2); main0 printf(%dn,fib(3);该程序输出成果是 A) 2 B) 4 C) 6

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

当前位置:首页 > 教育专区 > 初中资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁