四川省二级C语言24次考试试题.docx

上传人:b****6 文档编号:8680299 上传时间:2023-02-01 格式:DOCX 页数:24 大小:40.49KB
下载 相关 举报
四川省二级C语言24次考试试题.docx_第1页
第1页 / 共24页
四川省二级C语言24次考试试题.docx_第2页
第2页 / 共24页
四川省二级C语言24次考试试题.docx_第3页
第3页 / 共24页
四川省二级C语言24次考试试题.docx_第4页
第4页 / 共24页
四川省二级C语言24次考试试题.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

四川省二级C语言24次考试试题.docx

《四川省二级C语言24次考试试题.docx》由会员分享,可在线阅读,更多相关《四川省二级C语言24次考试试题.docx(24页珍藏版)》请在冰豆网上搜索。

四川省二级C语言24次考试试题.docx

四川省二级C语言24次考试试题

四川省普通高等学校计算机应用知识和能力

第二十四次等级考试

二级(C与C++语言)笔试试卷

时间:

2006年4月15日

上午9:

00—11:

00

第一部分

软件技术基础

(共15分)

一、是非判断题(每小题1分,共10分)

(判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B)

1.顺序表和线性链表的物理存贮形式都是顺序存贮。

(1)

2.数据类型是某种程序设计语言中已实现的数据结构。

(2)

3.如果通过软件测试没有发现错误,则说明软件是完全正确的。

(3)

4.快速原型模型可以有效地适应用户需求的动态变化。

(4)

5.不同进程之间的动作在时间上不能重叠。

(5)

6.分区式存储管理能够进行存储空间共享。

(6)

7.链接文件和索引文件都可以非连续存放。

(7)

8.中断处理一般分为中断响应和中断处理两个步骤。

前者由软件实施,

后者主要由硬件实施。

(8)

9.在C++语言中,“重载”表达了最简单的多态性。

(9)

10.进程调度根据一定的调度算法,从等待队列中挑选出合适的进程。

(10)

二、选择题(每小题1分,共5分)

1.在数据结构中,一个存储结点存放一个(11)。

11(A)数据项(B)数据元素(C)数据结构(D)数据类型

2.把逻辑地址转变为存储的物理地址的过程称作(12)。

12(A)编译(B)连接(C)运行(D)重定位

3.SPOOLing技术可以实现设备的(13)分配。

13(A)虚拟(B)共享(C)独占(D)物理

4.允许用户把若干作业提交计算机系统集中处理的操作系统称为(14)。

14(A)分时操作系统(B)实时操作系统

(C)网络操作系统(D)批处理操作系统

5.进程从运行状态进入就绪状态的原因可能是(15)。

15(A)被选中占有处理机(B)时间片用完

(C)等待的事件已发生(D)等待某一事件

第二部分

C与C++语言程序设计

(共85分)

一、单项选择题(每小题1分,共10分)

1.以下能正确进行字符串赋值的是(16)。

16(A)chars[5]={'a','e','i','o','u'};(B)chars[5];s="good";

(C)chars[5]="abcd";(D)chars[5];s[]="good";

2.有下面的说明和语句,则输出的结果是(17)。

chara=9,b=020;

printf("%o\n",~a&b<<1);

17(A)0377(B)040(C)32(D)以上答案均不对

3.若有floatx;则sizeof(x)和sizeof(float)两种描述(18)。

18(A)都正确(B)都不正确

(C)前者正确,后者不正确(D)后者正确,前者不正确

4.若有代数式

,则不正确的C语言表达式是(19)。

19(A)3*a*e/b*c(B)3*a*e/b/c(C)a/b/c*e*3(D)a*e/c/b*3

5.下列程序运行的结果是(20)。

main()

{structcmplx{intx;

inty;

}cnum[2]={1,3,2,7};

printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);

}

20(A)0(B)1(C)3(D)6

6.若有以下说明和语句,且0<=i<10,则(21)是对数组元素的错误引用。

inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;

p=a;

