}
(1)该程序运行结束时,k的值是(32)。
32(A)8(B)7(C)6(D)5
(2)该程序的输出结果是(33)。
33(A)a=4,b=5,c=4,d=1(B)a=4,b=9,c=3,d=1
(C)a=3,b=6,c=4,d=1(D)a=8,b=8,c=8,d=8
5.下列程序运行的结果为(34)。
#include"stdio.h"
voidfun(char*s)
{chart;
if(*s)
{t=*s++;fun(s);
if(t!
='\0')
putchar(t);
}
}
voidmain()
{char*a="1234";
fun(a);
}
34(A)1234(B)4321(C)1324(D)4231
6.读下列程序,回答问题。
#include"stdio.h"
voidsub1(chara,charb)
{charc;
c=a;a=b;b=c;
}
voidsub2(char*a,charb)
{charc;
c=*a;*a=b;b=c;
}
voidsub3(char*a,char*b)
{charc;
c=*a;*a=*b;*b=c;
}
voidmain()
{chara,b;
a='A';b='B';
sub3(&a,&b);putchar(a);putchar(b);
sub2(&a,b);putchar(a);putchar(b);
sub1(a,b);putchar(a);putchar(b);
}
(1)程序中调用完函数sub3后,输出为(35)。
35(A)AB(B)ABBA(C)BA(D)BAAB
(2)该程序的最终输出结果为(36)。
36(A)ABBBAB(B)ABBBBB(C)BABABA(D)BAAAAA
7.读以下程序,并回答问题。
#include
unionbt
{
inta;
intb[2];
}
voidfun(unionbt*c)
{
c->a=-7;
c->b[0]=9;
c->b[1]=8;
};
voidmain()
{
unionbtc;
fun(&c);
printf("%d\n",c.a);
}
(1)程序的输出结果为(36)。
36(A)8(B)9(C)-7(D)7
(2)若将程序中的所有的union换成struct,则程序的输出结果为(37)。
37(A)8(B)9(C)-7(D)7
8.读程序,回答问题。
#include
#include
voidmain(intargc,char*argv[])
{
FILE*fp;
voidfun(FILE*fp);
inti=1;
while(--argc>0)
if((fp=fopen(argv[i++],"r"))==NULL)
{printf("Cannotopenfile!
\n");
exit(0);
}
else{fun(fp);fclose(fp);}
}
voidfun(FILE*fp)
{
charc;
c=fgetc(fp);
while((c!
=EOF))
{if(c>='A'&&c<='Z')putchar(c);
elseif(c>='a'&&c<='z')putchar(c-('a'-'A'));
c=fgetc(fp);
}
}
上述C程序经编译、连接后生成一个可执行文件,文件名为ex2_8。
假设磁盘上有两个文本文件file1.txt和file2.txt,file1.txt的内容为SiChuan,file2.txt的内容为Test。
若在DOS提示符下键入:
ex2_8file.txtfile2.txt<回车>,则程序的运行结果为(39)。
39(A)SICHUAN(B)SICHUANTEST(C)SiChuanTest(D)TEST
9.下面程序的输出是(40)。
#include"stdio.h"
intfun(charvalue,intn)
{value>>=n-1;
value&=0x01;
return(value);
}
voidmain()
{charc=13;
printf("%d\n",fun(c,2));
}
40(A)13(B)1(C)3(D)0
注意:
①请把下面“程序填空”中各小题答案写在主观题答题纸上
②每一个空只填一个语句或一个语句所缺的部分内容
三、程序填空(每空2分,共30分)
1.下面程序是一个求数组元素之和的程序。
主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。
函数Sum计算数组元素之和。
请完成下列程序。
#include
intTotalSum(int[],int);
voidmain()
{inta[5]={2,3,6,8,10};
intTotal;
Total=①;
count<<"Aumofarray:
"②<}
intTotalSum(intarray[],intlen)
{intsum=0;
for(inti=0;i③;
returnsum;
}
2.输入一个8位二进制数,将其转换为十进制数输出。
#include"iostream.h"
doublepower(doublex,intn);
voidmain(void)
{inti;
intvalue=0;
charch;
cout<<"Enteran8bitbinarynumber";
for(i=7;i>=0;i--)
{cin>>ch;
if(①)
value+=②;
}
cout<<"decimalvalueis"<}
doublepower(doublex,intn)
{doubleval=1.0;
while(n--)
③;
return(val);
}
3.以下程序是判断输入的字符串是否是“回文”(顺读和倒读都一样的字符串叫回文,如level),请填空。
#include"stdio.h"
#include"string.h"
voidmain()
{
chars[81],*p1,*p2;
intn;
gets(s);
n=strlen(s);
p1=s;
p2=①;
while(②)
{if(*p1!
=*p2)break;
else{p1++;③;}
}
if(p1elseprintf("Yes\n");
}
4.下面程序功能是检查一个4阶矩阵是否对称(即对所有的i,j,都有num[i][j]=num[j][i]),请填空。
#include
voidmain()
{
intnum[4][4];
inti,j,flag=0;
printf("Inputarraynum:
\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",①);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(②)
{flag=1;break;}
if(③)printf("No\n");
elseprintf("Yes\n");
}
5.下面程序的功能是从键盘输入一字符串,将该字符串与一广西文件进行比较,打印出也之相同的行的等号和内容。
voidcomp()用于文件的比较,文件名用命令行参数提供。
请填空。
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
FILE*fp;
voidcomp(char*string)
{intline=0;
charstr[100];
①
{fgets(str,100,fp);
str[strlen(str)-1]='\0';
line++;
②
printf("%d:
%s\n",line,str);
}
}
voidmain(intargc,char**argv)
{
charstring[100];
if(argc!
=2)
{printf("Error\n");
exit(0);
}
if(fp=③)==NULL)
{printf("Can'topenfile%s!
\n",argv[1]);
exit(0);
}
printf("Pleaseinputthestring:
\n");
gets(string);
comp(string);
fclose(fp);
}
第十九次等级考试
二级(C与C++语言)笔试试卷
(参考答案)
第一部分软件技术基础
一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)
1~10:
A、B、A、B、B、B、A、A、A、B
二、单项选择题:
(每小题1分,共5分)
1~5:
C、B、D、D、A
第二部分C与C++语言程序设计
一、单项选择题(每小题1分,共10分)
1、B2、A3、D4、D5、A
6、C7、D8、B9、A10、B
二、读程序题(每个选择3分,共45分)
1、
(1)D
(2)B2、
(1)C
(2)D3、
(1)A
(2)D
4、
(1)C
(2)C5、B6、
(1)C
(2)D
7、
(1)B
(2)C8、D9、D
三、程序填空题(每空2分,共30分)
1、①TotalSum(a,5)②Total③sum+=array[i]
2、①ch=='1'②power(2,i)③val=val*x
3、①s+n-1②*p1!
='\0'③p2--
4、①&num[i][j]②num[i][j]!
=num[j][i]③flag==1
5、①while(!
feof(fp))②if(strcmp(str,string)==0)③fopen(argv[1],"r")