资源描述
全国计算机等级考试等级考试真题库之选择题(11)
1.下列叙述中对的的是
A) 一个算法的空间复杂度大,则其时间复杂度也必然大
B) 一个算法的空间复杂度大,则其时间复杂度必然小
C) 一个算法的时间复杂度大,则其空间复杂度必然小
D) 算法的时间复杂度与空间复杂度没有直接关系
参考答案:D
【解析】算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为D。
2.下列叙述中对的的是
A) 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
B) 循环队列中的元素个数随队头指针的变化而动态变化
C) 循环队列中的元素个数随队尾指针的变化而动态变化
D) 以上说法都不对
参考答案:A
【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的变化而变化,A对的。
3.一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为
A) 219
B) 229
C) 230
D) 231
参考答案:B
【解析】二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,则n2=79,总结点数为n0+n1+n2=80+70+79=229,答案为B。
4.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为
A) 9
B) 10
C) 45
D) 90
参考答案:C
【解析】冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,选C。
5.构成计算机软件的是
A) 源代码
B) 程序和数据
C) 程序和文档
D) 程序、数据及相关文档
参考答案:D
【解析】软件指的是计算机系统中与硬件互相依赖的另一部分,涉及程序、数据和有关的文档,选D。
6.软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是
A) 测试
B) 设计
C) 可行性研究
D) 实现
参考答案:C
【解析】开发阶段涉及分析、设计和实行两类任务。其中分析、设计涉及需求分析、总体设计和具体设计3个阶段,实行则涉及编码和测试两个阶段,C不属于开发阶段。
7.下面不能作为结构化方法软件需求分析工具的是
A) 系统结构图
B) 数据字典(DD)
C) 数据流程图(DFD图)
D) 鉴定表
参考答案:A
【解析】结构化方法软件需求分析工具重要有数据流图、数据字典、鉴定树和鉴定表。
8.在关系模型中,每一个二维表称为一个
A) 关系
B) 属性
C) 元组
D) 主码(键)
参考答案:A
【解析】关系模型采用二维表来表达,即每个二维表称为一个关系。
9.若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是
A) 一对一
B) 一对多
C) 多对一
D) 多对多
参考答案:B
【解析】A和B为一对多的联系,则对于A中的每一个实体,B中有多个实体与之联系,而B与C为一对一联系,则对于B中的每一个实体,C中之多有一个实体与之联系,则可推出对于A中的每一个实体,C中有多个实体与联系,所认为一对多联系。
10.
A) 选择
B) 投影
C) 交
D) 并
参考答案:D
【解析】关系T中的元素与关系R和关系S中不同元素的总和,因此为并操作。
11.我们所写的每条C语句,通过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是
A) 一条C语句也许会被转换成零条机器指令
B) 一条C语句也许会被转换成多条机器指令
C) 一条C语句相应转换成一条机器指令
D) 某种类型和格式的C语句被转换成机器指令的条数是固定的
参考答案:C
【解析】一个C语句通过编译后产生若干条机器指令。声明部分不是语句,不产生机器指令,只是对有关数据的声明。并且固定类型和格式的C语句被转换成机器指令的条数固定。所以选择C选项。
12.关于"while(条件表达式)循环体",以下叙述对的的是
A) 循环体的执行次数总是比条件表达式的执行次数多一次
B) 条件表达式的执行次数总是比循环体的执行次数多一次
C) 条件表达式的执行次数与循环体的执行次数同样
D) 条件表达式的执行次数与循环体的执行次数无关
参考答案:B
【解析】while循环是先判断条件,满足条件后执行循环体,执行完后接着判断条件,执行,直到最后一次判断条件后不成立,跳出循环,所以最后一次执行了条件表达式,但是没有执行循环体,所以选择B选项。
13.关于C语言的符号常量,以下叙述中对的的是
A) 符号常量的符号名是标记符,但必须大写
B) 符号常量是指在程序中通过宏定义用一个符号名来代表一个常量
C) 符号常量在整个程序中其值都不能再被重新定义
D) 符号常量的符号名必须是常量
参考答案:B
【解析】在C语言中,可以用一个标记符来代表一个常量,称为符号常量。这个标记符必须在程序中进行特别的"指定",并符合标记符的命名规则。用作符号常量的标记符通常采用大写字母表达,在主函数中其值不能再被定义。所以选择B选项。
14.若有以下程序
#include <stdio.h>
main()
{ int b=10, a=-11;
a %= b %= 4;
printf("%d %d\n", a, b);
}
则程序的输出结果是
A) 1 2
B) -1 2
C) -1 -2
D) 1 -2
参考答案:B
【解析】先计算b%=4,即b=b%4,结果为2,然后计算a%=2,结果为-1,最后a的值为-1,b的值为2,所以选择B选项。
15.若有以下程序
#include <stdio.h>
main()
{ int a=0,b=0,c=0;
c= (a -= ++a), (a+=b, b+=4);
printf("%d,%d,%d\n",a,b,c);
}
则程序的输出结果是
A) 0,4,0
B) 0,4,4
C) 1,4,1
D) 1,4,4
参考答案:A
【解析】逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算。且逗号运算符的优先级最低,所以先计算c=(a-=++a)这部分。其中,赋值运算符从右往左计算,先执行++a,a自增1后再赋值,所以a的值为1,执行a=a-1,即a=1-1,a的值为0,并将0赋给变量c。第二部分(a+=b,b+=4),先执行a=a+b,a=0+0,即a的值为0,然后执行b+=4,b=0+4,即b的值为4。所以打印结果为0,4,0,选择A选项。
16.若有以下程序
#include <stdio.h>
main()
{ int a=0,b=0,c=0,d;
c= (a+=b,, b+=a); /*第4行*/
d=c;; /*第5行*/
; /*第6行*/
;printf("%d,%d,%d\n",a,b,c); /*第7行*/
}
编译时出现错误,你认为犯错的是
A) 第4行
B) 第5行
C) 第6行
D) 第7行
参考答案:A
【解析】第4行逗号表达式中间的第二个表达式为空,是不合法的,可以去掉写成a+=b,b+=a,也可以在里面补一个表达式,如a+=b,a,b+=a。所以选择A选项。
17.若有以下程序
#include <stdio.h>
main()
{ int a=1,b=2,c=3,d=4;
if ((a=2) || (b=1)) c=2;
if ((c==3) && (d=-1)) a=5;
printf("%d,%d,%d,%d\n", a,b,c,d);
}
则程序的输出结果是
A) 1,2,3,4
B) 2,1,2,-1
C) 5,1,2,-1
D) 2,2,2,4
参考答案:D
【解析】第一个if语句的判断条件中是逻辑或表达式,所以只要有一个运算对象为真结果就为真,且假如前面的已经为真,后面的表达式不再进行执行判断。执行第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为2。判断第二个if条件为逻辑与表达式,只有两个运算对象均非零,才为真,第一个表达式c==3,不成立,不再判断第二个运算对象,所以不执行d=-1操作和a=5操作。所以结果为选项D。
18.若有以下程序
#include <stdio.h>
main()
{ int a=1,b=2,c=3,d=4, r=0;
if (a!=1) ; else r=1;
if (b==2) r+=2;
else; if (c!=3) r+=3;
else; if (d==4) r+=4;
printf("%d\n", r);
}
则程序的输出结果是
A) 10
B) 7
C) 6
D) 3
参考答案:B
【解析】else总是和与之最近的上面的if配对,执行第一个if,判断条件不成立,执行else r=1;语句。再执行第二个if语句中的判断条件,成立,左移执行r+=2,r的值为3,再执行第三个if的判断条件,不成立执行第7行else后面的空语句";"。再执行第四个if的判断条件d==4成立,执行r+=4,r的值为7。然后打印输出。
19.若有以下程序
#include <stdio.h>
main()
{ int s=0, n;
for (n=0; n<4; n++)
{ switch(n)
{ default: s+=4;
case 1: s+=1;
case 2: s+=2;
case 3: s+=3;
}
}
printf("%d\n", s);
}
则程序的输出结果是
A) 6
B) 18
C) 10
D) 24
参考答案:D
【解析】第一次for循环,n的值为0,所以从default后面的语句开始执行,s+=4,s+=1,s+=2,s+=3,s的值为10。在进入第二次for循环,n的值为1,所以执行s+=1,s+=2,s+=3,s的值为16。在进入第三次for循环,n的值为2,所以执行s+=2,s+=3,s的值为21。在进入第四次for循环,n的值为3,所以执行s+=3,s的值为24。
20.若有以下程序
#include <stdio.h>
main()
{ int a=-2, b=0;
while(a++) ++b ;
printf("%d,%d\n", a, b);
}
则程序的输出结果是
A) 1,2
B) 0,2
C) 1,3
D) 2,3
参考答案:A
【解析】第一次while判断条件中a++,先用后加,为-2不为0条件为真,执行a的自加与++b操作,a的值变为-1,b的值变为1。第二次while判断后,a的值变为0,b的值变为2。第三次while判断条件为假,但是仍要执行自加操作,即值为1,跳出循环。打印1和2。
21.若有以下程序
#include <stdio.h>
main()
{ int a=6, b=0, c=0;
for ( ;a; ) { b += a; a -= ++c; }
printf("%d,%d,%d\n", a,b,c);
}
则程序的输出结果是
A) 1,14,3
B) 0,14,3
C) 0,18,3
D) 0,14,6
参考答案:B
【解析】本循环的条件判断时只要a为0就退出循环体,初始值a的值为6,满足条件执行完循环体,b的值为6,a-=+ +c即a=a-(++c),所以a的值为5,c的值为1。第二次循环后b的值为11,a的值为3,c的值为2。第三次也是最后循环后,a的值为0,b的值14,c的值为3。
22.以下选项中非法的C语言字符常量是
A) '\007'
B) '\b'
C) 'aa'
D) '\xaa'
参考答案:C
【解析】C选项中是字符串常量,应当用双引号表达即"aa"。所以选择C选项。
23.若有以下程序
#include <stdio.h>
char f(char x)
{ return x*x+'a'; }
main()
{ char a, b=0;
for ( a=0; a<4; a+=1 )
{ b = f(a); putchar(b); }
}
则程序的输出结果是
A) abcd
B) ABEJ
C) abej
D) ABCD
参考答案:C
【解析】该题目一方面初始化变量a和b,通过for循环语句使a取值为0、1、2、3,f函数的功能是将a*a+'a'的值返回给b,即b为a、b、e、j。最后通过字符输出函数putchar()将b输出。因此C选项对的。
24.若有以下程序
#include <stdio.h>
void sp(int *a)
{ int b=2;
a=&b; *a = *a * 2; printf("%d,", *a);
}
main()
{ int k=3, *p=&k;
sp(p); printf("%d,%d\n", k, *p);
}
则程序的输出结果是
A) 4,3,3
B) 4,3,4
C) 6,3,6
D) 6,6,6
参考答案:A
【解析】一方面在主函数中给整型变量k赋值为3,将变量k的地址赋给指针变量p;调用sp函数,将实参p的值传给形参a,在sp函数中,指针变量a又获得变量b的地址,通过运算后,输出a的值为4;返回主函数,输出k的值和p的值为3和3。因此A选项对的。
25.若有以下程序
#include <stdio.h>
int k=7;
void f(int **s)
{ int *t=&k;
*s=t;
printf("%d,%d,%d,", k, *t, **s);
}
main()
{ int i=3,*p=&i, **r = &p;
f(r); printf("%d,%d,%d\n", i, *p, **r);
}
则程序的输出结果是
A) 3,3,3,7,7,7
B) 3,7,7,7,7,7
C) 7,7,7,3,3,3
D) 7,7,7,3,7,7
参考答案:D
【解析】在主函数中分别给整型变量i,指针型变量p和指向指针的指针变量r赋初值;调用f函数,并将实参变量r的值传递给形参变量s,在f函数中,通过printf("%d,%d,%d,", k, *t, **s);语句输出7,7,7;返回主函数,通过printf("%d,%d,%d\n", i, *p, **r);输出3,7,7。因此D选项对的。
26.若有以下程序
#include <stdio.h>
int *f(int *s,int *t)
{ int *k;
if (*s < *t){ k = s; s=t; t=k; }
return s;
}
main()
{ int i=3, j=5, *p=&i, *q=&j, *r;
r=f(p,q); printf("%d,%d,%d,%d,%d\n", i, j, *p, *q, *r);
}
则程序的输出结果是
A) 3,5,5,3,5
B) 3,5,3,5,5
C) 5,3,5,3,5
D) 5,3,3,5,5
参考答案:B
【解析】在主函数中分别给整型变量i、j和指针型变量p、q赋初值,并声明指针变量r;调用f函数,并将实参变量p和q的值传递给形参变量s和t,并且f函数是指针型函数,即函数的返回值将是一个地址。在f函数中,假如条件成立,则将指针变量s和t互换,并且将指针s的地址返回主函数。最后输出i, j, *p, *q, *r的值,即3,5,3,5,5。因此B选项对的。
27.若有以下程序
#include <stdio.h>
#define N 4
void fun(int a[][N], int b[], int flag)
{ int i,j;
for(i=0; i<N; i++)
{ b[i] = a[i][0];
for(j=1; j<N; j++)
if (flag ? (b[i] > a[i][j]) : (b[i] < a[i][j]))
b[i] = a[i][j];
}
}
main( )
{ int x[N][N]={1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16}, y[N],i;
fun(x, y, 1);
for ( i=0; i<N; i++ ) printf("%d,", y[i]);
fun(x, y, 0);
for (i=0;i<N; i++) printf("%d,", y[i]);
printf("\n");
}
则程序的输出结果是
A) 1,5,9,13,4,8,12,16,
B) 4,8,12,16,1,5,9,13,
C) 1,2,3,4,13,14,15,16,
D) 13,14,15,16,1,2,3,4,
参考答案:A
【解析】该题一方面初始化二维数组,if (flag ? (b[i] > a[i][j]) : (b[i] < a[i][j]))条件语句的条件表达式使用了条件运算符构成的选择结构,即flag为真时,以(b[i] > a[i][j])作为条件表达式的值,否则以(b[i] < a[i][j])作为条件表达式的值,fun函数功能是给一维数组赋值。fun(x, y, 1);该函数调用后,即当flag为真时,使一维数组获得二维数组第1列的数值;fun(x, y, 0);该函数调用后,即当flag为假时,使一维数组获得二维数组第4列的数值;因此A选项对的。
28.若有以下程序
#include <stdio.h>
void fun(int a[ ], int n)
{ int t,i,j;
for (i=1; i<n; i+=2)
for (j=i+2; j<n; j+=2)
if (a[i] > a[j]) { t=a[i]; a[i]=a[j];a[j]=t;}
}
main()
{ int c[10]={10,9,8,7,6,5,4,3,2,1},i;
fun(c, 10);
for (i=0;i<10; i++) printf("%d,", c[i]);
printf("\n");
}
则程序的输出结果是
A) 1,10,3,8,5,6,7,4,9,2,
B) 10,9,8,7,6,5,4,3,2,1,
C) 2,9,4,7,6,5,8,3,10,1,
D) 10,1,8,3,6,5,4,7,2,9,
参考答案:D
【解析】该题一方面对一维数组进行初始化,c[0]到c[9]依次赋值为10到1;fun(c, 10);语句调用fun函数,fun函数的功能是将一维数组偶数位元素的数值由小到大排序;最后将排好序的新的一维数组进行输出。因此D选项对的。
29.若有以下程序
#include <stdio.h>
main()
{ int i,j=0;
char a[]="How are you!";
for (i=0; a[i]; i++)
if (a[i] != ' ') a[j++]=a[i];
a[j]='\0';
printf("%s\n",a);
}
则程序的输出结果是
A) Hay!
B) Howareyou
C) Howareyou!
D) How are you!
参考答案:C
【解析】主函数中一方面定义字符数组a[]="How are you!";执行for循环语句,语句if (a[i] != ' ') a[j++]=a[i]; 其功能是将字符数组中的空格去掉。因此C选项对的。
30.若有以下程序
#include <stdio.h>
char *a="you";
char b[ ]="Welcome you to China!";
main()
{ int i, j=0; char *p;
for ( i=0; b[i] !='\0'; i++ )
{ if (*a == b[i])
{ p=a;
for (j=i; *p!='\0'; j++)
{ if (*p != b[j]) break;
p++;
}
if (*p=='\0') break;
}
}
printf("%s", &b[i]);
}
则程序的输出结果是
A) China!
B) to China!
C) me you to China!
D) you to China!
参考答案:D
【解析】该程序一方面定义*a和b[ ],并进行初始化。主函数中通过外层for循环语句,遍历字符数组b[ ],并且将符合if条件语句的字符赋给数组p;for内层循环语句,遍历字符数组a[ ]。再将符合if条件语句的结果输出。因此D选项对的。
31.若有以下程序
#include <stdio.h>
main()
{ char a[20], b[ ]="The sky is blue."; int i;
for (i=0; i<7; i++) scanf("%c", &b[i]);
gets(a); printf("%s%s\n", a,b);
}
执行时若输入: (其中<Enter>表达回车符)
Fig flower is red. <Enter>
则输出结果是
A) wer is red.Fig flo is blue.
B) wer is red.Fig flo
C) wer is red.The sky is blue.
D) Fig flower is red.The sky is blue.
参考答案:A
【解析】程序一方面初始化字符数组b[],执行for循环语句,循环变量i的取值范围从0到6。在for循环语句中通过scanf函数将从键盘上输入的数据输入到b[ ]中,即b的值为Fig flo is blue.。退出for循环语句,执行语句gets(a); ,gets()函数的调用形式为:gets(str_adr),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets函数用来从终端键盘读入字符串(涉及空格符),直到读入一个换行符为止,即a的值为wer is red.。因此A选项对的。
32.若有以下程序
#include <stdio.h>
main()
{ char w[20], a[5][10]={"abcdef", "ghijkl", "mnopq", "rstuv", "wxyz"};
int p[6][2]={{0,1},{1,5},{0,0},{0,2},{1,4},{4,4}}, i;
for (i=0; i<6; i++) w[i]=a[ p[i][0] ][ p[i][1] ];
puts(w);
}
则程序的输出结果是
A) catis
B) ababj
C) ckbdl
D) black
参考答案:D
【解析】程序一方面初始化字符数组a[5][10]和二维数组p[6][2]。执行for循环语句,循环变量i从0取值到5,得到字符数组w[ ]的值,并通过字符串输出函数 puts进行输出操作。w[0]=a[0][1]、w[1]=a[1][5] 、w[2]=a[0][0] 、w[3]=a[0][2] 、w[4]=a[1][4] 、w[5]=a[4][4];因此最后字符数组w的结果为black。因此D选项对的。
33.若有以下程序
#include <stdio.h>
void f(int x)
{ if (x >= 10)
{ printf("%d-", x%10); f(x/10); }
else
printf("%d", x);
}
main()
{ int z = 123456;
f(z);
}
则程序的输出结果是
A) 6-5-4-3-2-1-
B) 6-5-4-3-2-1
C) 1-2-3-4-5-6
D) 1-2-3-4-5-6-
参考答案:B
【解析】本题重点考察函数的递归调用,程序一方面初始化整型变量z为123456,调用函数f。f函数中一方面通过if条件语句判断x是否大于等于10,假如条件成立,求x除以10的余数并输出,同时将变量x进行x/10运算,同时调用函数f。假如条件不成立,直接输出变量x。因此第1次调用函数,变量x为123456,条件成立,输出余数6;第2次调用函数,变量x为12345,条件成立,输出余数5;第3次调用函数,变量x为1234,条件成立,输出余数4;第4次调用函数,变量x为123,条件成立,输出余数3;第5次调用函数,变量x为12,条件成立,输出余数2;第6次调用函数,变量x为12345,条件不成立,输出1。因此B选项对的。
34.若有以下程序
#include <stdio.h>
int a=2;
int f(int m)
{ static int n;
n=0; n++; a++;
return n+m+a;
}
main()
{ int k;
for (k=0; k<4; k++) printf("%d,", f(k));
}
则程序的输出结果是
A) 4,5,6,7,
B) 4,7,10,13,
C) 4,6,8,10,
D) 3,5,7,9,
参考答案:C
【解析】主函数中变量k作为for语句的循环变量,取值0、1、2、3,同时也作为实参通过调用函数f传递给形参变量m。由于变量a是全局变量,变量n是static静态变量,因此k=0时,f函数中,语句return n+m+a;即1+0+3=4;k=1时,f函数中,语句return n+m+a;即2+1+3=6;k=2时,f函数中,语句return n+m+a;即3+2+3=8;k=3时,f函数中,语句return n+m+a;即4+3+3=10。因此C选项对的。
35.若有以下程序
#include <stdio.h>
#define S(x) x*x
#define T(x) S(x)*S(x)
main()
{ int k=5, j=2;
printf("%d,%d\n", S(k+j),T(k+j));
}
则程序的输出结果是
A) 17,289
B) 49,2401
C) 17,37
D) 49,289
参考答案:C
【解析】本题考察宏定义,宏定义只是做个简朴的替换,执行S(k+j)=k+j*k+j=17,T(k+j)=S(k+j)*S(k+j)=k+j*k+j*k+j*k+j=37,选项C对的。
36.若有以下程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stu {
char *name, gender;
int score;
};
main()
{
struct stu a={NULL, 'm', 290}, b;
a.name=(char *)malloc(10);
strcpy(a.name, "Zhao");
b = a; b.gender = 'f'; b.score = 350;
strcpy(b.name, "Qian");
printf( "%s,%c,%d,", a.name, a.gender, a.score );
printf( "%s,%c,%d\n", b.name, b.gender, b.score );
}
则程序的输出结果是
A) Zhao,m,290,Zhao,f,350
B) Zhao,m,290,Qian,f,350
C) Qian,f,350,Qian,f,350
D) Qian,m,290,Qian,f,350
参考答案:D
【解析】本题中考察结构体中变量的引用,a结构体中name被修改为Qian,所以本题答案为D。
37.若有以下程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct stu {
char *name, gender;
int score;
} STU;
void f(char *p)
{
p=(char *)malloc(10);
strcpy(p, "Qian");
}
main()
{
STU a={NULL, 'm', 290}, b;
a.name=(char *)malloc(10);
strcpy( a.name, "Zhao" );
b = a;
f(b.name);
b.gender = 'f'; b.score = 350;
printf("%s,%c,%d,", a.name, a.gender, a.score);
printf("%s,%c,%d\n", b.name, b.gender, b.score);
}
则程序的输出结果是
A) Zhao,m,290,Qian,f,350
B) Zhao,m,290,Zhao,f,350
C) Qian,f,350,Qian,f,350
D) Qian,m,290,Qian,f,350
参考答案:B
【解析】本题考察结构体变量中的引用,其中a的name为Zhao,b执行函数f(b.name)后b的name并没有改变,还是Zhao,所以答案为B选项。
38.若有定义
typedef int* T;
T a[10];
则a的定义与下面哪个语句等价
A) int (*a)[10];
B) int *a[10];
C) int *a;
D) int a[10];
参考答案:B
【解析】本题考察typedef的使用方法,typedef对已存在的类型使用一个新的名字,其中本题中int* 用T来代替,所以定义T a[10];就相称于是int *a[10];选项B对的。
39.若有以下程序
#include <std
展开阅读全文