为大家收集整理了《2004??年9月全国计算机等级考试二级C++试题及答案》供大家参考,希望对大家有所帮助!!!
一、选题(1 -40每题1分,41-50每题2分,***60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项 是的。
1.1MB 相等:
A) 1000 字节
B) 1024 字节
C) 1000×1000 字节 p>
D) 1024×1024字节
2.与十六休息数200等值的十间歇数为:
A) 256
B) 512
C) 1024
D) 2048
3.称“*机”是指
A) 单片机
B) 单板机
C) 不装备任何软件的计算机
D) 只装备网络的计算机
4 .能够将高级语言编写的源程序转换成目标程序:
A) 链接程序
B) 解释程序
C) 编译程序
p>
D) 我的程序
5.在 64 位计算机中,一个字长所占的字节数为
A) 64
B) 8
C) 4
D) 1
6.在Windows环境下,当一个应用程序窗口被最小化后,该应用 程序
A) 继续在后台运行
B) 继续在前台运行
C) 终止运行
D) 暂停运行< /p>
7.在Windows环境下,能实现窗口移动的操作是:
A) 使用鼠标拖动窗口中的任何部位
B) 使用鼠标拖动 动窗口的标题
C) 使用鼠标拖动窗口的控制按钮
D) 使用鼠标拖动窗口的控制栏
8.在Windows环境下 下,PrintScreen键的作用是:
A) 打印当前窗口的内容
B) 打印屏幕内容
C) 复制屏幕到剪贴板
D) 复制当前窗口到剪贴板
9.Internet的通信协议是:
A) TCP/IP
B) BBS p>
C) WWW
D) FTP
10. 以下叙述正确的是
A) 计算机病毒只感染可执行文件< /p>
B) 计算机病毒仅感染文本文件
C) 计算机病毒只能通过软件复制的方式进行传播
D) 计算机病毒可以通过网络或读取 写磁盘等方式进行传播
11.一个算法应具有“确定性”等5个特性,对下面另外4个特性的描述中错误的是
A) 有零个或多个输入
B) 有零个或多个输出
C) 有穷性
D) 嗅觉
12.以下叙述中正确的是
A) C 语言的源程序不一定通过编译就可以直接运行
B) C 语言中的每条执行语句 最终都将被转换成二进制机器指令
C) C源程序通过编译形成的二进制代码可以直接运行
D) C语言中的函数不可以单独进行编译
13.以下符合C语言语法的实型常量为:
A) 1.2E0.5
B) 3.14.159E
C) 5E-3
D) E1
5
14.以下4组用户定义标识符中,全部合法的一组是:
A) _main include sin
B) If -max Turbo
C) txt REAL 3COM
D) int k_2 _001
15.若以下选项中的变量已正确定义,则正确的赋值语句为: < /p>
A) x1=26.8%3
B) 1+2=x2
C) x3=0x12
D) x4= 1+2=3;
16. 具有以下定义:
int a=0;
双b=1.25;
char c='A';
#define d 2
则下面语句中错误的是
A) a++;
B) b++;
C) c++;
D) d++;
17.设置定义:float a=2,b=4,h=3;,以下C语言表达式与代数公式计算结果不相符的 是:
A) (a+B) *h/2
B) (1/2)*(a+B) *h
C) (a+B) *h*1/2
D) h/2*(a+B)
18.有以下程序:
main( ){
int x=102,y=012;
printf("-,-\n",x,y);
}
执行后输出结果为
A) 10,01
B) 02,12
C) 102,10
D) 02,10
19.以下4个选项中,不能同时执行一条语句:
A) { ;}
B) a=0,b=0,c=0;
C) if(a>0);
D) if(b==0) m=1;n=2;
20.设置定义:int a,*pa=&a;以下scanf语句中能 正确读取数据的变量是
A) scanf("%d",pA) ;
B) scanf("%d",A) ;
C) scanf("%d",&pA) ;
D) scanf("%d",*pA) ;
21.以下程序段中与语句k=a>b?(b>c?1:0) :0;功能等价为
A) if((a>B) &&(b>C) ) k=1;
B) if((a>B) ||(b>C) ) k=1 else k=0;
C) if(a<=B) k=0;
D) if(a>B) k=1; 否则如果(bC) k=1; 否则k=0;
22.有以下程序:
main(){
char k; 整数我;
for(i=1;i<3;i++){
scanf("%c",&k);
开关(k){
情况
'0': printf("另一个\n");
case '1': printf("number\n");
}
}
}
程序运行时,从键盘输入:01回车>,程序执行后的输出结果 是
A) 另一个数字
B) 另一个数字
C) 另一个数字另一个
D) 数字数字
23.有以下程序:
main(){
int x=0,y=5,z=3;
while(z-->0&&++x<5) y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果为
A) 3,2,0
B) 3,2,- 1
C) 4,3,-1
D) 5,-2,-5
24.有以下程序:
main(){
int i,s=0;
for(i=1;i<10;i+=2) s+=i+1;
printf("%d\n",s);
}
程序执行后的输出结果为
A) 自然数1~9的累加和
B) 自然数1~ 10的累加和
C) 自然数1~9中的奇数之和
D) 自然数1~10中的偶数之和
25.有 程序如下:
main(){
int i,n=0;
for(i=2;i<5;i++){
do{
if(i%3) 继续;
n++;
}while(!i);
n++;
}
printf("n=%d\n",n);
}
程序执行后的输出结果为
A)n=5
B)n=2
C)n=3
D)n=4
26.若程序中定义了以下函数
double myadd(double a,double B) { return (a+B) ;}
将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是
< p> A)double myadd(double a,B) ;B)double myadd(double,double);
C)double myadd(double b,double A);
D)double myadd(double x,double y);
27.有以下程序:
char fun(char x , char y){
p>
if(x
return y;
}
main(){
int a='9',b='8', c='7';
printf("%c\n
",fun(fun(a,B) ,fun(b,C) ));
}
程序的执行结果是
A)函数 调用错误
B)8
C)9
D)7
28.设置:int n=0, *p=&n,**q=&p;则以下选项中,正确的赋值语句为:
A)p=1;
B)*q=2; p>
C)q=p;
D)*p=5;
29.有以下程序
void f(int v , int w){
int t;
t=v;v=w;w=t;
}
main( ){
int x=1,y=3,z=2;
if(x>y) f(x,y); if(y>z) f(y,z);
else if(x,z);
printf("%d,%d,%d\n", x,y,z);
}
执行后输出结果为
A)1,2,3
B) 3,1,2
C)1,3,2
D)2,3,1
30.有以下程序段:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b= p[5];
b中的值为
A)5
B)6
C)8
D)9
31.有以下程序:
main(){
char a[]="abcdefg",b[10] ="abcdefg";
printf("%d %d\n",sizeof(A) ,sizeof(B));
}
执行 后期输出结果为
A)7 7
B)8 8
C)8 10
D)10 10
D)10 10
p>
32.有以下程序:
void swap1(int c[]){
int t;
t=c[0];c[0]=c[1];c[1]=t;
}
void swap2(int c0,int c1){
int t;
t=c0;c0=c1;c1=t;
}
main(){
int a[2]={3,5},b[2]={3,5};
交换1(A);
swap2(b[0],b[1]);
printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);
}
其输出结果为
A)5 3 5 3
B)5 3 3 5
< p> C)3 5 3 5D)3 5 5 3
33.有以下程序:
void sum(int *A){ p>
a[0]=a[1];
}
main(){
int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--) sum(&aa[i]);
printf("%d\n",aa[0]);
}
执行后的输出结果为
A) 4
B) 3
C) 2
D) 1
34.有以下程序:
int f(int b[][4]){
int i,j,s=0;
for(j=0;j<4;j++){
i=j;
如果(i>2) i=3-j;
s+=b[i][j];
}
返回 s;
}
main(){
int a[4][4]={{1,2,3,4},{0,2 ,4,5},{3,6,9,12},{3,2,1,0}};
printf("%d\n",f(A));
}
执行后的输出结果为
A) 12
B) 11
C) 18
D) 16
35.有以下定义:
#include
char a[10],*b=a;
不能给数据库a输入字符串的语句是
A)gets(A)
B)gets(a[0])
C)gets(&a[0]);
D)gets(B) ;
36.有以下程序:
main(){
char *p[10] ={"abc","aabdfg","dcdbe","abbd","cd"};
printf("%d\n",strlen(p[4]));
}
执行后输出结果为
A)2
B)3
C)4
D)5
37.有以下程序:
int a=2;
int f(int *A){return (*A) ++;}
main(){
int s=0;
{
int a=5;
s+=f(&A);
}
s+=f(&A) ;
printf("%d\n",s);
}
执行后输出结果为
A)10
B)9
C)7
D)8
38.有以下程序:
#define f(x) x*x
main(){ < /p>
int i;
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
执行后输出结果为
A)28
B)22
C)16
D
)4
39. 包含以下语句:
typedef struct S{ int g; 字符 h;} T;
则下面叙述中正确
A) 可用S定义结构体变量
B) 可以用T定义结构体变量
< p> C)S为struct类型的变量D)T为struct S类型的变量
40.有以下程序:
struc STU{ p>
字符名称[10];
int 数字;
};
void f1(struct STU C){
struct STU b={"LiSiGuo",2042};
c=b;
}
void f2(struct STU *C){
struct STU b={"SunDan",2044};
*c=b;
}
main(){
struct STU a={"YangSan",2041},b={"WangYin",2043};
f1(A);
f2(&B);
printf("%d %d\n",a.num,b.num);
}
执行后的输出结果为
A)2041 2044
B)2041 2043
C)2042 2044
D)2042 2043
41.有以下程序:
main(){
unsigned char a,b ;
a=4|3;
b=4&3;
printf("%d %d\n",a,b);
}
执行后输出结果为
A) 7 0
B) 0 7
C ) 1 1
D) 43 0
42.下面程序的功能是输出以下形式的金字塔图案是:
*
***
*****
*******
main(){
int i ,j;
for(i=1;i<=4;i++){
for(j=1;j<=4-i;j++) printf(" ");
for(j=1;j<=_______;j++) printf("*");
printf("\n");
}
}
在下划线处应填
A) i
B) 2*i-1
C) 2*i+1
D) i+2
43.有以下程序:
void sort(int a[],int n){
int i,j,t;
for(i=0;iFor(j=i+2;jif(a[i]}
main(){
int aa [10]={1,2,3,4,5,6,7,8,9,10},i;
排序(aa,10);
for(i=0;i<10;i++) printf("%d",aa[i]);
printf("\n");
}
其输出结果为
A) 1,2,3,4,5,6,7,8,9,10,
B) 10,9,8,7,6,5,4,3,2,1,
C) 9,2,7,4,5,6,3, 8,1,10,
D) 1,10,3,8,5,6,7,4,9,2,
44.以下程序段中,不能 正确的赋码字符串(编译时系统会提示错误)是:
A) char s[10]="abcdefg";
B) char t[]="abcdefg",*s=t;
C) char s[10];s="abcdefg";
D) char s[10];strcpy(s,"abcdefg");
45.有以下程序:
#include
< p> main(int argc ,char *argv[]){int i,len=0;
for(i=1;i打印f("5d\n",len);
}
通过编译链接后生成的可执行文件是 ex.exe,若运行时输入以下带参数的命令行
ex abcd efg h3 k44
执行后输出结果为
A) 14 p>
B) 12
C) 8
D) 6
46.有以下程序:
void f( int a[],int i,int j){
int t;
if(i t=a[i];a[i]=a[j];a[j]=t;
f(a,i+1,j -1);
}
}
main(){
int i,aa[5]={1,2 ,3,4,5};
f(aa,0,4);
for(i=0;i<5;i++) printf("%d," ,aa[i]);
printf("\n");
}
执行后结果为
A ) 5,4,3,2,1,
B) 5,2,3,4,1,
C) 1,2,3,4,5, < /p>
D) 1,2,3,4,5,
47.有以下程序:
struct STU{
char name[ 10];
int 数字;
int 分数;
};
main(){
struct STU s[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"wangYin" ,20043,680},{"孙丹",20044,550},
{"鹏华",20045,537}},*p[5],*t;
int i,j;
for(i=0;i<5;i++) p[i]=&s[i];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(p[i]- >分数>p[j]->分数){t=p[i];p[i]=p[j];p[j]=t;}
printf("5d %d \n",s[1].分数,p[1]->分数);
}
执行后输出结果为
A) 550 550
B) 680 680
C ) 580 550
D) 580 680
48.有以下程序:
#include
struct NODE{
< p>int 数字;结构节点*下一个;
};
main(){
结构节点 *p,*q,*r;
int sum=0;
p=(struct NODE *)malloc(sizeof(struct NODE));
q=(struct NODE *)malloc(sizeof(struct NODE));
r=(struct NODE *)malloc(sizeof(struct NODE));
p->num=1;q->num=2;r->num=3;
p->下一个=q;q->下一个=r;r->下一个=NULL;
sum+=q->next->num;sum+=p->num;
printf("%d\n",sum);
}
执行后的输出结果为
A) 3
B) 4
C) 5
D) 6
49.有以下程序:
#include
main(){
文件*fp; int i,k=0,n=0;
fp=fopen("d1.dat","w");
for(i=1;i<4;i++) fprintf(fp,"%d",i);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n);
fclose(fp);
}
执行后输出结果为
A) 1 2
B) 123 0
C ) 1 23
D) 0 0
50.有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END) ;语句的作用是 使位置指针从文件尾向前移动2*sizeof(int)字节)
#include
main(){
FILE *fp; int i,a[4]={1,2,3,4},b;
fp=fopen("data.dat","wb");
for(i=0;i<4;i
++) fwrite(&a[i],sizeof(int),1,fp);
fclose(fp);
fp=fopen("data.dat","rb");
fseek(fp,-2L*sizeof(int).SEEK_END) ;
fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/
fclose (fp);
printf("%d\n",B) ;
}
执行后输出结果为
A) 2
B) 1
C) 4
D) 3
二、填空题(每空2分,***40分)
表示每一个空的正确答案写在
1.E-mail地址由用户名和域名两部分组成,这两部分的分隔符为。
2.计算机网络划分广域网和东南,东南
3.从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为。
4.在Windows环境下,只需在“开始”菜单中 点击选项,就可以查阅最近打开的文档清单。
5.计算机的攻击速度可以用MIPS来描述,1MIPS是指每秒执行条指令。
6 .已知字符A的ACSII码值为65,以下语句的输出结果为
char ch='B';
printf("%c %d\n",ch,ch);
7.有以下语句段
int n1=10,n2=20;
printf("",n1.n2);
要求按以下格式输出n1和n2的值,输出每行从第一列开始,请填空。
n1=10
n2= 20
8.有以下程序
main(){
int t=1,i=5;
for(;i>=0;i--) t*=i;
printf("%d\n",t);
}
执行后输出结果是。
9.有以下程序
main(){
int n=0,m=1,x=2;
if(!n) x-=1;
如果(m)x-=2;
如果(x)x-=3;
printf("%d\n",x);
}
执行后输出结果是。
10.有以下程序
#include
main (){
char ch1,ch2; 整数 n1,n2;
ch1=getchar(); ch2=getchar();
n1=ch1-’0’; n2=n1*1(ch2-’0’);
printf("%d\n",n2);
}
程序运行时输入:12回车>,执行后输出结果为。
11.有以下程序
void f( int y,int *x){y=y+*x; *x=*x+y;}
main(){
int x=2,y=4;
f(y,&x);
printf("%d %d\n",x,y);
}
执行后输出的结果是。
12.函数fun的函数是计算xn
double fun(double x ,int n){
int i; 双 y=1;
for(i=1;i<=n;i++) y=y*x;
返回y;
}
主函数中已经正确定义了m,a,b变量并赋值,并调用fun函数计算:m=a4+b4-(a+B) 3。 这个计算的函数调用语句为 。
13.下面rotate函数的功能是:将n行n列的矩阵A转置为A',例如:
1 2 3 4 1 5 9 13
5 6 7 8 2 6 10 14
当 A= 9 10 11 12 则 A'= 3 7 11 15
13 14 15 16 4 8 12 16
请填空
#define N 4
voidrotate(int a[][N]){
int i,j,t;
for(i=0;i???for(j=0;;j++){
?t=a[i][j];
?; < /p>
a[j][i]=t;
}
}
14.以下sstrcpy( )函数实现字符串复制 ,即将t所指的字符串复制到s所指向的内存空间中,形成一个新的字符串。请填空。
void sstrcpy(char *s,char *t){ while(*s++ =);}
main(){
char str1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
15. 下列程序的运行结果为:
#include
char *ss(char *s){ return s+strlen(s)/2;}
main(){
char *p ,*str="abcdefgh";
p=ss(str); printf("%s\n",p);
}
16 .下面程序的运行结果是:
int f( int a[], int n){
if(n>1) return a[0]+f(&a[ 1],n-1);
否则返回a[0];
}
main(){
int aa [3]={1,2,3},s;
s=f(&aa[0],3);
< p> }17.以下程序中给指针p分配三个双型动态内存单元,请填空。
#include
main (){
double *p;
p=(double *) malloc();
p[0]=1.5;p[1]=2.5;p[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);
}
18.以下程序的运行结果是
# include
typedef struct Student{
字符名称[10];
长鼻涕;
浮动分数;
}STU;
main(){
STU a={"zhangsan",2001,95},b={"尚贤",2002,90},c={"安化", 2003,95},d,*p=&d;d=a;
if(strcmp(a.name,b.name)>0) d=b;
if(strcmp(c.name,d.name)>0) d=c;
printf("%ld%s\n",d.sno,p->name);
}
19.以下sum函数的功能是计算下列级数之和。
S=1+x+x2/2!+x3/ 3!+........+xn/n!
请给函数中的各变量正确赋初值。
double sum( double x, int n ){
int i; 双 a、b、s;
;
for(i=1;i<=n;i++){a=a*x; b=b*i; s=s+a/b; }
返回;
}