21(A)*(a+i)(B)a[p-a](C)p+i(D)*(&a[i])

7.设有以下宏定义:

#defineM2

#defineX(m)((M+2)*m)

则执行语句:

z=2*(M+X(3+2);后,z的值为(22)。

22(A)44(B)45(C)32(D)33

8.下列函数定义中,会出现编译错误的是(23)。

23(A)fun(intx,inty)(B)fun(intx,inty,int*z)

{intz;{z=(x>y)?

x:

y;

z=(x>y)?

x:

y;returnz;

returnz;}}

(C)intfun(intx,inty)(D)fun(intx,inty,int*z)

{return((x>y)?

x:

y);}{*z=(x>y)?

x:

y;}

9.下面C++的语句(24)能实现printf("%d,%d\n",a,b);的功能。

24(A)cin>>a>>,>>b(B)cin>>a>>b

(C)cout<

10.在如下程序段中的while循环(25)。

intk=0;

while(k=1)k++;

25(A)有语法错,不能执行(B)无限循环

(C)一次都不执行(D)执行一次

二、读程序回答问题(每个选择3分,共45分)

1.下列程序运行的结果为(26)。

#include

main()

{intk=0;

charc='A';

do

{switch(c++)

{case'A':

k++;break;

case'B':

k--;

case'C':

k+=2;break;

case'D':

k=k%2;continue;

case'E':

k=k*10;break;

default:

k=k/3;

}

k++;

}while(c<'G');

printf("k=%d",k);

}

26(A)k=1(B)k=2(C)k=3(D)k=4

2.读程序并回答问题。

#include

voidfun(char*p,intn)

{inti;

if((i=n/10)!

=0)fun(p+1,i);

*p=n%10+'0';

}

voidmain()

{intnum;

charstr[10]="";

scanf("%d",&num);

fun(str,num);

puts(str);

}

若输入整数3567,请回答下列两个问题。

(1)程序中的fun函数被调用的次数为(27)。

27(A)3(B)4(C)5(D)6

(2)程序的运行结果为(28)。

28(A)3567(B)5673(C)6753(D)7653

3.阅读如下程序:

#include

abc(s,t,k)

int*s,t,*k;

{intp;

for(p=0,*k=p;p

if(s[p]>s[*k])*k=p;

}

main()

{inta[10],i,k;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

abc(a,10,&k);

printf("%d,%d\n",k,a[k]);

}

以上程序的功能是(29):

29(A)查询并输出数组中最大值的位置及最大值

(B)查询并输出数组中最小值的位置及最小值

(C)计算数组中各元素之和

(D)计算数组中各元素之乘积

4.读下列程序并回答问题。

#include

voidmain(intargc,char*argv[])

{charch;

FILE*in,*out;

if(argc!

=3)

exit

(1);

if((out=fopen(argv[1],"r"))==NULL)

{printf("Cannotopenthefile.\n");

exit(0);

}

if((in=fopen(argv[2],"w"))==NULL)

{printf("Cannotopenthefile.\n");

fclose(out);

exit(0);

}

while((ch=fgetc(out))!

=EOF)

if(ch>='a'&&ch<='z')

{ch='A'+ch-'a';

fputc(ch,in);

}

elsefputc(ch,in);

fclose(in);

fclose(out);

}

上述C程序经编译、连接后生成一个可执行文件,文件名为myfile.exe。

假设磁盘上有一个文件file1.dat,其内容为Thisisanexample,若在DOS提示符下键入:

myfilefile1.datfile2.dat<回车>,请回答下面两个问题。

(1)按上述要求运行后,文件file1.dat的内容为(30)。

30(A)Thisisanexample(B)THISISANEXAMPLE

(C)thisisanexample(D)ThisIsAnExample

(2)按上述要求运行后,文件file2.dat的内容为:

(31)。

31(A)Thisisanexample(B)THISISANEXAMPLE

(C)thisisanexample(D)ThisIsAnExample

5.阅读如下程序:

main()

{charch[2][5]={"6934","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)

p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]>'0'&&p[i][j]<='9';j+=2)

s=10*s+p[i][j]-'0';

printf("%d\n",s);

}

程序运行的结果是(32):

32(A)6385(B)69825(C)63825(D)693825

6.下列程序运行的结果为(33)。

#include

fun(intx,inty,int*cp,int*dp)

{*cp=x+y;

*dp=x-y;

}

main()

{inta,b,c,d;

a=30;b=50;

fun(a,b,&c,&d);

printf("%d,%d\n",c,d);

}

33(A)50,30(B)30,50(C)80,-20(D)80,20

7.读下列程序,回答问题。

#include

voidf(ints[][4])

{inti,j,k;

for(i=0;i<3;i++)

for(j=i+1;j<4;j++)

{k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;}

}

main()

{ints[4][4],i,j;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

s[i][j]=i-j;

f(s);

for(i=0;i<4;i++)

{printf("\n");

for(j=0;j<4;j++)

printf("%4d",s[j][i]);

}

}

(1)程序的运行结果是(34)。

34(A)

(B)

(C)

(D)

(2)若将函数f中的for(j=i+1;j<4;j++)改为for(j=0;j<3-i;j++)运行结果是(35)。

35(A)

(B)

(C)

(D)

8.阅读程序回答问题:

main()

{inti,j,k,m=0;

for(i=1;i<4;i++)

for(j=1;j<4;j++)

for(k=1;k<4;k++)

m++;

printf("M=%d",m);

}

(1)以上程序输出M=(36)。

36(A)3(B)6(C)9(D)27

(2)如果在以上程序中语句m++;之前增加一条语句:

if(!

(i==j||i++k||j++k)),则输出M=(37)。

37(A)3(B)6(C)9(D)27

9.下列程序运行的结果为(38)。

#include

main()

{voidpic(intlen,charc);

inti=4,j;

pic(27,'');

j=i;

pic(i+2*j-1,'*');

putchar('\n');

for(j=2;j>=0;j--)

{pic(30-j,'');

pic(i+2*j,'*');

putchar('\n');

}

}

voidpic(intlen,charc)

{intk;

for(k=1;k<=len;k++)

putchar(c);

}

38(A)(B)(C)(D)

*************************

***************************

*****************************

*******************************

10.读程序,回答问题。

#include

char*cat(char*str1,char*str2)

{char*pt;

for(pt=str1;*pt!

='\0';pt++);

while(*str2!

='\0')

*pt++=*str2++;

*pt='\0';

return(pt);

}

main()

{char*p,s1[30]="210",s2[30]="45";

p=cat(s1,s2);

printf("%d\n",p-s1);

p=cat(s1,s2);

printf("%d\n",*(p-1)-*s1);

}

(1)本程序中第一次调用cat函数后,输出为(39)。

39(A)2(B)3(C)5(D)7

(2)本程序中第二次调用cat函数后,输出为(40)。

40(A)2(B)3(C)5(D)7

注意:

①请把下面“程序填空”中各小题答案写在主观题答题纸上

②每一个空只填一个语句或一个语句所缺的部分内容

三、程序填空(每空2分,共30分)

1.下面程序的功能是:

将给定的整数x按指定的位置插入已有的10个整数序列并输出,插入操作在被调函数insert中完成。

(指定的位置应大于等于0且小于等于10)

#include

voidinsert(①,inti,intx)

{intj;

for(j=9;j>=i;j--)

②;

p[i]=x;

}

voidmain()

{inti,a[11]={1,2,3,4,56,7,8,9,10},wz,x;

printf("Inputtheinsertingposition,>=0&<=10\n");

scanf("%d",&wz);

printf("Inputainsertingdata\n");

scanf("%d",&x);

③;

for(i=0;i<=10;i++)

printf("%d",a[i]);

}

2.函数fun的功能是求x的y次方(y>=1),请填空。

doublefun(doublex,inty)

{①;

doublez;

for(i=1,z=1;②;i++)

z=z*x;

③;

}

3.下面程序的功能是:

从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。

请填空。

main()

{floatx,max,min;

scanf("%f",&x);

max=x;

min=x;

while(①)

{if(x>max)max=x;

if(②)min=x;

scanf("%f",③);

}

printf("\nMax=%f\nMin=%f\n",max,min);

}

4.下面程序是利用插入排序法对数组a进行降序排列。

插入排序的思路是:

先对数组的头两个元素进行排序,然后把第三个元素插入已排好序的前两个元素,再插入第四个,依次完成全部元素的插入排序。

请填空。

#include

voidmain()

{inta[10];

inti,j,t;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=1;i<10;i++)

{t=a[i];

j=①;

while(j>=0&&t>a[j])

{②;

j--;

}

③;

}

for(i=0;i<10;i++)

printf("%4d",a[i]);

printf("\n");

}

