版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年山东省青岛市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.设有如下定义:int(*ptr);则以下叙述中正确的是()。
A.ptr是指向一维组数的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指int型数据的指针
2.下列不属于软件调试技术的是______。A.强行排错法B.集成测试法C.回溯法D.原因排除法
3.若有下列定义(设int类型变量占2个字节):inti=8,j=9;则下列语句:printf("i=%%d,j=%%d\n",i,j);输出的结果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9
4.
5.有以下程序:main(){intX,i;for(i=1;i<=50;i++){x=i;if(X%2=O)if(x%3=O)if(X%7=0)printf("%d,i)";}}输出结果是()。A.28B.27C.42D.41
6.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序运行时输入10.23.5并按<Enter>键,则输出结果为()。
A.x=10.200000y=-3.200000
B.x=6.700000y=-13.700000
C.x=7.000000y=-3.500000
D.x=13.400000y=-7.000000
7.下列叙述中正确的是()。
A.软件测试应该由程序开发者来完成
B.程序经调试后一般不需要测试
C.软件维护只包括对程序代码的维护
D.以上三种说法都不对
8.有以下程序#include<stdio.h>main(){chara[3O],b[30];scanf("%S",a);gets(b);printf("%s\n%s\\n",a,b);}程序运行时若输入:howareyou?Iamfine<回车>则输出结果是()。A.howareyou?Iamfine
B.howareyou?Iamfine
C.howareyou?Iamfine
D.howareyou?
9.若函数调用时的实参为变量,下列关于函数形参和实参的叙述中正确的是()。
A.函数的形参和实参分别占用不同的存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的实参和其对应的形参共占同一存储单元
10.以下不能定义为用户标识符的是()。
A.VoidB.scanfC.intD._3com_
11.有以下程序:#include<stdio.h>main(){chara=H;a=(a>=Aa<=2)?(a-A+a):a;printf("%c\n",a);}程序运行后的输出结果是()。A.AB.aC.HD.h
12.下列对队列的叙述正确的是A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据
13.排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为______。
A.希尔排序B.冒泡排序C.插入排序D.选择排序
14.检查软件产品是否符合需求定义的过程称为()。
A.确认测试B.集成测试C.验证测试D.验收测试
15.下列说法错误的是______。
A.关系中每一个属性对应一个值域
B.关系中不同的属性可对应同一值域
C.对应同一值域的属性为不同的属性
D.DOM(A)表示属性A的取值范围
16.面向对象方法中,继承是指()。
A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制
17.以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成错误的原因是()。A.定义语句“inti,max;”中max未赋初值
B.赋值语句“max=MIN;”中,不应给max赋MIN值
C.语句“if(max<x[i])max=x[i];”中判断条件设置错误
D.赋值语句“max-MIN;”放错了位置
18.#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
19.以下叙述中错误的是()。
A.C语言程序在运行过程中的所有计算都以二进制方式进行
B.C语言程序在运行过程中的所有计算都以十进制方式进行
C.所有C语言程序都需要编译、链接无误后才能运行
D.C语言程序中字符变量存放的是字符的ASCII值
20.按照标识符的要求,()符号不能组成标识符。A.连接符B.下划线C.大小写字母D.数字字符
二、2.填空题(20题)21.以下程序运行后的输出结果是______。
main
{
inna=b=c=5:
if(c=a+b)
printf("yes\n);
else
printf("no\n);
}
22.表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。
23.以下程序的输出结果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\N,*p,*q))
}
24.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。
25.已知a=1,b=2,则表达式(a&B)&b||b的结果为()。
26.以下程序的输出结果是【】。
main()
{inti=010,j=10;
printf("%d,%d\n",i,j);}
27.设有定义:FILE*fw;,请将以下打开文件的语句补充完整,以便可以向文本文件readme.txt的最后续写内容。
fw=fopen("readme.txt",【】);
28.以下程序运行后的输出结果是【】。
#include<stdio.h>
#include<string.h>
char*ss(char*s)
char*p,t;
p=s+1:t=*s:
whilet*p){*(,p-1)=*p;p++;}
*(p-1)=t;
returns:}
main()
{char*p,str[10]="abedefgh";
p=ss(str);printf("%s\n".p):}
29.以下程序的运行结果是()。
main()
(inta=2,b=7,c=5;
switch(a>0)
{case1:switch(b<0)
{case1:switch(");break;
case2:printf("!");break;
}
case0:switch(c==5)
{case0:printf("*");break;
case1:printf("#");break;
case2:printf("$");break;
}
default:printf("&");
}
printf("\n");
}
30.以下程序的功能是对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码值之差。请填空。
#include"stdio.h"
main()
{chara1[20],a2[20];intn=0,t;
scanf("%st",a1);scanf("%s",a2);
while(a1[n]!=a2[n]&&(a1[n]!=【】))
{t=【】;
printf("%d\n",t);n++;}}
31.计算机病毒除有破坏性、潜伏性和激发性外,还有一个最明显的特性是【】
32.以下程序运行后输出结果是【】。
#include<stdio,h>
voidswap(inty)
{intt;
t=x;x=y;y=t:printf("%d%d",x,y);
}
main()
{ihta=3,b=4:
swap(a,b);prinff("%d%d",a,b);
}
33.下列程序输出的结果是______。
intm=17;
intfun(intx,inty)
{intm=3;
return(x*Y-m);
}
main()
{inta=5,b=7;
printf("%d\n",fun(a,B)/m);
}
34.下列程序的运行结果是______。
main()
{inta=1,b=10;
do
{b-=a;a++;}while(b--<0);
printf("%d,%d\n",a,b);
}
35.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。
36.数据模型按不同应用层次分成三种类型,它们是概念数据模型、【】和物理数据模型。
37.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。清填空。
voidsstrcpy(char*s,char*t)
{while(*s++=【】);}
main()
{charstr1[100],str2[]="abcdefgh";
strcpy(str1,str2);
printf('%s\n",str1);
}
38.算法的复杂度主要包括【】复杂度和空间复杂度。
39.写出下列程序的输出结果______。
main()
{intn=0;
while(n++<=1);
printf("%d,",n);
printf("%d",n++);
}
40.函数compare的功能是比较两个字符串是否相等,若相等则函数返回值0,否则返回值1,请填空。
compare(chars[],chart[])
{inti=0;
while(s[i]==t[i]||【】)i++;
return(【】?1:0);
}
三、1.选择题(20题)41.有以下程序:#include<stdio.h>main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;prinff("%d\n";*p+*q);}程序运行后的输出结果是()。
A.16B.10C.8D.6
42.下列变量声明合法的是()。
A.shorta=1.4e-1;
B.doubleb=1+3e2.8;
C.longdo=0xfdaL;
D.float2_aaa=1e-3;
43.表示“在使用x之后,再使x的值加1”的正确方式是()
A.++xB.x++C.+xD.+x+
44.若有一些定义和语句#include<stdio.h>inta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;则以下选项中错误的语句是
A.*q=0;B.w=p;C.*p=a;D.*p=*w;
45.有以下程序main(){inta=15,b=21,m=0;switch(a%3){casc0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf(“%d\n”,m);}程序运行后的输出结果是
A.1B.2C.3D.4
46.若有以下说明和语句,则四个选项中是对c数组元素的正确引用的是()。intc[4][5],(*cp)[5];cp=c;
A.cp+1B.*(cp+3)C.*(cp+1)+3D.*(*cp+2)
47.若在某函数内部有定义:inta[3][4];则数组a中各元素()。
A.可在程序的运行阶段得到初值0
B.可在程序的编译阶段得到初值0
C.不能得到确定的初值
D.可在程序的编译或运行阶段得到初值0
48.在E-R图中,用()来表示实体之间联系。
A.矩形B.菱形C.椭圆形D.正方形
49.下列有关数据库的描述,正确的是______。
A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件
50.微型计算机的运算器、控制器及内存储器组合在一起,称之为()
A.ALUB.CPUC.MPUD.主机
51.若有以下说明和定义fun(int*C){…}main(){int(*A)()=fun,*b(),w[10],c;┇}在必要的赋值之后,对fun函数的正确调用语句是()
A.a=a(w);B.(*a)(&c);C.b=*b(w);D.fun(b);
52.设有如下定义intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()
A.3B.0C.4D.1
53.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序运行后的输出结果是
A.12B.123C.234D.345
54.若有下列说明和语句,已知int型数据占2个字节,则下列语句的输出结果是()。structst{chara[15];intb;doublec;};printf("%d",sizeof(structst));
A.15B.8C.25D.2
55.在C语言中,函数中变量的隐含存储类别是______。
A.autoB.staticC.externD.无存储类别
56.设有数组定义:chararray[]="China";则数组array所占的空间为()
A.4个字节B.5个字节C.6个字节D.7个字节
57.若有如下说明,则______的叙述是正确的。structst{inta;intb[2];}a;
A.结构体变量a与结构体成员a同名,定义是非法的
B.程序只在执行到该定义时才为结构体st分配存储单元
C.程序运行时为结构体st分配6个字节存储单元
D.类型名structst可以通过extern关键字提前引用(即引用在前,说明在后)
58.下列叙述中正确的是A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构
59.下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}
A.hello,B.newworldhelloC.newworldD.hello,rld
60.若有以下的说明,对初值中整数2的正确引用方式是
staticstruct
{charch;
inti;
doublex;
}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};
A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i
四、选择题(20题)61.
62.
63.以下()不是标准的HTTP消息头字段。
A.StatusB.HostC.AcceptD.Referer
64.以下关于C语言的叙述中,不正确的是
A.C语言中的注释可以夹在变量名或关键字的中间
B.C语言中使用变量必须是先定义后使用
C.C语言表达式运算符两侧的运算数类型必须一致
D.C语言的数值常量中夹带空格不影响常量值的正确表示
65.
66.有以下程序:
程序运行后的输出结果是()。
A.AfternoonB.ftemoonC.MorningD.oming
67.以下不能正确定义二维数组的选项是()。
A.
B.
C.
D.
68.
69.在软件开发中,需求分析阶段产生的主要文档是()。A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书
70.有以下程序(函数fun只对下标为偶数的元素进行操作):
#include<stdio.h>
voidfun(int*n)
{inti,j,k,t;
for(i=0;i<n-1;i+=2)
{k=i;
for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;
t[a[i];a[i]=a[k];a[k]=t;
}
}
main
{intaa[lO]=[1,2,3,4,5,6,7],a;
fun(aa,7);
for(i=0;i<7;i++)printf("%d,",aa[i]);
printf("n");
}
程序运行后的输出结果是()。
A.7,2,5,4,3,6,1,
B.1,6,3,4,5,2,7,
C.7,6,5,4,3,2,1,
D.1,7,3,5,6,2,1,
71.下述程序执行的输出结果是()。
#include<stdio.h>
main()
{chara[2][4];,
strcpy(a。"are");strcpy(a[1],"you");
a[o][3]=&;
printf("%s\n",a);
}
A.are&you
B.you
C.are
D.&
72.学生选课成绩表的关系模式是sc(S#,c#,G),其中S#为学号,c#为课号,G为成绩,检索课号为2且成绩及格的学生学号的表达式为()。
73.有以下程序:
运行时,若输入123450<回车>,则输出结果是()。
A.6566456
B.66656
C.66666
D.6666656
74.
75.有以下程序:
程序运行后的输出结果是()。
A.1B.11C.6D.21
76.若有函数voidfun(doublea[]。int*n){…}以下叙述中正确的是()。A.调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送
B.形参a和n都是指针变量
C.形参a是一个数组名,n是指针变量
D.调用fun函数时将把double型参数组元素一一对应地传送给形参a数组
77.
78.
79.下面不属于软件工程三要素的是()。
A.方法B.环境C.工具D.过程
80.设有如下三个关系表
下列操作中正确的是()。
A.T=RnSB.T=RUSC.T=R×SD.T=R/S
五、程序改错题(1题)81.写出下列程序的运行结果。
fun(inta,intb)
{if(a>b)return(a);
Elsereturn(b);}
main
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);printf(“%d\n”,r);}
六、程序设计题(1题)82.请编写函数proc,其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。例如,当a=25,b=43,实际输入时个数之间以Enter键分隔,调用该函数后,c=3452。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.C本题中int(*ptr)的含义是指向函数的指针变量,其为指向函数的指针变量,该函数返回一个int型数据,故选择C选项。
2.B解析:我们严格区分调试与测试,调试是已知有错误而来找错误,是被动的;测试有很多种,比如未发现错误但不能保证程序没错而来找BUG,还比如我们运行测试程序是否符合用户的要求,是主动的。所以答案是选项B。A、C、D都是具体的程序调试方法,而B是宏观的程序测试方法。测试有单元测试、集成测试、确认测试、系统测试。比如我们在进行单元测试时,发现程序有错误,我们再可以根据A、C、D的方法来找错误。
3.B本题考查函数的输出格式。在printf函数,格式说明符中有两个“%”说明;将第1个%后面的字符原样输出,并不输出其对应r的变量值。
4.A
5.C只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选巩。
6.Asub函数接收两个参数:double类型变量a,double指针变量pb。首先将a与pb指向的变量值相减,结果存放在a中;然后再将pb指向的变量值与a的新值相减,结果存放在pb指向的内存空间中。sub函数不会修改实参x的值,但会修改实参y的值。当输入10.23.5时,实参x的值为10.2,y的值为3.5,执行sub函数后,x的值不变,y的值变成-3.2。故本题答案为A选项。
7.D程序调试是由程序开发者完成诊断和改正程序中的错误的过程;软件测试是由专门的测试人员完成,是发现错误而执行程序的过程;软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。
8.B此题主要考查scanf函数和gets函数的区别。答案为B。
9.A在定义函数时,函数名后面圆括号中的变量名称为“形式参数”(简称形参)。在主调函数中调用一个函数时,函数名后面圆括号中的参数(可以是一个表达式)称为“实际参数”(简称实参)。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传给实参。在内存中,实参单元与形参单元是不同的单元。故本题答案为A选项。
10.C标识符的命名可以由字母、数字或下划线组成,并且第1个字符必须为字母或下划线,另外用户标识符不能使用关键字。选项A中的Void可以定义为用户标识符,因为C语言对大小写敏感,Void与关键字void属于不同的标识符;选项B中的scanf是库函数名,属于预定义标识符,它也可以作为用户标识符使用,不过通常不建议这么使用;选项C中的int属于关键字,错误;选项D符合标识符的命名规则,也不属于关键字,可以作为标识符使用。本题答案为C选项。
11.D多元运算符问号前面表达式为真,所以(a-A+a)赋值给a,括号里的运算是把大写字母变成小写字母,所以答案应为选项D。
12.D解析:本题考查数据结构中队列的基本知识。队列是一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出的特性。在队列中,允许插入元素的一端叫做队尾,允许删除的一端则称为队头。这与日常生活中的排队是一致的,最早进入队列的人最早离开,新来的人总是加入到队尾。因此,本题中只有选项D的说法是正确的。
13.A解析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。
14.A本题主要考查软件测试的基本知识。软件测试的步骤可分为单元测试(模块测试)、集成测试、确认测试和系统测试。
(1)单元测试是针对每个模块进行的测试,它可从程序的内部结构出发设计测试用例,多个模块可以平行、对立地测试。单元测试主要用于发现详细设计和编程时犯下的错误。单元测试多采用白盒测试,辅之以黑盒测试。
(2)集成测试是在单元测试的基础上,根据模块结构图将各个模块连接起来,必须精心计划,应提交集成测试计划、集成测试规格说明和集成测试分析报告。主要目标是发现与接口有关的问题。集成测试可以发现概要设计时犯的错误。
(3)确认测试用于验证软件的功能和性能及其他特性是否与用户的要求一致。确认测试主要用于发现需求分析时犯下的错误,一般使用黑盒法测试,以表明软件符合需求说明书的要求,应该仔细设计测试用例和测试过程。确认测试必须有用户参加,或以用户为主,用户应参与设计测试用例,通常情况下,主要使用生产中的实际数据进行测试,测试数据通过用户接口输入。
(4)系统测试是将已经通过确认测试的软件,作为整个计算机系统的元素与计算机硬件、外设和网络等其他因素结合在一起,进行一系列的组装测试和确认测试。系统测试的目的是通过与系统的需求定义做比较,发现软件与系统的定义不符合的地方。系统测试可以发现问题定义时犯下的错误。
15.C解析:关系中每一个属性都有一个取值范围,称为属性的值域。每—个属性对应一个值域,不同属性可对应同一个值域。对应同一值域的却不一定是不同的属性。属性的值域用DOM(A)表示,A表示属性的名称。
16.D继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
17.D“max=MIN;”语句应放在for循环之前,否则每次循环时都重新赋值,值没有变化。
18.C解析:带参数宏的格式为:#define标识符(形参表)形参表达式。其功能是:在预处理程序中将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。
19.BC语言程序在运行过程中的所有计算都以二进制方式进行,所以B选项错误。故本题答案为B选项。
20.A
21.yesyes解析:if...else构造了一种二路分支选择,是一种最基本的选择结构。本题中,if后面括号里的表达式为c=a+b为真(即c=1+3=4为真);所以,执行s1,即执行prinff('yes\\'),最后输出yes。
22.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整数x的绝对值大于5,则x大于5或x小于5,用C语言表示即为:x>5||x<-5或者x<-5||x>5。故本题答案为;x>5||x<-5或者x<-5||x>5。
23.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。
24.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。
25.1
26.8108,10解析:以0开头的是八进制数,输出时将其转换成十进制数。
27.aa解析:本题考查的是文件的打开方式。要向文本文件的末尾续写内容,需要使用方式“a”(追加)打开文件。
28.bedefghabedefgha解析:函数9,的作用是将指针变量。指向的字符串的首字符移到最后一个位置,其他字符依次前移。其方法是:首先将指针变量p指向字符串s的第2个字符b,然后将首字符保存在字符变量t中;从字符串的第2个字符开始,通过语句*(P-1)=*p;依次前移,直到字符串结束符;最后通过语句*(P-1)=t;将保存在t中的字符放到移动后的字符串末尾,返回main函数并输出,输出结果为bedefsh。
29.#&#&解析:刚开始时,switch后面的表达式a>0为真(1),与case1匹配,然后执行case1后面的switch语句,表达式b<0值为0,没有与其匹配的语句,返回外层,因为外层没有break语句,顺序执行case0后面的switch语句,表达式“c==5”值为1,与其后面的case1匹配,因此输出#,遇到break返回外层,又因为外层没有break语句,顺序执行default后的语句,输出&。
30.\0'al[n]-a2[n]或s2[n]-al[n]\\0'\r\nal[n]-a2[n]或s2[n]-al[n]
31.传染性或传播性传染性或传播性
32.43344334解析:程序将变量a,b的值传给函数swap的形参x,y,并在函数中对x,y的值进行交换,所以在函数swap中输出x,y的值4,3,由于c程序的函数是僧传递,实参a,b的值不会随形参x,y的改变而改变,所以在主函数中输出的a,b的值为3,4。
33.11解析:本题考查局部变量和全局变量的区别:局部变量是指作用域在函数级和块级的变量,全局变量是指作用域在程序级和文件级的变量。本程序首先定义了一个全局变量m=17,m=17的作用域在整个程序内。在fun函数内部定义了一个局部变量m=3,m=3的作用域仅在fun函数内部,通过fun函数返回两个形参的积再减m。在主函数中,输出fun(a,b)/m=(5*7-3)/17=1。
34.282,8解析:do…while语句的功能是:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。这里程序初始时a=1,b=10,经过操作b-=a;a++后b=9,a=2,判断条件b--<O不成立,退出循环,但b的值被减1,因此结果为:a=2,b=8。
35.数据存储数据存储
36.逻辑数据模型逻辑数据模型解析:数据模型按不同的应用层次分成三种类型,它们是概念数据模型、逻辑数据模型、物理数据模型。
37.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组str1和str2,并且给str2赋初值“abcdefgh”,接着调用函数strcpy(str1,str2),将字符串str2的值赋给str1。在函数sstrcpy(*s,*t)中,用了一个while循环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储空间,然后将指针s和t都移到下一个元素。所以空白处应该填*t++或*(t++)。
38.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
39.333,3解析:本题在while(n++<=1)语句后,直接加了分号,说明如果while()的条件为真时,该循环什么都不做:n++是先取n的当前值和1做比较,然后再将n加1。第一次循环,n=0时,循环条件n++=<1成立,执行循环,然后得到n=1。第二次循环,n=1时,循环条件n++=1<=1成立,执行循环,然后得到n=2。第三次循环,n=2时,循环条件n++=2<=1不成立,不执行循环,但在判断循环条件时仍将n加1,得到n=3.退出循环后执行printf语句,第二个printf语句输出n++,是先输出n的当前值3,然后再将n加l,即程序结束后得到n=4,但输出的是3。
40.s[i]!='\0'||t[i]!='\0's[i]=='\0'&&t[i]=='\0's[i]!='\\0'||t[i]!='\\0'\r\ns[i]=='\\0'&&t[i]=='\\0'
41.B解析:由变量的定义可知,指针变量p初始化为&a[3],即*P的值为4;指针变量q初始化为p+2,即&a[3]+2,所以*q的值为6,*p+*q的值为10。
42.A解析:解答本题需了解3个知识点:①标识符是由字母、数字或下画线组成,并且它的第一个字符必须是字母或者下画线;②do是C语言中的一个关键字,不能再用做变量名和函数名;③C语言规定指数形式的实型常量e或E后面的指数必须是整数。
43.B
44.A解析:本题考核的知识点是指针变量的使用与空指针(NULL)基本概念.本题中定义了3个指向整型的指针变量p、q、w,并让p指向a,让q指向b,通过将q的值赋给w,使w也指向b,最后将NULL赋值给q。由整形变量指针的定义可知,可以给整型指针指向的变量赋一个常数值(表达式),故选项C和选项D是正确的;可以给指针变量赋一个同种类型的指针变量(或地址值),故选项B也是正确的;选项A错误,因为q不指向任何变量,给一个空指针指向的单元赋值是错误的。所以,A选项为所选。
45.A解析:在switch语句中break语句的作用是退出分支语句,若没有break语句则一直向下执行。本题中首先计算switch后面括号里的表达式a%3,即15%3为0;执行case0;后面的语句m++;m自加1,即m为1;遇到break语句;然后跳出switch语句,所以最后输出的m的值为1。
46.D解析:本题考查数组元素的引用。语句cp=c;将数组c的首行地址赋给了指针数组cp。选项A)的cp+1是指将数组c的首行地址加1,即为第二行地址;选项B)的*c(cp+3)是地址,等于数组c的首地址加3的内存单元的内容,不是对数组元素的引用;选项c)的*(cp+1)+3是地址,等于数组c的首地址加1的内存单元中存放的值加3,不是对数组元素的引用。
47.C解析:在函数内部定义的存储类型为auto的变量或数组,如果没有进行初始化,就不能得到确定值。
48.B\nB)【解析】在E.R图中用矩形表示实体集,在矩形内写上该实体集的名字,用椭圆形表示属性,在椭圆形内写上该属性的名称,用菱形表示联系,菱形内写上联系名。
\n
49.C解析:数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有“集成”、“共事”之特点。
50.D
51.B
52.A
53.D解析:本题考查的是二维数组元素在内存中的排列形式。虽然二维数组成多维数组从结构上来看不是线性的,但是在C语言中,这些数组元素在内存中的排列是连续线性存放的。它们的排列规则是:第一维下标变化最慢,最右边的下标变化最快.例如本题中定义的二维数组a[3][3]中9个元素在内存中的排列顺序是:a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],a[2][0],a[2][1],a[2][2]。在主函数中,首先定义了二维数组a[3][3],然后定义了一个指针p指向数组a的第1个元素a[0][0]。在第一个for循环中,依数组a在内存中的排列顺序为其元素赋从0~8九个值,然后用第二个for循环依次输出a[1][0],a[1][1],a[1][2]三个元素的值。所以,4个选项中选项D符合题意。
54.C解析:本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立。题中intb占2个字节,chara[15]占15个字节,doublec占8个字节,所以共25个字节。
55.A解析:函数中变量的存储类别包括auto,static,extern,其中auto为隐含存储类别,static为静态存储类别,register是寄存器存储类别。
56.C解析:在给数组赋值时,可以用一个字符串作为初值,这种方法直观、方便,而且符合人们的习惯。数组array的长度不是5,而是6,这点必须要注意。因为字符串常量的最后由系统加上一个'\\0',因此,上面的初始化与下面的等价:
Chararray[]={'C','h','i','n','a','\\0'};
57.D解析:结构体变量a与结构体成员a同名是合法的定义,引用成员a的方法是a.a,变量a处于不同的“层次”上,系统完全能够分情。st是—个结构体名,不会为结构体名分配存储空间,应该是在运行时为结构体变量a分配6个字节的存储单元,故选项B和选项C错误。
58.A根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:1,有且只有一根节结点,2,每一个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
59.A解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。
60.B解析:考查结构体数组对结构体成员的引用。结构体数组中对结构体成员的引用要先引用到数组元素,然后像对待普通的结构体变量一样来对待结构体数组元素。
61.C
62.D
63.A
64.CA选项指出“C语言中的注释可以夹在变量名或关键字的中间”,该选项是正确的。通常采用/*.....*/作为C语言里的注释符,注释符之间的内容是方便他人理解程序而写的,对编译和运行不起作用。注释可以在程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年江西省井冈山市高二生物下册期末考试检测卷(典型题)附答案
- 2025年湖北省安陆市高二生物下册期末考试模拟卷附参考答案(巩固)
- 2026年吉林省临江市高二生物下册期末考试检测卷及参考答案【基础题】
- 2025年青海省玉树市高二生物下册期末考试考试卷(夺分金卷)附答案
- 2025年黑龙江省富锦市高二生物下册期末考试测试卷附参考答案(能力提升)
- 2025年云南省大理市高二生物下册期末考试检测卷及参考答案【培优A卷】
- 2026年四川省什邡市高二生物下册期末考试模拟卷带答案(考试直接用)
- 2026年云南省大理市高二生物下册期末考试试卷加答案
- 2026年山西省永济市高二生物下册期末考试测试卷带答案(夺分金卷)
- 2025年云南省泸水市高二生物下册期末考试模拟卷附参考答案(培优)
- 部队安全常识训练课件
- 2025年食品营销题库及答案
- 水处理班组安全培训
- 厂房迁移合同注意事项汇编
- 患者标本转运培训
- 2025年初中地生会考模拟试题及答案
- 2025年市场营销学课程期末考试试题及答案
- 2025年防雷检测专业技术人员能力认定考试复习题库(附答案)
- 工程总承包项目费用管控方案
- 2025年中国专精特新企业发展洞察报告
- 锐器伤不良事件上报流程
评论
0/150
提交评论