7.下列程序运行的结果是( 22 )。
#include
#defineswap(x,y) {x^=y;y^=x;x^=y;}
main()
{ inta=010,b=1;
swap(a,b);
printf(“%d,%d\n”,a,b);
}
22(A)1,8 (B)8,1 (C)10,1 (D)1,10
8.以下scanf函数调用中对结构体变量成员的错误引用是( 23 )。
structstudent
{ charname[20];
intage;
intsex;
}stud[5],*p;
p=stud;
23(A)scanf(“%s”,stud[0].name); (B)scanf(“%d”,&stud[0].age);
(C)scanf(“%d”,p->age); (D)scanf(“%d”,&(p->sex));
9.在以下关于构造函数的描述中,错误的是( 24 )。
24(A)构造函数可以重载 (B)构造函数可以带缺省形参值
(C)构造函数名必须与类同名 (D)构造函数可以带回返回值
10.下面对C++函数重载的描述中,错误的是( 25 )
25(A)函数名相同 (B)函数参数个数或参数类型至少有一个不同
(C)函数参数不可以用缺省值 (D)函数返回值必须不同
四川省计算机等级考试二级C语言笔试题(第二十一次)二
2009-03-2915:
20:
00
二、读程序回答问题(每个选择3分,共45分)。
1.下列程序运行的结果为( 26 )。
#include
voidfun(char*c,intd)
{ *c=*c+1;
d=d+1;
printf("%c,%c,",*c,d);
}
main()
{ chara='A',b='a';
fun(&b,a);
printf("%c,%c\n",a,b);
}
26(A)B,a,B,a (B)a,B,a,B (C)A,b,A,b (D)b,B,A,b
2.下面程序的输出是( 27 )。
#include
voidtest(int*u,int*v)
{ int*w;
w=u;u=v;v=w;
}
main()
{ intm=3,n=6,*x=&m,*y=&n;
test(x,y);
printf("%d %d",m,n);
}
27(A)3 6 (B)6 3 (C)0 0 (D)编译出错
3.以下程序的输出结果是( 28 )。
#include
main()
{ intx,y;
for(x=1,y=1;x<=15;x++)
{ if(y>=20)
break;
if(y%3==1)
{ y+=3;
continue;
}
y-=10;
}
printf("%d,%d\n",x,y);
}
28(A)8,22 (B)7,20 (C)6,22 (D)5,20
4.fun(char*t1,char*t2)
{ inti,j;
while(*t2!
=0)
{ for(i=0,j=0;t1[i];i++)
if(t1[i]!
=*t2)
t1[j++]=t1[i];
t1[j]='\0';
t2++;
}
}
main()
{ chara[]="abcde",b[]="ae";
fun(a,b);
puts(a);
}
该程序的输出结果为( 29 )。
29(A)abcde (B)bcd (C)abcdeae (D)ae
5.以下程序的输出结果是( 30 )。
#include
#defineFUN(y) 2.84+y
#definePR(a) printf("%d",(int)(a))
#definePRINT(a) PR(a);putchar('\n')
main()
{intx=2;
PRINT(FUN(5)*x);
}
30(A)11 (B)12 (C)14 (D)15
6.读下列程序,回答问题。
#include
voidsort(inta[])
{ inti,j,t;
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
main()
{ inta[5]={5,10,-7,3,7},i,t,j;
sort(a);
for(i=0;i<=4;i++)
printf("%d\n",a[i]);
}
关于程序的说法正确的是( 31 )。
31(A)用选择法对数据按从小到大排列
(B)用选择法对数据按从大到小排列
(C)用冒泡法对数据按从小到大排列
(D)用冒泡法对数据按从大到小排列
7.执行下面程序时输入“Iwillpasstheexam!
”,其输出结果是( 32 )。
如果将程序中的scanf(“%s”,s)改为gets(s);同样输入”Iwillpasstheexan!
”,则程序的输出结果是( 33 )。
#include
intfun(chars[])
{ inti=0;
while(s[i]!
='\0')
i++;
returni;
}
voidmain()
{ chars[81];
printf("Pleaseinputastring:
\n");
scanf("%s",s);
printf("%d\n",fun(s));
}
32(A)5 (B)21 (C)1 (D)17
33(A)5 (B)21 (C)1 (D)17
8.以下是一个C++程序
#include
classSample
{ intx,y;
public:
Sample() {x=y=0;}
Sample(inta,intb) {x=a; y=b;}
voiddisp()
{ cout<<"x="<}
voidmain()
{ Sample s1,s2(2,3);
s1.disp();
s2.disp();
}
(1)该程序主函数中s1.disp()的输出为( 34 )。
34(A)x=0y=0(B)x=2y=3(C)x=3y=2(D)x=1y=1
(2)该程序主函数中s2.disp()的输出为( 35 )。
35(A)x=0y=0(B)x=2y=3(C)x=3y=2(D)x=1y=1
9.读下列程序并回答问题。
#include
voidfun(int*p,inti,intj)
{ intt;
if(i { t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;
fun(p,++i,--j);
}
}
main()
{ inta[]={1,2,3,4,5,6},i;
fun(a,0,5);
for(i=0;i<6;i++)
printf("%d",a[i]);
}
(1)程序中的fun函数被调用( 36 )次。
36(A)6 (B)5 (C)4 (D)3
(2)程序的运行结果是( 37 )。
37(A)123456 (B)456123 (C)135246 (D)654321
10.读程序,回答问题。
#include
main(intargc,char*argv[])
{FILE*fp;
intfun(FILE*);
intnum,i=1;
while(--argc>0)
if((fp=fopen(argv[i++],"r"))==NULL)
{ printf("Cannotopenfile!
\n");
exit(0);
}
else{num=fun(fp); fclose(fp); }
printf("num=%d\n",num);
}
intfun(FILE*fp)
{ staticintcount=0;
charc;
c=fgetc(fp);
while(c!
=EOF)
{ if(c>='0'&&c<='9')count++;
c=fgetc(fp);
}
return(count);
}
上述C程序经编译、连接后生成一个名为2_3.exe的可执行文件,假设盘上有两个文本文件file1.dat和file2.dat,file1.dat的内容为123abc,file2.dat的内容为xyzABC987。
(1)若在DOS提示符下键入:
2_3file1.datfile2.dat<回车>,则程序的运行结果为( 38 )。
38(A)num=3 (B)num=4(C)num=5 (D)num=6
(2)若将fun函数中对count的定义staticintcount=0;改为intcount=0;其余条件不变,则在DOS提示符下键入:
2_3file1.datfile2.dat<回车>,则程序的运行结果为( 39 )。
39(A)num=3 (B)num=4(C)num=5 (D)num=6
(3)若将fun函数中对count的定义staticintcount=0;改为intcount;其余条件不变,则在DOS提示符下键入:
2_3file1.datfile2.dat<回车>,则程序的运行结果为( 40 )。
40(A)num=4 (B)num=5(C)num=6 (D)随机值
四川省计算机等级考试二级C语言笔试题(第二十一次)三
2009-03-2915:
23:
02
注意:
①请把下面“程序填空”中各小题答案写在主观题答题纸上
②每一个空只填一个语句或一个语句所缺的部分内容
三、程序填空(每空2分,共30分)
1.以下程序能创建一张包含有4名学生信息的单向链表并输出。
#include
#include
#defineLENsizeof(structstudent)
structstudent
{ intdata;
① ;
};
intnum=1;
structstudent*creat()
{ structstudent*head,*p1,*p2;
head=p1=p2=(structstudent*)malloc(LEN);
scanf("%d",&p1->data);
while(num<4)
{ p1=(structstudent*)malloc(LEN);
scanf("%d",&p1->data);
② ;
p2=p1;
num++;
}
p2->next=NULL;
return(head);
}
main()
{ structstudent*head,*p;
head=creat();
p=head;
if(head!
=NULL)
do{ printf("%d",p->data);
③ ;
}while(p!
=NULL);
}
2.下面程序功能是在一个字符串中找出最大的字符并放在第一个位置上,并将该字符前的原字符往后顺序移动,如:
cbyab变成ycbab。
#include
#include
main()
{ charstr[80],*p=str,*q,max;
gets(p);
max=*(p++);
while(*p!
=0)
{ if(max<*p)
{ max=*p;
① ;
}
p++;
}
p=q;
while(② )
{ *p=*(p-1);p--;}
③ ;
puts(p);
}
3.以下程序能统计低于平均成绩的人数,并将低于平均成绩的分数存放到below数组中。
#include
intfun(intscore[],intm,intbelow[])
{ inti,k=0,aver=0;
for(i=0;i ① ;
aver/=m;
for(i=0;i if(score[i] { ② ;
k++;
}
return(k);
}
main()
{ inti,n,below[9];
intscore[9]={10,20,30,40,50,60,70,80,90};
n=③ ;
printf("%d\n",n);
printf("Belowtheaveragesc