}
(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++语言)笔试试卷
时间:
2004年4月10日
上午9:
00—11:
00
第一部分
软件技术基础
(共15分)
一、是非判断题(每小题1分,共10分)
1.数据元素是数据的基本单位,数据项是数据的最小单位。
(1)
2.栈是特殊的线性表,须用一组地址连续的存储单元来存储其元素。
(2)
3.引入虚拟存储技术后,逻辑内存总容量是由地址总线的位数确定的。
(3)
4.编译程序是一种常用的应用软件。
(4)
5.顺序文件和链接文件的长度都可以动态变化。
(5)
6.在文件系统中彩目录管理文件。
(6)
7.允许多用户在其终端上同时交互地使用计算机的操作系统称为实时系统。
(7)
8.程序、数据、和程序控制块是构成一个进程的三要素。
(8)
9.黑盒测试时,既要考虑程序的内部逻辑结构又要考虑其外部特性。
(9)
10.软件的总体设计和详细设计都要用PAD图形工具。
(10)
二、单项选择题(每小题1分,共5分)
1.允许用户把若干作业提交计算机系统集中处理的操作系统称为(11)。
11(A)分时操作系统(B)实时操作系统
(C)网络操作系统(D)批处理操作系统
2.分配到必要资源并获得了处理机时的进程的状态称为(12)。
12(A)就绪状态(B)执行状态(C)等待状态(D)阻塞状态
3.利用通道技术可以在(13)之间直接交换数据。
13(A)内存与CPU(B)CPU与外设
(C)内存与外设(D)内存、CPU和外设三者
4.以下的准则中哪个不是软件设计的准则(14)。
14(A)编程语言选择准则(B)信息屏蔽准则
(C)结构化和模块化准则(D)抽象准则
5.有一数列:
97657613294958经过一趟排序后得到:
65971376294958请问使用的是何种排序方法(15)。
15(A)简单插入排序(B)冒泡排序
(C)2路归并排序(D)快速排序
第二部分
C与C++语言程序设计
(共85分)
一、单项选择题(每小题1分,共10分)
1.定义如下枚举类型:
enumDay{Monday,Tuesday,Wednesday,Thursday,Friday=2};
则下列语句正确的是(16)。
16(A)表达式Wednesday==Friday的值是true
(B)enumDayday;day=3;
(C)enumDayday;day=Tuesday-3;
(D)enumDayday;day=Monday+10;
2.下列程序片段的输出结果是(17)。
intm=4;
do
{printf("