5.下面程序从一个二进制文件中读入结构体数据,并把结构体数据显示在屏幕上。

请填空。

#include

structrec

{intnum;

floattotal;

};

reout(①)

{structrecr;

while(!

feof(f))

{fread(&r,②,1,f);

printf("%d,%f\n",③);

}

}

voidmain()

{FILE*f;

f=fopen("bin.dat","rb");

reout(f);

fclose(f);

}

 

四川省普通高等学校计算机应用知识和能力

第二十四次等级考试

二级(C与C++语言)上机考试试卷(第一套)参考答案

一、程序调试题(文件名为test1-1.c)(40分)

#include

voidspacenum(char*a,int*n)

{

inti;

n=0;/*改为*n*/

for(i=0;i

='\0'*/

if(*(a+i)=='')

*n++;/*改为(*n)++*/

}

main()

{

charstr[100];

intcount;

puts(str);/*改为gets(str)*/

spacenum(str,count);/*改为&count*/

printf("space=%d\n",count);

}

评分标准:

每改对一处得8分

二、编程题(程序文件取名为test1-2.c)(60分)

评分标准:

1.found函数编写30分:

(1)函数定义、形参书写正确(10分)

(2)函数中能正确求出同构烽,并存入一维数组中,能正确返回函数值(20分)

2.main函数30分:

(1)正确定义实参一维数组,并能正确调用found函数(10分)

(2)文件打开和操作正确(10分)

(3)输出结果正确(10分)

参考程序:

#include

intfound(inta[])

{inti;

intn=0;

for(i=1;i<100;i++)

{if(i*i%10==i||i*i%100==i)

{a[n]=i;

n++;

}

}

returnn;

}

voidmain()

{inta[10];

intcount,i;

FILE*fp;

if((fp=fopen("test1_2.dat","w"))==NULL)

{printf("Cannotopenthefile.\n");

exit(0);

}

count=found(a);

for(i=0;i

{printf("%4d",a[i]);

fprintf(fp,"%4d",a[i]);

if((i+1)%5==0)

{printf("\n");

fprintf(fp,"\n");

}

}

printf("\n");

fprintf(fp,"\n");

printf("count=%d\n",count);

fprintf(fp,"count=%d\n",count);

fclose(fp);

}

四川省普通高等学校计算机应用知识和能力

第二十四次等级考试

二级(C与C++语言)上机考试试卷(第二套)参考答案

一、程序调试题(文件名为test2-1.c)(40分)

磁盘上有一个名为text2-1.c的C程序,其功能是:

统计一个无符号整数各位数值为零的个数,并把该无符号整数各位上最大的数值作为函数值返回。

例如:

若输入无符号整数30800,则数字值为零的个数为3,各位上数值最大的是8。

请改正程序中错误,使其能输出正确结果。

注意:

不得增加行或删除行,不得更改main函数和原程序结构。

#include

intfun(unsignedn,intzero)/*改为*zero*/

{

intcount=0,max=0,t;

do

{t=n/10;/*改为n%10*/

if(t=0)/*改为t==0*/

count++;

if(max

max=t;

n=n%10;/*改为n/10*/

}while(n);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1