四川计算机C语言考试笔试真题32次含答案.docx
- 文档编号:30206960
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:18
- 大小:29.08KB
四川计算机C语言考试笔试真题32次含答案.docx
《四川计算机C语言考试笔试真题32次含答案.docx》由会员分享,可在线阅读,更多相关《四川计算机C语言考试笔试真题32次含答案.docx(18页珍藏版)》请在冰豆网上搜索。
四川计算机C语言考试笔试真题32次含答案
四川省普通高等学校计算机应用知识和能力
第三十二次等级考试
二级(C与C++语言)笔试试卷
时间:
2010年4月17日
上午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.软件危机是由于软件产品过多而产生的。
(9)
10.面向过程系统需求分析使用的主要工具是数据流图和数据字典。
(10)
二、选择题(每小题1分,共5分)
1.进程从运行状态进入就绪状态的原因可能是(11)。
11(A)时间片用完(B)等待某一事件
(C)等待的事件已发生(D)被选中占有处理机
2.需求分析中开发人员主要从用户那里了解(12)。
12(A)软件怎样做(B)软件做什么
(C)输入的信息(D)软件的测试
3.队列的操作原则是(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.若x和y为double类型,则表达式x=1,y=x+3/2的值为(16)。
(考点:
数据类型、运算符)
16(A)1(B)2(C)2.0(D)2.5
2.如果a,b,c,x,y均为int型变量,x=5,y=10,则执行下面语句后,a,b,c的值分别为(17)。
a=(--y==x++)?
--y:
++x;(考点:
数据类型、运算符)
b=y++;
c=x;
17(A)a=7,b=9,c=7(B)a=7,b=9,c=6
(C)z=6,b=9,c=7(D)z=6,b=9,c=6
3.执行下面语句段的输出结果是(18)。
(考点:
逻辑运算符)
inti=1,j=1,k=2;
if((j++||k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
18(A)1,1,2(B)2,2,1(C)2,2,2(D)2,2,3
4.若要求表示“a不等于0”的关系,则不能正确表示这一关系的表达式为(19)。
(考点:
关系运算)
19(A)a<>0(B)a(C)a>0||a<0(D)a!
=0
5.若有说明inta,*p=&a;则scanf("%d",*p);语句不能正确为变量赋值的原因是(20)。
(考点:
指针)
20(A)*p表示的是指针变量p的地址
(B)*p表示的是变量a的值,而不是变量a的地址
(C)*p表示的是指针变量p的值
(D)*p只是用来说明p是一个指针变量
6.若有如下说明,则能使指针变量p的值增加的表达式是(21)。
(考点:
结构体指针)
structws
{inta;
int*b;
}*p;
21(A)++p->a(B)p->b++(C)p->a++(D)(p++)->a
7.以下能对二维数组a进行正确初始化的是(22)。
(考点:
二维数组)
22(A)inta[2][]={{1,0,1},{5,2,3}};(B)inta[][3]={{1,2,3},{4,5,6}};
(C)inta[2][4]={{1,2,3},{4,5},{6}};(D)inta[][3]={{1,0,1},{},{1,1}};
8.有以下结构体说明和变量定义:
(考点:
链表操作)
structnode
{intdata;
Structnode*next;
}*p,*q,*r;
建立如图所示的链表结构,指针变量p、q分别指向如图所示的结点,指针变量r指向一新结点,则可以实现将r指向的结点插入到p、q所指结点之间的语句组是(23)。
23(A)q=r;p->next=q->next;(B)p->next=r;r->next=p->next;
(C)r->next=q;p->next=r;(D)p=r;r->next=q;
9.以下程序的运行结果为(24)。
(考点:
宏定义)
#define
#definePT3.5
#defineS(x)PT*x*x
voidmain()
{inta=1,b=2;
printf("%4.1f\n",S(a+b));
}
24(A)14.0(B)31.5(C)7.5(D)10.5
10.下面程序段的运行结果为(25)。
(考点:
位运算)
inta=9,b=020;
printf("%o\n",~a&b<<1);
25(A)40(B)41(C)42(D)43
二、读程序回答问题(每个选择3分,共45分)
1.有如下程序:
(考点:
字符数组、函数(地址参数))
intcount(char*str,charsubstr[20])
{inti,j,k,num=0;
for(i=0;*(str+i)!
='\0';i++)
{j=i;
k=0;
while(substr[k]==str[j])
{k++;j++;
}
if(substr[k]=='\0')
num++;
}
returnnum;
}
voidmain()
{
charstr[80],substr[20];
gets(str);
gets(substr);
printf("%d\n",count(str,substr));
}
(1)若运行程序时输入abcdabad和ab两个字符串,则输出结果为(26)。
26(A)3(B)4(C)2(D)11
(2)该程序的功能是(27)。
27(A)比较两个字符串str和substr的大小
(B)统计子串substr在母串str中出现的次数
(C)将子串substr复制到母串str中
(D)统计两个字符串中字符的总个数
2.有下列程序(考点:
函数)
#include
intfun(inta,intb)
{staticc=0;
if(a>b)c=c+a;
elsec=c+b;
returnc;
}
voidmain()
{
inta=2,b=5,c=6,d;
d=fun(2*a,fun(b,c));
printf("%d",d);
}
(1)fun(2*a,fun(b,c))的函数调用中,实参的个数为(28)。
28(A)1(B)2(C)3(D)4
(2)程序的运行结果是(29)。
29(A)6(B)10(C)12(D)15
3.有下列程序(考点:
带参数的宏定义)
#include
#defineM(x,y)((x%y==1)?
1:
0)
intfun(int*a,intn)
{
inti,s=0;
for(i=0;i if(M(a[i],2)&&M(a[i],3))s=s+a[i]; returns; } voidmain() { inta[]={1,2,3,4,5,6,7}; printf("%d\n",fun(a,7)); } (1)宏调用M(a[i],2)&&M(a[i],3)为真时所要表达的是(30)。 30(A)判断a[i]是否能被2或3整除 (B)判断a[i]是否能被2和3整除 (C)判断a[i]被2或3整除时,是否至少有一种情况余1 (D)判断a[i]被2和3整除时,是否都余1 (2)程序的运行结果是(31)。 31(A)15(B)6(C)16(D)8 4.有下列程序(考点: 函数(地址参数)、指针运算) #include"stdio.h" voidprt(int*x,int*y,int*z) { printf("%d,%d,%d\n",++*x,++*y,*(z++)); } voidmain() { inta=10,b=40,c=20; prt(&a,&b,&c); prt(&a,&b,&c); } (1)第一次调用函数prt的运行结果是(32)。 32(A)11,42,31(B)11,41,20(C)11,21,40(D)11,41,21 (2)第二次调用函数prt的运行结果是(33)。 33(A)12,42,20(B)12,22,41(C)11,21,41(D)12,42,22 5.有如下程序(考点: 全局变量和局部变量、函数(地址参数)、) #include intb=1; intfun(int*a) { intb=0; b=b+a[0]; returnb; } voidmain() { inta[]={1,2,3,4,5,6},i; for(i=0;i<2;i++) { b=b+fun(a+i); printf("%d",b); } } (1)程序的运行结果是(34)。 34(A)24(B)412(C)23(D)410 (2)若将函数fun中的定义“intb=0;”去掉,则程序的运行结果为(35)。 35(A)24(B)412(C)23(D)410 6.有如下程序(考点: 字符数组、函数(地址参数)、逻辑表达式) #include voidfun(char*s,char*t1,char*t2) { inti,j=0; for(i=0;s[i]! ='\0';i++) { if(i%2&&(s[i]>='a'&&s[i]<='z')) t1[i]=s[i]-'a'+'A'; else t1[i]=s[i]; if(s[i]>='0'&&s[i]<='9') { t2[j]=s[i]; j++; } } t1[i]=t2[j]='\0'; } voidmain() { chars[20]="2abcde3fg45",t1[20],t2[20]; fun(s,t1,t2); puts(t1); puts(t2); } (1)程序中第一个puts的输出结果为(36) 36(A)abcdefg(B)2345(C)2AbCdE3Fg45(D)2aBcDe3fG45 (2)程序中第二个puts的输出结果为(37) 37(A)abcdefg(B)2345(C)2AbCdE3Fg45(D)2aBcDe3fG45 7.有如下程序: (考点: 命令行参数、宏定义、条件运算符) #include #defineIsAlpha(c)c>='a'&&c<='z'? 1: 0 voidmain(intargc,int**argv) { char*str,cx; intcn=0; if(argc<2) return; str=(*++argv); while(*str) { cx=(*str++); if(IsAlpha(cx)) cn++; } printf("%d\n",cn); } 若上述程序经编译连接后形成的可执行文件名为: 2-8.exe (1)当输入命令行: 2-8.exe2abHcabA2时,输出为(38)。 38(A)5(B)3(C)1(D)2 (2)上述程序的功能是(39)。 39(A)命令行第一参数2abHc中出现的小写字母个数 (B)命令行第一参数2abHc中出现的大写字母个数 (C)命令行第二参数abA2中出现的小写字母个数 (D)命令行第二参数abA2中出现的大写字母个数 8.有如下程序: (考点: 文件、大小写字母转换方法) #include voidmain() { charch; FILE*fp; if((fp=fopen("test.dat","r+"))==NULL) { printf("Cannotopenfile.\n"); exit(0); } ch=fgetc(fp); while(ch! =EOF) { if(ch>='a'&&ch<='z') ch-=32; elseif(ch>='A'&&ch<='Z') ch+=32; putchar(ch); ch=fgetc(fp); } fclose(fp); } 若磁盘文件test.dat中的内容为ab12HD,则程序运行结果为(40)。 40(A)ab12HD(B)Ab12hD(C)aB12Hd(D)AB12hd 注意: ①请把下面“程序填空”中各小题答案写在主观题答题纸上 ②每一个空只填一个语句或一个语句所缺的部分内容 三、程序填空(每空2分,共30分) 1.以下程序能计算数列1/2,3/4,1/6,3/8,1/10,3/12…的前15项之和。 请填空。 (考点: 序列处理算法) #include #defineN15 voidmain() { inti; doublesum=0.0,a,b=0.0; for(i=0;i { if(①) a=②; else a=1.0; b+=2.0; sum+=③; } printf("1/2+3/4+1/6...+1/30=%f\n",sum); } 2.一结构体数组中放置了10名学生的学号和成绩(成绩互不相同),程序功能是求出学生的最高分,输出他的学号和成绩。 请填空。 (考点: 结构体数组、求最值算法) #include typedefstructsutdent { charno[10]; intscore; }ST; voidmain() { STs[10]={{"A01",65},{"A02",70},{"A03",60},{"A04",84},{"A05",82}, {"A06",90},{"A07",75},{"A08",72},{"A09",95},{"A10",93}}; intmax,i,maxi; max=s[0].score; maxi=0; for(i=1;i<10;i++) if(s[i].score①max) { max=②; maxi=③; } printf("Max: No%s;Score%d\n",s[maxi].no,s[maxi].score); } 3.insert()函数在一维数组y中把x插到下标为i的元素之前,i≥0。 如果i大于等于元素个数则插在末尾。 原有的元素个数存放在指针变量n所指的变量中。 请填空。 (考点: 数组、插入元素算法) #include #defineN11 voidinsert(inty[],int*n,intx,inti) { intj; if(i<*n) for(j=*n-1;①;j--) ②=y[j]; else i=*n; y[i]=③; (*n)++; } voidmain() { inty[N]={0,1,2,3,4,5,6,7,8,9},x,i,*n,j; j=N-1; printf("\nPleaseinputx: "); scanf("%d",&x); printf("\nPleaseinputi: "); scanf("%d",&i); insert(y,&j,x,i); for(j=0;j printf("%d",y[j]); } 4.下面程序能将Hello! 反向打印出来。 请填空。 (考点: 函数(地址参数)、字符数组、递归算法) #include voidmain() { intprint_hello(char*); print_hello("\nHello! \n"); } intprint_hello(char*string) { char*str=string; if(*str==①)return; while(*str) ②; --str; printf("%c",*str); ③; print_hello(string); } 5.函数fun的功能是: 根据以下公式计算s,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。 请填空。 (考点: 循环、序列处理算法) #include voidmain() { voidfun(float*,int); floata; intk=2; fun(&a,k); printf("%f\n",a); } voidfun(float*sn,intn) { floats=0.0,w,f=-1.0; inti=0; for(i=0;i<=n;i++) { f=①*f; w=f/②; s+=w; } ③=s; } 第三十二次等级考试 第一部分软件技术基础 一、是非判断题(每小题1分,共10分) 1~10: ABBBA AABBA 二、选择题(每小题1分,共5分) 1~5: ABBCD 第二部分C与C++语言程序设计 一、单项选择题(每小题1分,共10分) 1、C2、A3、C4、A5、B6、D7、B8、C9、C10、A 二、读程序题(每个选择3分,共45分) 1、CB2、BC3、DD4、BA5、AB 6、CB7、BA8、D 三、程序填空题(每空2分,共30分) 1、①i%2==1②3③a/b 2、①>②s[i].score③i 3、①j>=i②y[j+1③i 4、①‘\0’②str++③*str=’\0’ 5、①-1②(2*i+1)③*sn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四川 计算机 语言 考试 笔试 32 答案