




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年四川省遂宁市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度是O。
A.求链表的第i个结点B.在地址为P的结点之后插入一个结点C.删除表头结点D.删除地址为P的结点的后继结点
2.
3.设变量已正确定义,则以下能正确计算n!的程序段是______。
A.f=0;for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i<n;i++)f*=i;
C.f=1;for(i=n;i>1;i++)f*=i;
D.f=1;for(i=n;i>=2;i--)f*=i;
4.
5.有以下程序A.6B.3C.8D.12
6.以下选项中,能用作用户标识符的是()。
A._0_B.8_8C.voidD.unsigned
7.在学生管理的关系数据库中,存取一个学生信息的数据单位是()。
A.文件B.数据库C.字段D.记录
8.C语言的基本单位是()。
A.函数B.过程C.子程序D.子函数
9.有如下程序段
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
程序运行后输出的结果是A.A.63
B.36
C.编译出错
D.00
10.
11.有种数据结构叫跳跃列表(SkipList),它是一种基于并联的链表的随机化数据结构,其效率可比拟于二叉查找树(对于大于数操作需要O(logn)平均时间)。它是按层建造的。底层是一个普通的有序链表。每个更高层都充当下面列表的“快速跑道”,这里在层i中的元素按概率l/p出现在层i+1中。平均起来,每个元素都在p/(p-1)个列表中出现,而最高层的元素(通常是在跳跃列表前段的一个特殊的头元素)在O(logpn)个列表中出现。调节p的大小可以在内存消耗和时间消耗上进行折中。试分析在该数据结构中查找一个元素的平均时间复杂度。
A.O(logn)B.O(n)C.O(n*logn)D.以上都不正确
12.算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是A.A.有零个输入或多个输入B.高效性C.有穷性D.确定性
13.软件测试的目的是()。
A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误
14.
15.
16.有以下程序:#include<stdio.h>main{inta=1,b=2;while(a<6){b+=a;a4+=2;b%=10;)printf("%d,%d\n",a,b);}程序运行后的输出结果是()。A.5,11B.7,1C.7,11D.6,1
17.表达式9!=10的值为()。
A.非零值B.trueC.0D.1
18.
下列程序的输出结果是()。
#include<stdio.h>
main
{inta[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;
p=a;
for(i=0;i<3;i++)
{if(i<2)
p[1][i]=p[1][i]-1;
else
p[1][i]=1;
}
printf("%d\n",a[o][1]+a[1][1]+a[1][2]);
}
A.8B.7C.12D.9
19.有以下程序:程序运行后的输出结果是()。A.1.000000B.0.000000C.0.250000D.0.500000
20.若a是数值类型,则逻辑表达式“(a==1)||(a!=1)”的值是()。
A.1B.0C.2D.不知道a的值,不能确定
二、2.填空题(20题)21.下列程序段的输出结果是______。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':printf("good");break;
case'c':printf("morning");
case'd':printf("class");
}
22.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*)【】;
23.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。
24.若线性表的长度经常发生变化,那么该线性表应采用的存储结构是【】。
25.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。
26.结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。
27.若a=1,b=2,则表达式!(x=A)‖(y=B)&&0的值是______。
28.若有如下定义,则该数组的第一维大小为【】。
intb[][4]={1,2,3,4,5,6,7,8,9);
29.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
30.有以下程序:
#definef(x)x*x
main()
{inti;
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
执行后的输出结果是【】。
31.下列程序的功能是计算1~100的整数的累加和。
main()
{inti,sum=【】;
i=1;
for(【】)
{sum+=i;
i++;
}
printf("sum=%d\n",【】);
}
32.十进制数53转换为十六进制数为【】。
33.若有如下定义,则该数组的第一维大小为【】。
intb[][4]={1,2,3,4,5,6,7,8,9}
34.以下程序是从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。请填
main()
{
inti,a[20],sum,count;
sum=count=【】;
for(i=0;i<20;i++)scanf("%d("%d",【】);
for(i=0;i<20;i++)
{
if(a[i]>0)
{count++;
sum+=【】;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
35.近年来形成了软件开发的多种模式,大致有3种类型:基于瀑布模型的结构化生命周期方法、基于动态定义需求的【】方法和基于结构的面向对象的软件开发方法。
36.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。
37.下列程序的输出结果【】。
#definePR(ar)printf("ar=%d",ar)
main()
{intj,a[]={1,3,5,7,9,1l,13,1},*p=a+5;
for(j=3;j;j--)
switch(j)
{case1:
case2:PR(*p++);break;
case3:PR(*(--p));}}
38.以下程序的运行结果是()。#defineS(x)x*xmain(){intk=1;while(k<=4){printf("%d,",S(k));k++;}
39.以下程序的运行结果是【】。
intk=0;
voidfun(intm)
{m+=k;k+=m;
printf("m=%dk=%d",m,k++)
}
main()
{inti=4;
fun(i++);
printf("i=%dk=%d\n",i,k);
}
40.以下程序运行后的输出结果是______。
voidfun(intx,inty)
{
x=x+y;y=x-y;x=x-y;
printf("%d,%d,",x,y);
}
main()
{
intx=2,y=3;
fun(x,y);
printf("%d,%d\n",x,y);
}
三、1.选择题(20题)41.下列程序的运行结果为
#include<stdio.h>
voidabc(char*str)
{inta,b;
for(a=b=0;str[a]!='\0';a++)
if(str[a]!='c')
str[b++]=str[a];
str[b]='\0';}
voidmain()
{charstr[]="abcdef";
abc(str);
printf("str[]=%s",str);}
A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab
42.数据库设计的4个阶段是:需求分析、概念设计、逻辑设计和()。
A.编码设计B.测试阶段C.运行阶段D.物理设计
43.有下列函数定义:
fun(floath)
{printf("%f,%f\n”,h,h*h);}
该函数的类型是()。
A.int类型B.float类型C.void类型D.函数无类型说明,定义有错
44.下面函数调用语句含有实参的个数为func((exp1,exp2),(exp3,exp4,exp5));
A.1B.2C.4D.5
45.设有如下定义:intx=1,y=-1;则下列语句的输出结果是______。printf("%d\n",(x--&++y));
A.1B.0C.-1D.2
46.关系数据库的数据及更新操作必须遵循()等完整性规则。
A.实体完整性和参照完整性
B.参照完整性和用户自定义完整性
C.实体完整性和用户自定义完整性
D.实体完整性、参照完整性和用户自定义完整性
47.下列选项中非法的字符常量是()。
A.'\t'B.'\039'C.','D.'\n'
48.需求分析中开发人员要从用户那里了解
A.软件做什么B.用户使用界面C.输入的信息D.软件的规模
49.设有定义:inta=2,b=3,c=4;,则下列选项中值为0的表达式是()。
A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数
50.关于结构化程序设计原则和方法描述错误的是()。
A.选用的结构只准许有一个入口和一个出口
B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现
C.不允许使用GOTO语句
D.语言中所没有的控制结构,应该采用前后一致的方法来模拟
51.有下列二叉树,对此二叉树前序遍历的结果为()。
A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH
52.下述函数功能是_______。intfun(char*x){char*y=x;while(*y++);returny-s-1;}
A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面
53.函数fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}
A.字符串a的长度B.字符串b的长度C.字符串a和b的长度之差D.字符串a和b的长度之和
54.有以下程序段
charch;intk;
ch=′a′;k=12;
printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);
已知字符a的ASCII码值为97,则执行上述程序段后输出结果是
A.因变量类型与格式描述符的类型不匹配输出无定值
B.输出项与格式描述符个数不符,输出为零值或不定值
C.a,97,12k=12
D.a,97,k=12
55.以下scanf函数调用语句中对结构体变量成员的引用不正确的是
structpupil
{charname[20];
intage
intsex;
}pup[5],*p;
p=pup;
A.scanf("%s",pup[0].name);
B.scanf("%d",&pup[0].age);
C.scanf("%dT",&(p->sex));
D.scanf("%d",p->age);
56.假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是______。
A.free(q);p->next=q->next;
B.(*p).next=(*q).next;free(q);
C.q=(*q).next;(*p).next=q;free(q);
D.q=q->next;p->next=q;p=p->next;free(p);
57.根据下列定义,能打印出字母P的语句是()。
structstu{charname[10];
intage;
};
structstus[10]={"John",11,
"Pau1",12,
"Mary",11,
"adam",12
};
A.primf("%c",s[3].name};
B.primf("%c",s[3].name[1]);
C.printf("%c",s[2].name[1]);
D.printf("%c",s[1].name[0]);
58.下列程序(注意:ch[0]在低字节,ch[1]在高字节)的输出结果是______。#include<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}
A.13B.14C.208D.209
59.有以下程序:voidfun(int*a,inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;i++;j--;fun(a,ij);}}main(){intx[]={2,6,1,8},i;fun(x,0,3);for(i=0;i<4;i++)printf("%2d",x[i]);printf("\"n);}程序运行后的输出结果是()。
A.1268B.8621C.8162D.8612
60.冒泡排序在最坏情况下的比较次数是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
四、选择题(20题)61.
62.有以下程序
#include<stdio.h>
voidfun(char**p)
{p=p+2;
printf("%s\n",*p);
}
main()
{char*a[]={"Morning","Afternoon","Evening","Night"};
fun(a);
}
程序的运行结果是
A.rning
B.afternoon
C.ternoon
D.Evening
63.
64.非空循环链表所表示的数据结构()。
A.有根结点也有叶子结点B.没有根结点但有叶子结点C.有根结点但没有叶子结点D.没有根结点也没有叶子结点
65.软件设计中划分模块的一个准则是()。A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合
66.有以下程序程序运行后的输出结果是()。
A.21B.11C.6D.120
67.一棵二叉树共有25个结点,其中5个是叶子结点,则度为l的结点数为()。
A.16B.10C.6D.4
68.有以下程序段#include<stdio.h>main(){...while(getchar()!=\n);...}以下叙述中正确的是()。A.此while语句将无限循环
B.getchar()不可以出现在while语句的条件表达式中
C.当执行此while语句时,只有按回车键程序才能继续执行
D.当执行此while语句时,按任意键程序就能继续执行
69.
有下列程序:
#include<stdio.h>
main
{intx=0;
inty=0;
while(x<7&&++v)
{y--;
x++;}
printf("%d,%d",y,x);
}
程序的输出结果是()。
A.0,7B.7,7C.0,6D.1,6
70.数据库系统的核心是()。
A.数据库B.数据库管理系统C.数据库管理员D.数据库应用系统
71.以下关于C语言的叙述中,不正确的是
A.C语言中的注释可以夹在变量名或关键字的中间
B.C语言中使用变量必须是先定义后使用
C.C语言表达式运算符两侧的运算数类型必须一致
D.C语言的数值常量中夹带空格不影响常量值的正确表示
72.有以下程序程序输出()。
A.编译有错B.0,0,0,3C.1,1,2,0D.0,l,2,0
73.
74.有以下程序:
程序运行后的输出结果是()。
A.6B.3C.8D.12
75.栈和队列的共同特点是()。
A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点
76.以下叙述中错误的是()。
A.getehar函数用于从磁盘文件读入字符
B.gets匿数用于从终端读入字符串
C.取ns函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
77.(51)在计算机中,算法是指()
A.查询方法
B.加工方法
C.解题方案的准确而完整的描述
D.排序方法
78.以下叙述中正确的是()。
A)C程序中的#include和#define行均是C语句,只是语法不同
B)除赋值运算符外,逗号运算符的优先级最低
C)C程序中,j++;是赋值语句
D)C程序中,+、-、*、/、%号是算数运算符,可用于整型和实型数的运算
79.
80.
五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…例如,若给n输入7,则该项的斐波拉契数值为l3。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>longfun(intg){//****found****switch(g);{case0:return0;//****found****casel:case2:return1;}return(fun(g-1)+fun(g-2));}voidmain{longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%d\n",n);fib=fun(n);printf("fib=%d\n\n",fib);}
六、程序设计题(1题)82.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组S中,请编写函数proc(),它的功能是:把分数最高的学生数据放在h所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高学生的人数。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
参考答案
1.A
2.C
3.D解析:A选项,将f赋值为0,结果得到0,因为0乘任何数都为0;B选项,i<n,计算的是(n-1)!,C选项将陷入死循环。
4.D\r\n
5.A[解析]本题中第一次调用为fum(8.fn(5.6)),因为fun(5.6)返回值为5.所以第二次调用为fn(8.5)=6.所以选择A)。
6.AC语言的标识符由字母、数字、下划线组成,且第1个字符必须是字母或下划线。另外,关键字不能作为标识符。B选项中以数字8开头,所以错误。C选项与D选项中用的是关键字“void”与“unsigned”,所以错误。故本题答案为A选项。
7.D解析:在关系数据表中,行称为元组,对应存储文件中的记录,列称为属性,对应存储文件中的字段,所以本题答案为D。
8.AA。【解析】C语言是函数式的语言。它的基本组成单位是函数,在C语言中任何程序都是由一个或者多个函数组成的。
9.B在本题中,程序首先定义了一个无返回值的函数fun,该函数带有两个整型的指针形参变量,在函数体中,首先定义一个整型指针变量k,然后试图利用k来交换a和b的结果。但处理语句k=a;很明显是对地址进行赋值操作。在C语言中,指针变量作为函数参数时,可以改变被指向的变量的值,但不能改变指针变量本身的值,即我们可以改变实参指向的变量的值,不能使实参指向其他的变量。因此,本函数并不能交换形参所指向变量的结果。
在主函数中,首先定义了两个整型变量a和b,并分别被初始化为3和6,然后定义两个指针变量x和y,分别指向a和b,接着调用fun函数,传递的实参为指针变量x和y,根据前面对fun函数的分析可知,调用该函数后并不能实现a和b数组的交换,因此,执行输出语句后,输出的结果是36。本题正确答案选B。
10.B
11.A
12.B
13.D软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能,也不是为了评估软件或改正错误,因此本题答案为D)。
14.D
15.A
16.B“b+=a;”等价于“b=b+a;”,“a+=2;”等价于“a=a±2;”,“bA=10;”等价于“b=b%=10;”。循环体执行3次,最终结果为7,1。
17.D
18.B
\n本题考查for循环及if…else语句嵌套,第1次执行for循环,p[1][0]=p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,p[1][2]=l,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。
\n
19.D程序定义double变量x、y,给x赋初值2.0。if语句判断,当x小于0.0时,给y赋值0.0。否则当x小于10.0时,y的值为1.0/x;当x大于等于10.0时,y的值为1.0。题干中x的值为2.0,所以y的值为1.0/x,即0.500000。本题答案为D选项。
20.A逻辑或“||”要求两边的运算对象有一个非零值,结果就为真。变量a的值不确定,但是若a为1,则左边运算对象的值为1;若a不为1,则右边运算对象的值为1,所以总能保证一边为非零值。故本题答案为A选项。
21.morningclassmorningclass解析:本题考查了两个知识点:①“++,--”运算后缀形式是先使用变量原来的值,使用完后再使其增1或减1;②在switch语句中,当n='c'时,执行“case'c'”,输出morning;因为此句中没有break语句,因此接着执行“case'd':”,输出class,最终输出结果为morningclass。
22.malloc(11)malloc函数的格式是void*(或char*)malloc(size),size表示应分配的存储区,此题要分配11字节的单元,把11代入即可。
23.封装封装
24.链式存储结构链式存储结构
25.buf的首地址buf的首地址解析:考查fsets()函数的功能,f8ets()函数用来从文件中读入字符串。调用格式为:f8ets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fsets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。
26.模块化模块化
27.00解析:根据运算符的运算顺序可知,该表达式最后运算的是与(&&)运算,而任何表达式与“0”进行“与”运算,结果都为0。
28.33解析:在初始化一个含有未指定维度的数组时,C语言总是在能完全容纳初始化列表的基础上尽可能小地设定该维度,来作为指定维度的标准。本题有9个初始值,若指定第一维度为2,则数组含有2*4=8个元素,容纳不下,所以指定维度为3,3*4=12,足够容纳了。故应该填3。
29.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
30.2828解析:i=f(4+4)/f(2+2)=4+4×4+4/2+2×2+2=4+16+2+4+2=28。
31.0;sum<=100;sum
32.35
33.3
34.0&a[i]a[i]0\r\n&a[i]\r\na[i]解析:本题要求从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。程序中首先要对存放正数个数的变量count及存放和值的变量sum初始化为0,所以第一空应填0。接着要求从终端读入数据到数组中,可以通过scanf函数实现,因此第二空应填&a[i]。最后通过sum+=a[i];语句累加正数a[i]的值到sum中,因此第三空应填a[i]。
35.原型化原型化
36.关系关系解析:关系模型用;维表表示,则每个;维表代表一种关系。
37.ar=9ar=9ar=11ar=9ar=9ar=11解析:本题综合考查了for循环,switch语句及宏替换等几个知识点。j=3时,执行PR(*(--p));输出数组元素a[4]的值;j=2时,执行PR(*p++);取出p所指位置的元素a[4],然后p++;当j=1时,执行PR(*p++);取得是数组元素a[6]的值11。
38.149161,4,9,16,解析:分析程序执行过程,第1次循环,k=1时,此时s(1)=1*1=1,然后k的值加1;第2次循环,k=2时,s(2)=2*2=4,然后k的值加1;第3次循环,k=3时,s(3)=3*3=9,然后k的值加1;第4次循环,k=4时,s(4)=4*4=16,然后k的值加1;当k=5时,条件不满足,退出循环。
39.m=4k=4i=5k=5m=4k=4i=5k=5解析:main()函数首先定义了1个变量i,并初始化为4。然后用表达式i++的值为实参调用函数fun(),因为后缀”表达式的值为增1之前的值,故此时传递给函数的参数m值为4。fun()函数中,首先让形参m自增k,由于此时k还是0,所以m不变,然后让k自增m,执行后k的值和m相同为4。最后fun()函数输出m和k廿的值,两个值都是4,故首先输出了“m=4k=4”,输出完后,k自增1(k变为5)。fun()函数执行完毕,返回main()函数中,此时i会被自增1变为5,故接着又输出的i和k的值都是5。故最终输出结果是“m=4k=4i=5k=5”。
40.32233,2,2,3解析:主函数中首先定义了整型变量x和y,并分别给它们赋初值为2和3,接着调用fun()函数,fun()函数把实参x和y的值传给形式参数x和y,实参和形参不再有联系.在fun()函数中通过运算使x和y的值交换过来,所以fun()函数中的输出结果是“3,2”。fun()函数调用返回输出x和y依旧是原来的x和y,为“2,3”原因是变量作为形参传值的,对形参的修改并不影响对应的实参。所以最后输出为3,2,2,3。
41.A解析:本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数abc()的for语句执行过程是:从字符指针str所指向的字符数组的第一个元素开始,逐一判断字符是否为'c',若不是就执行一次数组元素的赋值过程,若字符为'c'就不执行。
42.D解析:数据库的生命周期可以分为两个阶段:一是数据库设计阶段,二是数据库实现阶段。数据库的设计阶段又分为4个子阶段,即需求分析、概念设计、逻辑设计和物理设计。因此,本题的正确答案是D。
43.A解析:本题考查默认函数的函数值的类型。在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型处理,因此,函数的类型为int类型。
44.B解析:函数调用的一般形式为:函数名(形参表)若函数无形参,调用形式为:函数名(),当所调用的函数用于求出某个值时,函数的调用可作为表达式出现在允许表达式出现的任何地方,本题中调用语句的参数个数为2个。
45.B
46.D解析:关系模型中包括关系数据结构、关系操作集合和关系完整性。关系完整性即数据完整性,包括实体完整性、参照完整性、用户自定义完整性。
47.B水平制表符中,'\t'表示的是横向跳若干格;选项B中,'\039'错误,'\039'是八进制形式表的字符,最大数为7,但其中出现'9',','是字符逗号;选项D中,'\n'表示的是换行。
48.A解析:需求分析是软件定义时期的最后一个阶段,它的基本任务就是准确问答“系统必须做什么”。这个问题即软件系统功能,需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
49.D解析:因为变量t的初始值等于1,经过第一次dowhile循环中,执行t=t-2这条语句一次,所以变量t的值为-1,判断关系表达式t!=n是否成立,如果关系表达式成立,则执行第二次循环,再执行t=t-2这条语句一次,所以变量t的值为-3,接着再判断关系表达式t!=n是否成立,如果关系表达式成立,执行第三次循环,否则退出循环。由此可知,所以只要输入变量n的值为负奇数,则一定会使t==n成立,则退出dowhile循环。
50.C解析:限制使用GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用GOTO语句。其他3项为结构化程序设计的原则。
51.B解析:对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左,右子树。
52.A解析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。
53.D解析:第一个while循环是字符串a的长度,第二个while是将字符串b接在a的后面,num在a串长度上继续累计,为两个字符串长度之和。
54.D解析:考查printf函数的相关知识。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开,因此选项A)和C)错误。在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b,所以正确答案为B)。输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。所以选项D)为正确答案。
55.D解析:考查结构体成员变量的引用方法。可用结构体变量名.数据成员名或者结构体指针->数据成员名两种方法来引用。结构体类型的变量、数组和指针变量的定义。
56.B解析:选项A的错误在于,先已经把q结点给释放,无法再进行余下语句了:选项C和D的错误在于因为有了q=(*q).next做了赋值,则free(q)释放了原来q后面的一个结点。
57.D解析:本题主要考查按结构数组元素方式引用结构成员。字母P为'Paul'的第一个字母,是结构体s[1]的name成员的第一个元素的值,即s[1].name[0]的值。
58.A
59.C解析:函数fun()中用了—个if语句,当数组下标i小于数组下标j时,交换数组元素a[i]和a[j]的值,并使i值加1,j值减1。其功能就是把数组a中从下标i到j的元素首尾互换。主函数中定义一个数组,在定义该数组的时候缺省了定义长度,定义的同时将其初始化赋值,所以该数组的长度为初始化该数组时的元素的个数即4,接着调用fun(a,0,3),其中将a数组的第一个元素的下标0和最后一个元素的下标3传给了函数fun(),故执行完该函数后,数组a中的元素首尾互换,因此最后依次输出的数组a中值为8,1,6和2,所以,4个选项中选项C符合题意。
60.C冒泡排序的基本思想是:将相邻的两个元素进行比较,如果反序,则交换;对于一个待排序的序列,经一趟排序后,最大值的元素移动到最后的位置,其他值较大的元素也向最终位置移动,此过程称为一趟冒泡。对于有n个数据的序列,共需n-1趟排序,第i趟对从l到n-i个数据进行比较、交换。冒泡排序的最坏情况是待排序序列逆序,第l趟比较n-1次,第2趟比较n-2次。依此类推,最后趟比较1次,一共进行n-l趟排序。因此,冒泡排序在最坏情况下的比较次数是(n-1)+(n-2)+…+l,结果为n(n-1)/2。本题的正确答案是选项C。
61.B
62.D本题主要考查指向指针的指针。在程序中,首先定义了一个fun函数,函数无返回类型,函数的形参是一个指向指针的指针变量p,在该函数体中,首先将变量p的值加2,并保存在p中,根据指针变量的特性,这个加2是使指针变量往后移两个单位,如果开始指向第一个元素,现在则指向第三个元素(注意:这里并不是指移动两个字节)。然后输出*p,由于p是一个指向指针的变量,那么*p输出的也不是单个数组,而是一个首地址对应的字符串或数组,在本题中输出的是字符串。
在主函数中,定义一个指针数组a,并赋初值,然后调用函数fun,实参为a,输出的应该是指针数组中第3个指针对应的字符串,即Evening。\r\n\r\n\r\n
63.C
64.A在单链表的第一个结点前增加一个表头结点,队头指针指向表头结点,最后一个结点的指针域的值由NULL改为指向表头结点,这样的链表称为循环链表。循环链表是线性结构,有且只有一个根结点,每一个结点最多有一个前件,也最多有一个后件。循环链表表头结点为根结点,链表的最后一个结点为叶子节点,虽然它含有一个指向表头结点的指针,但是表头结点并不是它的一个后件。故选择A选项。
65.B一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
66.A循环调用fun函数,依次返回值为23456,s原值为l,累加以上返回值,最终结果为21,所以答案选择A)。
67.A根据二叉树的性质,n=n0+n1+n2(n表示总结点数,n0表示叶子结点数,nl表示度数为1的结点数,n2表示度数为2的结点数),而叶子结点数总是比度数为2的结点数多1,所以n2=n1-1=5-1=4,而n=25,所以nl=n-n0-n2=25-5-4=16。
68.C主要是考查while和getchar函数,getchar函数是输入字符函数,while是循环语句,所以当输入的字符为换行符时将执行。
69.A
\n本题考查while循环。在while循环中,y自加每次循环都加l,在循环体内y--每次减1,所以总的y值不变,当x自加到7时,不满足循环条件,循环结束。
\n
70.B\n数据库管理系统是一种软件系统,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是数据库系统的核心。
\n
71.CA选项指出“C语言中的注释可以夹在变量名或关键字的中间”,该选项是正确的。通常采用/*.....*/作为C语言里的注释符,注释符之间的内容是方便他人理解程序而写的,对编译和运行不起作用。注释可以在程序的任何位置。
B选项“C语言中使用变量必须是先定义后使用”,该选项是正确的。变量先定义后使用是编程语言的语法规则。这样可以让编译器首先知道该定义变量的类型,可以事先为该变量安排好存储空间,不至于最后编译失败。如果预先没有定义,编译器会因为不清楚该变量的类型而导致随意分配内存空间,这样可能导致空间分配过大了浪费或因为空间过小无法存储数据。
C选项“C语言表达式运算符两侧的运算数类型必须一致”,该选项是错误的。C语言允许整型、实型、字符型数据间进行混合运算。在运算时,不同类型的数据要先转换成同一类型,然后进行运算。
D选项“C语言的数值常量中夹带空格不影响常量值的正确表示”,该选项是正确的。空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用。在其他地方出现时,只起间隔作用,编译程序对它们忽略。因此,在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。
72.A本题中if(a=1)b=1;-与elsed=3;之间多了语句c=2;因此会出现else语句的位置错误的编译失败提示。
73.D
74.A本题中第一次调用为fun(8,fun(5,6)),因为fun(5,6)返回值为5,所以第二次调用为fun(8,5)--6,因此选择A)。
75.C解析:考查栈和队列概念的掌握。栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种'后进先出'的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种'先进先出'的线性表。模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。
76.A本题考查的是文件操作。题中“fopen(fn,”w”)”的作用是打开fn所指向的文件,使用文件方式为“写入”;
“每uts(str,fp)”的作用是将字符str的值输出到fb所指向的文件中去。在程序中,两次使用“写入”的方式打开同一个文件,在第二次打开时,文件指针指向文件头,所以此次写入的数据覆盖了文件原有的数据,故本题中tl.dat的内容为end。故本题答案为A)。
77.C
78.C#define行为非C语句,所以没有“;”号,%的运算对象只能为整型,逗号运算符的优先级最低。
79.C
80.B
81.(1)错误:switch(g);正确:switch(g)(2)错误:casel:case2:returnl;正确:casel;case2:returnl;【解析】此题考查C语言的语法规则,switch(表达式)后不应该带有“;”,case语句常量后应该是“:”。switch语句的一般形式如下:switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句i;default:语句n+1;}
82.
【解析】要得到分数最高的学生数据,首先应检查每一个学生的数据,得到学生的最高成绩。成绩最高的学生不止一个,将每一个学生的成绩与最高成绩相比较,得出最高成绩学生的个数,将成绩最高的学生记录放在指定数组中通过形参返回。成绩最高的学生个数由函数值返回给主函数。
2022年四川省遂宁市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度是O。
A.求链表的第i个结点B.在地址为P的结点之后插入一个结点C.删除表头结点D.删除地址为P的结点的后继结点
2.
3.设变量已正确定义,则以下能正确计算n!的程序段是______。
A.f=0;for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i<n;i++)f*=i;
C.f=1;for(i=n;i>1;i++)f*=i;
D.f=1;for(i=n;i>=2;i--)f*=i;
4.
5.有以下程序A.6B.3C.8D.12
6.以下选项中,能用作用户标识符的是()。
A._0_B.8_8C.voidD.unsigned
7.在学生管理的关系数据库中,存取一个学生信息的数据单位是()。
A.文件B.数据库C.字段D.记录
8.C语言的基本单位是()。
A.函数B.过程C.子程序D.子函数
9.有如下程序段
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
程序运行后输出的结果是A.A.63
B.36
C.编译出错
D.00
10.
11.有种数据结构叫跳跃列表(SkipList),它是一种基于并联的链表的随机化数据结构,其效率可比拟于二叉查找树(对于大于数操作需要O(logn)平均时间)。它是按层建造的。底层是一个普通的有序链表。每个更高层都充当下面列表的“快速跑道”,这里在层i中的元素按概率l/p出现在层i+1中。平均起来,每个元素都在p/(p-1)个列表中出现,而最高层的元素(通常是在跳跃列表前段的一个特殊的头元素)在O(logpn)个列表中出现。调节p的大小可以在内存消耗和时间消耗上进行折中。试分析在该数据结构中查找一个元素的平均时间复杂度。
A.O(logn)B.O(n)C.O(n*logn)D.以上都不正确
12.算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是A.A.有零个输入或多个输入B.高效性C.有穷性D.确定性
13.软件测试的目的是()。
A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误
14.
15.
16.有以下程序:#include<stdio.h>main{inta=1,b=2;while(a<6){b+=a;a4+=2;b%=10;)printf("%d,%d\n",a,b);}程序运行后的输出结果是()。A.5,11B.7,1C.7,11D.6,1
17.表达式9!=10的值为()。
A.非零值B.trueC.0D.1
18.
下列程序的输出结果是()。
#include<stdio.h>
main
{inta[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;
p=a;
for(i=0;i<3;i++)
{if(i<2)
p[1][i]=p[1][i]-1;
else
p[1][i]=1;
}
printf("%d\n",a[o][1]+a[1][1]+a[1][2]);
}
A.8B.7C.12D.9
19.有以下程序:程序运行后的输出结果是()。A.1.000000B.0.000000C.0.250000D.0.500000
20.若a是数值类型,则逻辑表达式“(a==1)||(a!=1)”的值是()。
A.1B.0C.2D.不知道a的值,不能确定
二、2.填空题(20题)21.下列程序段的输出结果是______。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':printf("good");break;
case'c':printf("morning");
case'd':printf("class");
}
22.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*)【】;
23.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。
24.若线性表的长度经常发生变化,那么该线性表应采用的存储结构是【】。
25.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。
26.结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。
27.若a=1,b=2,则表达式!(x=A)‖(y=B)&&0的值是______。
28.若有如下定义,则该数组的第一维大小为【】。
intb[][4]={1,2,3,4,5,6,7,8,9);
29.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
30.有以下程序:
#definef(x)x*x
main()
{inti;
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
执行后的输出结果是【】。
31.下列程序的功能是计算1~100的整数的累加和。
main()
{inti,sum=【】;
i=1;
for(【】)
{sum+=i;
i++;
}
printf("sum=%d\n",【】);
}
32.十进制数53转换为十六进制数为【】。
33.若有如下定义,则该数组的第一维大小为【】。
intb[][4]={1,2,3,4,5,6,7,8,9}
34.以下程序是从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。请填
main()
{
inti,a[20],sum,count;
sum=count=【】;
for(i=0;i<20;i++)scanf("%d("%d",【】);
for(i=0;i<20;i++)
{
if(a[i]>0)
{count++;
sum+=【】;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
35.近年来形成了软件开发的多种模式,大致有3种类型:基于瀑布模型的结构化生命周期方法、基于动态定义需求的【】方法和基于结构的面向对象的软件开发方法。
36.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。
37.下列程序的输出结果【】。
#definePR(ar)printf("ar=%d",ar)
main()
{intj,a[]={1,3,5,7,9,1l,13,1},*p=a+5;
for(j=3;j;j--)
switch(j)
{case1:
case2:PR(*p++);break;
case3:PR(*(--p));}}
38.以下程序的运行结果是()。#defineS(x)x*xmain(){intk=1;while(k<=4){printf("%d,",S(k));k++;}
39.以下程序的运行结果是【】。
intk=0;
voidfun(intm)
{m+=k;k+=m;
printf("m=%dk=%d",m,k++)
}
main()
{inti=4;
fun(i++);
printf("i=%dk=%d\n",i,k);
}
40.以下程序运行后的输出结果是______。
voidfun(intx,inty)
{
x=x+y;y=x-y;x=x-y;
printf("%d,%d,",x,y);
}
main()
{
intx=2,y=3;
fun(x,y);
printf("%d,%d\n",x,y);
}
三、1.选择题(20题)41.下列程序的运行结果为
#include<stdio.h>
voidabc(char*str)
{inta,b;
for(a=b=0;str[a]!='\0';a++)
if(str[a]!='c')
str[b++]=str[a];
str[b]='\0';}
voidmain()
{charstr[]="abcdef";
abc(str);
printf("str[]=%s",str);}
A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab
42.数据库设计的4个阶段是:需求分析、概念设计、逻辑设计和()。
A.编码设计B.测试阶段C.运行阶段D.物理设计
43.有下列函数定义:
fun(floath)
{printf("%f,%f\n”,h,h*h);}
该函数的类型是()。
A.int类型B.float类型C.void类型D.函数无类型说明,定义有错
44.下面函数调用语句含有实参的个数为func((exp1,exp2),(exp3,exp4,exp5));
A.1B.2C.4D.5
45.设有如下定义:intx=1,y=-1;则下列语句的输出结果是______。printf("%d\n",(x--&++y));
A.1B.0C.-1D.2
46.关系数据库的数据及更新操作必须遵循()等完整性规则。
A.实体完整性和参照完整性
B.参照完整性和用户自定义完整性
C.实体完整性和用户自定义完整性
D.实体完整性、参照完整性和用户自定义完整性
47.下列选项中非法的字符常量是()。
A.'\t'B.'\039'C.','D.'\n'
48.需求分析中开发人员要从用户那里了解
A.软件做什么B.用户使用界面C.输入的信息D.软件的规模
49.设有定义:inta=2,b=3,c=4;,则下列选项中值为0的表达式是()。
A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数
50.关于结构化程序设计原则和方法描述错误的是()。
A.选用的结构只准许有一个入口和一个出口
B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现
C.不允许使用GOTO语句
D.语言中所没有的控制结构,应该采用前后一致的方法来模拟
51.有下列二叉树,对此二叉树前序遍历的结果为()。
A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH
52.下述函数功能是_______。intfun(char*x){char*y=x;while(*y++);returny-s-1;}
A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面
53.函数fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}
A.字符串a的长度B.字符串b的长度C.字符串a和b的长度之差D.字符串a和b的长度之和
54.有以下程序段
charch;intk;
ch=′a′;k=12;
printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);
已知字符a的ASCII码值为97,则执行上述程序段后输出结果是
A.因变量类型与格式描述符的类型不匹配输出无定值
B.输出项与格式描述符个数不符,输出为零值或不定值
C.a,97,12k=12
D.a,97,k=12
55.以下scanf函数调用语句中对结构体变量成员的引用不正确的是
structpupil
{charname[20];
intage
intsex;
}pup[5],*p;
p=pup;
A.scanf("%s",pup[0].name);
B.scanf("%d",&pup[0].age);
C.scanf("%dT",&(p->sex));
D.scanf("%d",p->age);
56.假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是______。
A.free(q);p->next=q->next;
B.(*p).next=(*q).next;free(q);
C.q=(*q).next;(*p).next=q;free(q);
D.q=q->next;p->next=q;p=p->next;free(p);
57.根据下列定义,能打印出字母P的语句是()。
structstu{charname[10];
intage;
};
structstus[10]={"John",11,
"Pau1",12,
"Mary",11,
"adam",12
};
A.primf("%c",s[3].name};
B.primf("%c",s[3].name[1]);
C.printf("%c",s[2].name[1]);
D.printf("%c",s[1].name[0]);
58.下列程序(注意:ch[0]在低字节,ch[1]在高字节)的输出结果是______。#include<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}
A.13B.14C.208D.209
59.有以下程序:voidfun(int*a,inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;i++;j--;fun(a,ij);}}main(){intx[]={2,6,1,8},i;fun(x,0,3);for(i=0;i<4;i++)printf("%2d",x[i]);printf("\"n);}程序运行后的输出结果是()。
A.1268B.8621C.8162D.8612
60.冒泡排序在最坏情况下的比较次数是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
四、选择题(20题)61.
62.有以下程序
#include<stdio.h>
voidfun(char**p)
{p=p+2;
printf("%s\n",*p);
}
main()
{char*a[]={"Morning","Afternoon","Evening","Night"};
fun(a);
}
程序的运行结果是
A.rning
B.afternoon
C.ternoon
D.Evening
63.
64.非空循环链表所表示的数据结构()。
A.有根结点也有叶子结点B.没有根结点但有叶子结点C.有根结点但没有叶子结点D.没有根结点也没有叶子结点
65.软件设计中划分模块的一个准则是()。A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合
66.有以下程序程序运行后的输出结果是()。
A.21B.11C.6D.120
67.一棵二叉树共有25个结点,其中5个是叶子结点,则度为l的结点数为()。
A.16B.10C.6D.4
68.有以下程序段#include<stdio.h>main(){...while(getchar()!=\n);...}以下叙述中正确的是()。A.此while语句将无限循环
B.getchar()不可以出现在while语句的条件表达式中
C.当执行此while语句时,只有按回车键程序才能继续执行
D.当执行此while语句时,按任意键程序就能继续执行
69.
有下列程序:
#include<stdio.h>
main
{intx=0;
inty=0;
while(x<7&&++v)
{y--;
x++;}
printf("%d,%d",y,x);
}
程序的输出结果是()。
A.0,7B.7,7C.0,6D.1,6
70.数据库系统的核心是()。
A.数据库B.数据库管理系统C.数据库管理员D.数据库应用系统
71.以下关于C语言的叙述中,不正确的是
A.C语言中的注释可以夹在变量名或关键字的中间
B.C语言中使用变量必须是先定义后使用
C.C语言表达式运算符两侧的运算数类型必须一致
D.C语言的数值常量中夹带空格不影响常量值的正确表示
72.有以下程序程序输出()。
A.编译有错B.0,0,0,3C.1,1,2,0D.0,l,2,0
73.
74.有以下程序:
程序运行后的输出结果是()。
A.6B.3C.8D.12
75.栈和队列的共同特点是()。
A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点
76.以下叙述中错误的是()。
A.getehar函数用于从磁盘文件读入字符
B.gets匿数用于从终端读入字符串
C.取ns函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
77.(51)在计算机中,算法是指()
A.查询方法
B.加工方法
C.解题方案的准确而完整的描述
D.排序方法
78.以下叙述中正确的是()。
A)C程序中的#include和#define行均是C语句,只是语法不同
B)除赋值运算符外,逗号运算符的优先级最低
C)C程序中,j++;是赋值语句
D)C程序中,+、-、*、/、%号是算数运算符,可用于整型和实型数的运算
79.
80.
五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…例如,若给n输入7,则该项的斐波拉契数值为l3。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>longfun(intg){//****found****switch(g);{case0:return0;//****found****casel:case2:return1;}return(fun(g-1)+fun(g-2));}voidmain{longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%d\n",n);fib=fun(n);printf("fib=%d\n\n",fib);}
六、程序设计题(1题)82.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组S中,请编写函数proc(),它的功能是:把分数最高的学生数据放在h所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高学生的人数。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
参考答案
1.A
2.C
3.D解析:A选项,将f赋值为0,结果得到0,因为0乘任何数都为0;B选项,i<n,计算的是(n-1)!,C选项将陷入死循环。
4.D\r\n
5.A[解析]本题中第一次调用为fum(8.fn(5.6)),因为fun(5.6)返回值为5.所以第二次调用为fn(8.5)=6.所以选择A)。
6.AC语言的标识符由字母、数字、下划线组成,且第1个字符必须是字母或下划线。另外,关键字不能作为标识符。B选项中以数字8开头,所以错误。C选项与D选项中用的是关键字“void”与“unsigned”,所以错误。故本题答案为A选项。
7.D解析:在关系数据表中,行称为元组,对应存储文件中的记录,列称为属性,对应存储文件中的字段,所以本题答案为D。
8.AA。【解析】C语言是函数式的语言。它的基本组成单位是函数,在C语言中任何程序都是由一个或者多个函数组成的。
9.B在本题中,程序首先定义了一个无返回值的函数fun,该函数带有两个整型的指针形参变量,在函数体中,首先定义一个整型指针变量k,然后试图利用k来交换a和b的结果。但处理语句k=a;很明显是对地址进行赋值操作。在C语言中,指针变量作为函数参数时,可以改变被指向的变量的值,但不能改变指针变量本身的值,即我们可以改变实参指向的变量的值,不能使实参指向其他的变量。因此,本函数并不能交换形参所指向变量的结果。
在主函数中,首先定义了两个整型变量a和b,并分别被初始化为3和6,然后定义两个指针变量x和y,分别指向a和b,接着调用fun函数,传递的实参为指针变量x和y,根据前面对fun函数的分析可知,调用该函数后并不能实现a和b数组的交换,因此,执行输出语句后,输出的结果是36。本题正确答案选B。
10.B
11.A
12.B
13.D软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能,也不是为了评估软件或改正错误,因此本题答案为D)。
14.D
15.A
16.B“b+=a;”等价于“b=b+a;”,“a+=2;”等价于“a=a±2;”,“bA=10;”等价于“b=b%=10;”。循环体执行3次,最终结果为7,1。
17.D
18.B
\n本题考查for循环及if…else语句嵌套,第1次执行for循环,p[1][0]=p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,p[1][2]=l,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。
\n
19.D程序定义double变量x、y,给x赋初值2.0。if语句判断,当x小于0.0时,给y赋值0.0。否则当x小于10.0时,y的值为1.0/x;当x大于等于10.0时,y的值为1.0。题干中x的值为2.0,所以y的值为1.0/x,即0.500000。本题答案为D选项。
20.A逻辑或“||”要求两边的运算对象有一个非零值,结果就为真。变量a的值不确定,但是若a为1,则左边运算对象的值为1;若a不为1,则右边运算对象的值为1,所以总能保证一边为非零值。故本题答案为A选项。
21.morningclassmorningclass解析:本题考查了两个知识点:①“++,--”运算后缀形式是先使用变量原来的值,使用完后再使其增1或减1;②在switch语句中,当n='c'时,执行“case'c'”,输出morning;因为此句中没有break语句,因此接着执行“case'd':”,输出class,最终输出结果为morningclass。
22.malloc(11)malloc函数的格式是void*(或char*)malloc(size),size表示应分配的存储区,此题要分配11字节的单元,把11代入即可。
23.封装封装
24.链式存储结构链式存储结构
25.buf的首地址buf的首地址解析:考查fsets()函数的功能,f8ets()函数用来从文件中读入字符串。调用格式为:f8ets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fsets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。
26.模块化模块化
27.00解析:根据运算符的运算顺序可知,该表达式最后运算的是与(&&)运算,而任何表达式与“0”进行“与”运算,结果都为0。
28.33解析:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人文历史与自然科学结合高中物理实验教案
- 八月份普法宣传活动方案
- 公交五一志愿活动方案
- 公交冬运活动方案
- 绳操比赛150字12篇
- 公众号活动策划方案
- 公会信用卡活动方案
- 公会系列活动方案
- 公共调查活动方案
- 商业保密协议及保密条款内容
- 2023年高考英语试卷(新课标Ⅰ卷)含答案解析
- 《酒店营销推广方案》课件
- 慢性便秘肠道微生态临床应用中国专家共识2024版解读
- 《航空材料无损检测》课件-航空金属材料-钛及钛合金
- 危险化学品安全管理领导小组及工作职责
- 跟着音乐游中国(广州大学)知到智慧树章节答案
- 高中美术高中美术鉴赏《抒情与写意-文人画》课件
- 缺血性肠病病例
- 新苏教版小学科学四年级下册期末试卷及答案
- 2024年大学毛概期末全真模拟试卷及答案(共六套)
- 地弹簧门安装合同(2篇)
评论
0/150
提交评论