




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年江苏省南通市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。
A.13B.33C.18D.40
2.有以下程序:程序运行后的输出结果是()。
A.5B.2C.3D.8
3.在下列排序算法中,在待排序的数据表已经为有序时,花费时间反而最多的是()
A.希尔排序B.堆排序C.冒泡排序D.快速排序
4.有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母:
程序运行后的输出结果是()。
A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!
5.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序运行后的输出结果是()。A.9,18B.8,11C.7,11D.10,14
6.可以作为Windows外壳程序的是()
A.程序管理器B.文件管理C.程序管理器和文件管理器D.主群组
7.设有定义:intx[2][3];,则以下关于二维数组X的叙述错误的是()。
A.x[0]可看做是由3个整型元素组成的一维数组
B.x[0]和x[l]是数组名,分别代表不同的地址常量
C.数组X包含6个元素
D.可以用语句x[o]=0;为数组所有元素赋初值0
8.
9.以下叙述中错误的是()。
A.将函数内的局部变量说明为static存储类是为了限制其他编译单位的引用
B.—个变量作用域的开始位置完全取决于变量定义语句的位置
C.全局变量可以在函数以外的任何部位进行定义
D.局部变量的“生存期”只限于本次函数调用,因此不能将局部变量的运算结果保存至下一次调用
10.关键路径是事件结点网络中()。
A.从源点到汇点的最长路径B.从源点到汇点的最短路径C.最长回路D.最短回路
11.设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为()。
A.fedcbaB.bcafedC.dcefbaD.cabdef
12.一个优化的程序可以生成n个元素集合的所有子集,那么该程序的时间复杂度是()
A.O(n!)B.O(nlogn)C.O(n^2)D.O(2^n)
13.下列能正确进行字符串赋值的是()。
A.chars[5]={"ABCDE"};
B.chars[5]={'A','B','C','D','E'};
C.char*s;s="ABCDE";
D.char*s;printf("%s",s);
14.有下列程序:
程序执行后的输出结果是()。
A.6,5,4,4,5,6,
B.1,2,3,4,5,6,
C.4,5,6,4,5,6,
D.1,2,3,6,5,4,
15.有如下定义:structperson{charname[9];intage;}structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};能输出字母M的是()
A.printf("%c\n",class[3].name);
B.printf("%c\n",class[3].name[1]);
C.printf("%c\n",class[2].name[1]);
D.printf("%c\n",class[2].name[0]);
16.有以下程序:
程序运行后的输出结果是()。
A.4321098765B.5678901234C.0987654321D.0987651234
17.下列选项中不合法的十六进制数是()。
A."0"xffB."0"X11C."0"x1gD.”0”Xabc
18.
19.下列写法正确的是()。
A.main(){inti=3,j;j=5}
B.main(){inti=3;
C.main()
D.main(){;}
20.关于排序算法的以下说法,错误的是()
A.归并排序的平均时间复杂度O(nlogn),最坏时间复杂度O(n^2)
B.堆排序平均时间复杂度O(nlogn),最坏时间复杂度O(nlogn)
C.冒泡排序平均时间复杂度O(n^2),最坏时间复杂度O(n^2)
D.快速排序的平均时间复杂度O(nlogn),最坏时间复杂度O(n^2)
二、2.填空题(20题)21.以下函数的功能是删除字符串s中的所有数字字符。请填空。
vioddele(char*s)
{intn=0,i;
for(i=0;s[i];i++)
if(______)
s[n++];s[i];
s[n]=______;
}
22.在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个______实际上对应一个处理模块。
23.栈的3种基本运算是:入栈、退栈和______。
24.存储结构的4种基本类型分别是顺序、链式、索引和【】。
25.Jackson方法是一种面向【】的结构化方法。
26.下列程序的输出结果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2,&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
27.按“先进后出”原则组织数据的数据结构是[]。
28.函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)
现在请你在下面的函数中填空,完成求π的功能。
#include"math.h"
{doubles=0.0;longi;
for(i=1;i<=n;i++)s=s+【】;
return(sqrt(6*S));
}
29.下面程序的功能是输出数组中最大的数,由a指针指向该元素。请填空。
main()
{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11),*a,*b;
for(【】)
if(*a<*b)a=b;
printf("%d",*a);
}
30.在树形结构中,树根结点没有______。
31.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。
#include<stdio.h>
voidf(intx[],intn)
{intp0,p1,i,j,t,m;
i=j=x[0];p0=p1=0;
for(m=0;m<n;m++)
{if(x[m]>i{i=x[m];p0=m;}
elseif(x[m]<j{j=x[m];p1:m;}
}
t=x[p0];x[p0]=x
32.以下程序的运行结果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
33.若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句()。
34.以下程序的运行结果是【】。
#include<stdio.h>
main()
{intfun();fun();}
fun()
{staticinta[3]={0,1,2};
inti;
for(i=0;i<3;i++)a[i]+=a[i];
for(i=0;i<3;i++)printf("%d,",a[i]);
printf("\n");}
35.以下程序是用递归方法求数组中的最大值及其下标值。请填空。
#defineM10
voidfindmax(int*a,intn,inti,int*pk)
{if(i<n)
{if(a[i]>a[*pk])【】;
findmax(a,n,i+1,&(*pk));}}
main()
{inta[M],j,n=0;
printf("\nEnter%ddata;\n",M);
for(i=0;i<M;i++)scanf("%d",a+i);
findmax(a,M,0,&n);
printf("Themaxinumis:%d\n",a[n]);
printf("It'sindexis;%d\n",n);}
36.以下程序运行后的输出结果是______。
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
37.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。
38.数据模型按不同应用层次分成3种类型,它们是概念数据模型、【】和物理数据模型。
39.下面的程序为6个整型变量A、B、C、D、E、F输入整数,并按从大到小的顺序输出整数及其所对应的变量名。例如,输入的数为3、2、5、7、4、6,则输出的形式为:D(7)F(6)C(5)E(4)A(3)B(2)。
#include<stdio.h>
intA,B,C,D,E,F;
struct
{
charn;
【】;
}tb1[]={{'A',&A},{'B',&B},{'C',&c},{'D',&D),{'E',&E},{'F',&F}},t;
main()
{
inti,j;
for(i=0;i<6;i++)scanf("%d",【】);
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
if(【】)
{
t=tb1[j];
tb1[j]=tb1[j+1];
tb1[j+1]=t;
}
for(i=0;i<6;i++)printf("%c(%d)",tb1[i].n,*tb1[i].p);
printf("\n");
}
40.以下程序的输出结果是【】。
#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))
}
三、1.选择题(20题)41.函数rewind的作用是
A.使文件位置指针重新返回文件的开始位置
B.将文件位置指针指向文件中所要求的特定位置
C.使文件位置指针指向文件的末尾
D.使文件位置指针自动移至下一个字符位置
42.6.C语言中下列叙述正确的是()
A.不能使用do-while语句构成的循环
B.do-while语句构成的循环,必须用break语句才能退出
C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环
43.以下选项中能正确把c1定义成结构体变量的是()。
A.typedefstruct{intred;intred;intgreen;intblue;}COLOR;COLORc1;
B.structcolorc1{intredintred;intgreenintblue;};
C.stmctcolor{intred,intgreen;intblue;}c1;
D.struct{intred;intgreen;intblue;}c1;
44.执行语句for(i=1;i++<4;);后变量i的值是______。
A.3B.4C.5D.不定
45.有下列二叉树,对此二叉树前序遍历的结果为()。
A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH
46.以下选项中属于C语言的数据类型是_______。
A.复数型B.逻辑型C.双精度型D.集合型
47.设有定义:structsk{inta;floatb;}data,*p;若有p=&data;,则对data中的a域的正确引用是()
A.(*p).data.aB.(*p).aC.p->data.aD.p.data.a
48.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则
A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次
49.若有如下语句:structa{charx[10]inty;}s,*t;t=&s;则对结构体变量s中的成员y的正确引用是()
A.a.y;B.t->y;C.t.y,D.*t->y;
50.在c语言中,变量的隐含存储类别是()。
A.autoB.staticC.externD.无存储类别
51.下列合法的字符型常量是()。
A.'\x13'B.'\081'C.'65'D.\n
52.下列关于栈的叙述中正确的是()
A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表
53.为了避免嵌套的if-else的二义性,C语言钡定:else与______配对。
A.缩排位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if
54.算法一般都可以用______控制结构组合而成。
A.循环、分支、递归B.顺序、循环、嵌套C.循环、递归、选择D.顺序、选择、循环
55.以下程序运行后,输出结果是______。main(){char*d[]={"ab","cde"};printf("%x",d[1]);}
A.cdeB.字符c的AScII码值C.字符c的地址D.出错
56.下列选项中属于C语言构造类型的是()
A.指针类型B.空类型C.枚举类型D.数组类型
57.以下叙述中不正确的是
A.在不同的函数中可以使用相同的名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
58.有下列程序:
fun(intx)
{intp;
if(x==0‖x==1)return(3);
p=x-fun(x-2);
returnp;
}
main()
{printf("%d\n",fun(7));}
执行后的输出结果是()。
A.7B.3C.2D.0
59.有以下程序;voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序运行后的输出结果是()。
A.ABCDDEFEDBDB.abeDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
60.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是
A.ABCEDB.DCBEAC.DBCEAD.CDABE
四、选择题(20题)61.
62.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序运行后的输出结果是______。
A.8B.10C.7D.11
63.
64.
65.有以下程序
voidsort(inta[],intn)
{
inti,j,t;
for(i=0;i<n-1;i+=2)
for(j=i+2;j<n;j+=2)
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
main()
{
intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(aa,10);
for(i=0;i<10;i++)
printf("%d,",aa[i]);
printf("\n");
}
执行后的输出结果是
A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,3,2,1,
C.9,2,7,4,5,6,3,8,1,10D.1,10,3,8,5,6,7,4,9,2,
66.
67.以下定义语句中正确的是()。
68.设有定义:intm=0;。以下选项的四个表达式中与其他三个表达式的值不相同的是()。
A.++mB.m+=1C.m++D.m+1
69.以下选项中,不能作为合法常量的是
A.1.24e03B.1.34e0.3C.1.24e+3D.1.34e0
70.
设变量已正确定义,则以下能正确计算f=n!的程序是()。
A.f=0:for(i=1;i<=n;i++)f*=i:
B.F=1:for(i=l;i<2n;i++)f*=i:
C.f=l:for(i=n;i>1;i++)f*=i:
D.f=1;for(i=n;i>=2;i--)f*=i:
71.以下结构体类型说明和变量定义中正确的是()。
72.设inti=2,j=1,k=3,则表达式i&&(i+j)&k|i+j的值是_______。
A.0B.2C.1D.3
73.以下程序的输出结果是()。
A.678910
B.13579
C.12345
D.62345
74.下列叙述中正确的是()。
A.数据库不需要操作系统的支持
B.数据库设计是指设计数据库管理系统
C.数据库是存储在计算机存储设备中的、结构化的相关数据的集合
D.数据库系统中,数据的物理结构必须与逻辑结构一致
75.
76.
77.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是()。
A.文件开始B.文件末尾C.文件当前位置D.以上都不对
78.
79.有以下程序程序运行后的输出结果是()。
A.4B.3C.5D.6
80.设有定义"doublea[10],*s=a;",以下能够代表数组元素a[3]的是()。
A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3
五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传人,若k的值为600,则函数的值为5671。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是根据以下公式计算S,并将计算结果作为函数值返回,通过形参传入。例如,若n的值为11时,函数的值为1.833333。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn){}voidmain(){ intn; floats; system(“CLS”); printf(“\nPleaseenterN:”); scanf(“%d”,&n); s=fun(n); printf(“Theresultis:%f\n”,s);}
参考答案
1.B
2.D题干中,函数fun的第2个参数通过指针作为函数返回值,它的功能是通过递归,求得fun(n)的值为fun(n-1)+fun(n-2)。由于当n取值为1和2时,值为1。所以可知整个数列如下:1,1,2,3,5,8,…,即某一项是前两项之和。所以当n取值为6时,fun(6,*s)返回s的值为3+5=8。本题答案为D选项。
3.D
4.D调用缸函数后,实参数组名sl传给形参指针P,P也指向数组sl。m函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母的话,就把前一个字符转换为大写。程序中语句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是将P[i一1]中的字符转换为大写。因此D选项正确。
5.D第一次执行循环前,a=1,满足a<8,执行循环后,b=3,a=3。执行完a++操作后,a=4。由于a<8,执行第二次循环后,b=7,a=6,执行完a++操作后,a=7。由于a<8,执行第三次循环后,b=14,a=9,执行完a++操作后a=10。此时不满足a<8,跳出循环。
6.C
7.Dx[0]是不能赋值的。
8.D
9.A将函数内的局部变量说明为static存储类,第1次调用该函数时才对其初始化,后续调用时使用上一次调用结束后的值;函数体内的局部变量无论是否声明为stat\x1fic,外部编译单位都不能引用,选项A错误,其他选项正确。本题答案为A选项。
10.A
11.D
12.D
13.C解析:字符串存储要有结束符“\\0”且要占用一个空间,选项A)、B的空间不够:printf用来输出字符,不能输入字符串.
14.D程序定义数组a,使用6个元素对其初始化,接着以写二进制方式打开文件d.dat。调用fwrite函数将a的6个元素逆序(654321)写入文件,接着调用rewind函数,将文件指针移动到文件开始位置。调用fread函数读入3个整数,逐个存放到a开始下标为3的3个位置,即a[3]=6,a[4]=5,a[5]=4,关闭文件。再次调用for循环输出a,结果为:1,2,3,6,5,4,。本题答案为D选项。
15.D
16.B该程序首先给一维数组赋值,然后三次调用fun函数,其中fun(a,0,3);功能是将一维数组中第1个元素和第4个元素互换,第2个元素和第3个元素互换;其中fun(a,4,9);功能是将一维数组中第5个元素和第10个元素互换,第6个和第9个元素互换,第7个元素和第8个元素互换;其中fun(a.O,9);功能是将将一维数组中第l个元素和第10个元素互换,第2个元素和第9个元素互换……依此类推。因此B选项正确。
17.C十六进制是以“0x、0X”开头的字符串,字符串中只能含有0~9这l0个数字和a、b、C、d、e、f这6个字母。
18.A
19.D解析:本题考查语句的基本构成。选项A)中j=5后面少了一个分号:选项B)中少了“}”;选项C)不是一个完整的函数定义格式,一个完整的函数定义格式还包括一对花括号:选项D)正确,是一个空语句。
20.A
21.s[i]<'0'‖s[i]>9或!(s[i]>='0'&&s[i]<='9')或!(isdigit(s[i]))isdigit(s[i])==0或s[i]>'9'‖s[i>'0'或!(s[i]<='9'&&s[i]>='0')或*(s+i)<'0'‖*(s+i)>'9'或!(*(s+i)>='0'&&*(s+i)<=9或!(isdigit(*(s+i)))或*(s+i)>='9'&&*(s+i)<='0'!(*(s+i)<='9'&&*(s+i)>='0'或iss[i]<'0'‖s[i]>9,或\r\n!(s[i]>='0'&&s[i]<='9')或!(isdigit(s[i]))\r\nisdigit(s[i])==0或s[i]>'9'‖s[i>'0'或\r\n!(s[i]<='9'&&s[i]>='0')或*(s+i)<'0'‖*(s+i)>'9'或\r\n!(*(s+i)>='0'&&*(s+i)<=9或!(isdigit(*(s+i)))或\r\n*(s+i)>='9'&&*(s+i)<='0'\r\n!(*(s+i)<='9'&&*(s+i)>='0'或is解析:本题考核的知识点是字符指针变量作为函数的参数以及与字符串有关的算法。从一个字符串中删除某字符的方法是从字符串的第一个字符开始一一判断该字符是否是要删除的字符,若不是则把它放到结果字符串中,若是则不放入结果字符串中。本题的第一个空应判断a[i]是否为数字字符,只有在不是数字字符的情况下才存入结果字符串,所以应填入s[i]<'0'‖s[i]>'9'。最后应在结果字符串的末尾填上字符串结束标志“\\0”。
22.加工加工解析:数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。其中的每一个加工对应一个处理模块。
23.读栈顶元素读栈顶元素解析:栈的基本运算有3种:入栈、退栈和读取栈顶元素。其中,入栈是指在栈顶插入一个新的元素;退栈是指取出栈顶元素并赋值给一个变量;读栈顶元素是将栈顶元素赋值给一个指定的变量,不删除栈顶元素。
24.散列散列
25.数据结构数据结构解析:Jackson方法是—‘种面向数据结构的结构化方法。
26.本程序定义了3个指针变量p1、p2、p,并且将a、b的地址分别赋给p1、p2,则*p1=a=2,*p2=b=4,所以表达式*p1*(*p2)的值是8。在赋值语句的左边是*(p=&c),即使指针p指向了变量c,因而*(p)代表了c的存储单元,赋值语句“*(p=&c)=*p1*(*p2);”是把整数8赋给了变量c。\r\n\r\n
27.栈栈解析:栈和队列都是—种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的—端进行插入或删除操作,是—种“先进后出”的线性表;而队列只允许在表的—端进行插入操作,在另—端进行删除操作,是—种“先进先出”的线性表。
28.0/(i*i)或(double)1/(i*i)0/(i*i)或(double)1/(i*i)解析:表达式1+1/(2*2)+1/(3*3)+...+1(n*n)可写为1/(1*1)+1/(2*2)+1/(3*3)+...+1(n*n)
n
即:∑1÷(i×i)
i=1
对应的C语言的表达式s=s+1.0/(i*i)。注:必须要写成1.0的形式,否则1/(i,i)返回值为其值截尾取整,即恒为0。
29.a=sb=s+1;b-s<sizeof(s)/sizeof(s[0]);b++a=s,b=s+1;b-s<sizeof(s)/sizeof(s[0]);b++解析:题目要求输出数组中最大的数,所以要遍历整个数组,而指针a用来指向最大数,所以循环变量只有使用指针b。for初始化时,应该先让a指向第1个数,然后让b指向第2个数,故循环初始化语句应该为a=s,b=s+1或其他等价表达式。因为要使b遍历整个数组,故循环条件应该为b-s<sizeof(s)/sizeof(s[0])或其他等价表达式。最后每次循环应该让b往后移动一位,故for的第3条语句应该是++b、b++或其他等价形势。所以本题应填a=s,b=s+1;b-s<sizeof(s)/sizeof(s[0]);b++或其他等价语句。
30.前件前件
31.函数f()通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1)交换位置,再将最小值x[p1]和第一个元素(x[0])进行交换,所以空白处应该填入x[0]。\r\n\r\n
32.12300123001,2,3,0,0,1,2,3,0,0,解析:本题考查文件读写函数fread和fwrite的用法。fwrite函数将数组a的前5个元素输出到文件fp中两次,共10个字节,再调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,0},最后的输出结果为'1,2,3,0,0,1,2,3,0,0,'。
33.printf(“a=%db=%d”aB);printf(“a=%d,b=%d”,a,B);解析:printf函数的一般格式为:“printf(格式控制,输出表列)”。
34.0240480,2,4\r\n0,4,8解析:本题主要考查for循环语句的使用以及静态局部变量的特点。
35.*pk=a[i]*pk=a[i]解析:通过参数传递,findmax函数接收到4个参数,分别是数组a(需要对其中的数据按照题目的要求进行计算)、10(数组a中的元素个数)、0(数组a的起始位置)、指针变量n(对数组a中的元素进行遍历)。我们了解了这些参数的作用后,再对递归调用的函数进行分析,就不难得出结论了。注意:通过对本例中递归函数的分析掌握递归算法的执行原理。
36.136136解析:本题考核的知识点是函数递归。主函数调用函数fun(6),由于6/2>0为真递归调用fun(3),接着递归调用fun(1),输出1,返回上一层输出3,在返回上一层输出6。故空格处应该填136。
37.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。
38.逻辑数据模型逻辑数据模型解析:数据是现实世界符号的抽象,而数据模型(datamodel)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptualdatamodel)、逻辑数据模型(logicdatamodel)、物理数据模型(physicaldatamodel)。
39.int*ptb1[i].p*tb1[j].p<*tb1[j+1].p
40.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。
41.A解析:函数rewind的功能是将文件指针重新指向一个流的开头。用法如下:
intrewind(FILE*stream);并且无返值。
42.D解析:本题考查do-while语句。C语言支持do-while语句,选项A)错误;do-while构成的循环,当while语句中的表达式值为零时结束循环,故选项B)、C)都是错误的。
43.D解析:因为结构体中不能出现同名的成员变量,所以选项A和B都是错误的;又因为结构体中成员的定义应该由分号隔开,所以选项C也是错误的。选项D定义了一个无名结构体,并同时定义该结构体变量c1,是正确的写法。故应该选择D。
44.C解析:for语句中的表达式可以部分或全部省略,但两个“;”不能省略,若3个表达式均省略,会因为缺少条件判断,导致循环无限执行,而形成死循环。本题中当i的值为5的时候,循环终止。
45.B解析:对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左,右子树。
46.C解析:C语言的数据类型分为基本类型、构造类型、指针类型、空类型四大类。其中,基本类型分为整型、字符型、实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。
47.B
48.B解析:本题考查while语句的使用。本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符'!'的优先级大于不等于运算符'!='的优先级。
49.B解析:本题中的a是结构体名,s是结构体a的变量,t是结构体a的指针。通过变量直接访问结构体成员应该使用“.”运算符,而通过指针间接访问结构体成员应该使用“->”运算符。故本题的正确答案为B。
50.A解析:auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字'auto'可以省略,auto不写则隐含确定为'自动存储类别',属于动态存储方式。
51.A解析:C语言的字符常量是用单引号(\')括起来的一个字符,也可以用以一个“\\”开头的字符序列来表示字符常量。其中形式\\ddd表示1到3位8进制数所代表的字符;形式\\xhh表示1到2位16进制数所代表的字符。在本题中\'\\x13\'表示回车符,是一个字符常量;而\'\\081\'用8进制数所代表的字符形式不正确,因为8进制数所表示的字符中不会出现数字“8”;\'65\'单引号(即撇号)括起来的不是一个字符,而是一个十进制数字;'\\n'是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。
52.D解析:栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素,所以栈也被称为“先进后出”表或“后进先出”表。
53.B解析:在if语句中又包含一个或多个if语句称为if语句的嵌套。应当注意if与else的配对关系,在C语言中,从量内层开始,else总是与它上面最近的(未曾配对的)if配对。
54.D解析:算法的控制结构给出了算法的基本框架,不仅决定了算法中各操作的执行顺序,也直接反映了算法的设计是否符合结构化原则。一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。
55.C解析:指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为:类型名*数组名[数组长度],在本题main函数中定义指针数组d,它有两个元素,其初值分别是“ab”、“cde”的首地址。d[1]的值为“cde”的首地址。%x是指以十六进制数形式输出整数。
56.D解析:构造类型数据是由基本类型数据按一定规则组成的。C语言中的构造类型数据只有3种,它们是数组类型、结构体类型和共用体类型。故应该选择D。
57.D解析:C语言在函数中说明的变量为局部变量,只在函数内起作用但不会影响到其他函数。所以在不同的函数中使用相同的函数名不代表是同一函数,A)项正确。在函数定义时声明的参数只在函数内部起作用,是函数的局部变量,B)正确。在一个函数中定义的变量是这个函数的局部变量,所以只在这个函数内起作用,C)正确。复合语句中定义的变量其作用域是这个复合语句,不会扩大到整个函数,所以D)项错误。注意:函数的书写风格。
58.C解析:因为在函数fun(intx)中,如果参数x等于0或1时,返回值3。否则p=x-fun(x-2)这是一个递归函数,所以在主函数调用fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1))=7-(5-(3-3))=7-5=2”,所以最后的输出结果为2。
59.B解析:本题中的函数ss()有两个参数,一个是字符型指针变量s,另一个是字符型变量t。在函数中通过一个while循环,在循环中一次取出s指向的字符串并判断它是否和t中存放的字符相同,若相等,则执行“*s=t-'a'+'A';”(若是小写字母,则把它转换成大写字母)语句。在主函数中执行函数调用ss(str1,c),很显然是把str1数组中所有字符“d”变成大写字母,其他字符不变。所以4个选项中B正确。
60.B解析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。所以出栈时一定是先出D,再出C,最后出A。
61.D
62.A解析:本题中定义一个全局变量a和一个局部变量a。局部变量和全局变量的不同在于,局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失,而全局变量是在函数外部任意位置上定义的变量,它的作用域从变量定义的位置开始,到整个源文件结束为止。若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,起作用的将是局部变量,与同名的全局变量不发生任何关系。在程序中首先定义了变量s并赋值为0,接着在嵌套的复合语句{}中定义了变量a并赋初值为5,接着执行语句s+=a+a;在这条语句中a加1,但表达式a++还是原来的值,故s=s+5,s为5,程序执行到外层,此时{}内定义的变量a不再有效,此时的变量a为{}之前定义的且初值为3,接着执行{}后面的语句s+=a++;相当于执行语句s=s+(++);即s=5+3,最后值为8,所以最后输出的s值为8。所以4个选项中A正确。
63.D
64.A
65.Csort函数的功能实际上是对数组中奇数位置上的数进行从大到小排序。排序后的结果应该为9,2,7,4,5,6,3,8,1,10。
66.C
67.A定义变量时不能连等,所以B)错误,c)选项中,b是指针,c定义为指向指针的指针才可以接受&b,所以c)错误,D)选项,b=1.1前没有类型名,所以错误。
68.C选项中的四个表达式执行后,m的值都递增1。选项c)中,表达式的值是m递增前的值,为0。选项A)、B)、D)中,表达式的值都是m递增后的值,为1。
69.B本题考查实型数据的表示形式。
实型数据有十进制小数形式和指数形式两种表示方法,指数形式中e后面的指数必须为整数。选项B中e后面的指数为0.3,不符合实型数据的表示方式。
70.D由i"11的数字定义可知n!=n*(n-1)*(n-2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以1,2,3,…,n,最后计算得到f=n!一0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以1,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为1,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项c不正确。在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。
71.B本题考查结构体的相关知识,选项A中structREC后面不能有分号,C选项中typedefstructREC的后面也不能有分号,选项D中REC已经是结构体变量,不能当做结构体类型来使用。
72.Ci+j=3,运算符的优先级为数学运算符,位运算符,逻辑运算符,因此,首先计算最右边的i+j=3,然后计算(i+j)&k|3=9,最后计算i&&9=1
73.Achange函数的功能是将数组中的第6个元素值赋给第l个元素。第一次调用后,x[0]=x[5]=6。第二次调用实际是以x的第2个元素作为数组首元素,所以调用结束时x[1]=x[6]=7。后三次调用分别将x[2]、x[3]、x[4]赋值为8、9、10。
74.C数据库是存储在计算机存储设备中的、结构化的相关数据的集合。数据库中的数据不只是面向某一项特定的应用,而是面向多种应用,可以被多个用户、多个应用程序共享,不具有独立的系统。设计数据库的目的实质上是为了设计出满足实际应用需求的实际关系模型。数据库技术的主要目的则是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。本题答案为C。
75.B
76.D
77.B解析:SEEK_END代表的是文件末尾,SEEK_SET代表的是文件的开始,SEEK_CUR代表的是文件当前位置。
78.C
79.A“&”按位与,如果两个相应的二进制位都为l,则该位的结果值为l,否则为0。
“r’按位或,即两个相应的二进制位中只要有一个为l,该位的结果值为l。2的二进制为00000010.4的二进制为00000100,因此做或运算结果为00000110,该数与51/1100000101做与运算,结果为00000100,即4,选项A)正确。
80.B\n用带下标的指针变量引用一维数组元素若有以下定义和语句:“int*P,s[10],i;P=s}”,且o≤i<10,可以用&.s[i]、s+i和p+i三种表达式来表示s[i]的地址。同时可以用s[i]、*(s+i)和*(p+i)三种表达式来表示数组元素s[i]。
\n
81.(1)错误:if((k%13=0)||(k%17=0))
正确:if((k%13==0)||(k%17==0))
(2)错误:缺少大括号
正确:在“k-=;”后加}
【解析】题目中要求能被13或17整除的自然数,判断整除条件是取余恒等于0,判断相等的符号应该用“==”,符号“=”是赋值符号,因此“=”应改为“==”;在C语言中,括号一定是成对出现的,因此,在语句“k——;”后要加上符号“}”。
82.floatfun(intn){ inti,s1=0; floats=0.0; for(i=1;i<=n;i++) { s1=s1+i; /*求每一项的分母*/ s=s+1.0/s1; /*求多项式的值*/ } returns;}首先需要根据题意分析表达式的规律,得出通项,然后再完成程序语句。本题中公式的规律类似于求1+2+…+n的倒数之和。可以通过for循环语句来实现第1项到第n项的变化。先根据题目要求定义变量,注意该变量的数据类型。然后对其进行初始化操作,因为该变量相当于累加器,所以初值应为0(或0.0,根据变量数据类型来确定),再通过for循环语句来完成累加过程。本题中s1用来表示每一项的分母,每一项的分母都是由前一项分母加项数得到的。注意,由于s1定义成一个整型,因此在s=s+1.0/s1语句中不能把1.0写成1。2021年江苏省南通市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。
A.13B.33C.18D.40
2.有以下程序:程序运行后的输出结果是()。
A.5B.2C.3D.8
3.在下列排序算法中,在待排序的数据表已经为有序时,花费时间反而最多的是()
A.希尔排序B.堆排序C.冒泡排序D.快速排序
4.有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母:
程序运行后的输出结果是()。
A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!
5.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序运行后的输出结果是()。A.9,18B.8,11C.7,11D.10,14
6.可以作为Windows外壳程序的是()
A.程序管理器B.文件管理C.程序管理器和文件管理器D.主群组
7.设有定义:intx[2][3];,则以下关于二维数组X的叙述错误的是()。
A.x[0]可看做是由3个整型元素组成的一维数组
B.x[0]和x[l]是数组名,分别代表不同的地址常量
C.数组X包含6个元素
D.可以用语句x[o]=0;为数组所有元素赋初值0
8.
9.以下叙述中错误的是()。
A.将函数内的局部变量说明为static存储类是为了限制其他编译单位的引用
B.—个变量作用域的开始位置完全取决于变量定义语句的位置
C.全局变量可以在函数以外的任何部位进行定义
D.局部变量的“生存期”只限于本次函数调用,因此不能将局部变量的运算结果保存至下一次调用
10.关键路径是事件结点网络中()。
A.从源点到汇点的最长路径B.从源点到汇点的最短路径C.最长回路D.最短回路
11.设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为()。
A.fedcbaB.bcafedC.dcefbaD.cabdef
12.一个优化的程序可以生成n个元素集合的所有子集,那么该程序的时间复杂度是()
A.O(n!)B.O(nlogn)C.O(n^2)D.O(2^n)
13.下列能正确进行字符串赋值的是()。
A.chars[5]={"ABCDE"};
B.chars[5]={'A','B','C','D','E'};
C.char*s;s="ABCDE";
D.char*s;printf("%s",s);
14.有下列程序:
程序执行后的输出结果是()。
A.6,5,4,4,5,6,
B.1,2,3,4,5,6,
C.4,5,6,4,5,6,
D.1,2,3,6,5,4,
15.有如下定义:structperson{charname[9];intage;}structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};能输出字母M的是()
A.printf("%c\n",class[3].name);
B.printf("%c\n",class[3].name[1]);
C.printf("%c\n",class[2].name[1]);
D.printf("%c\n",class[2].name[0]);
16.有以下程序:
程序运行后的输出结果是()。
A.4321098765B.5678901234C.0987654321D.0987651234
17.下列选项中不合法的十六进制数是()。
A."0"xffB."0"X11C."0"x1gD.”0”Xabc
18.
19.下列写法正确的是()。
A.main(){inti=3,j;j=5}
B.main(){inti=3;
C.main()
D.main(){;}
20.关于排序算法的以下说法,错误的是()
A.归并排序的平均时间复杂度O(nlogn),最坏时间复杂度O(n^2)
B.堆排序平均时间复杂度O(nlogn),最坏时间复杂度O(nlogn)
C.冒泡排序平均时间复杂度O(n^2),最坏时间复杂度O(n^2)
D.快速排序的平均时间复杂度O(nlogn),最坏时间复杂度O(n^2)
二、2.填空题(20题)21.以下函数的功能是删除字符串s中的所有数字字符。请填空。
vioddele(char*s)
{intn=0,i;
for(i=0;s[i];i++)
if(______)
s[n++];s[i];
s[n]=______;
}
22.在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个______实际上对应一个处理模块。
23.栈的3种基本运算是:入栈、退栈和______。
24.存储结构的4种基本类型分别是顺序、链式、索引和【】。
25.Jackson方法是一种面向【】的结构化方法。
26.下列程序的输出结果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2,&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
27.按“先进后出”原则组织数据的数据结构是[]。
28.函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)
现在请你在下面的函数中填空,完成求π的功能。
#include"math.h"
{doubles=0.0;longi;
for(i=1;i<=n;i++)s=s+【】;
return(sqrt(6*S));
}
29.下面程序的功能是输出数组中最大的数,由a指针指向该元素。请填空。
main()
{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11),*a,*b;
for(【】)
if(*a<*b)a=b;
printf("%d",*a);
}
30.在树形结构中,树根结点没有______。
31.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。
#include<stdio.h>
voidf(intx[],intn)
{intp0,p1,i,j,t,m;
i=j=x[0];p0=p1=0;
for(m=0;m<n;m++)
{if(x[m]>i{i=x[m];p0=m;}
elseif(x[m]<j{j=x[m];p1:m;}
}
t=x[p0];x[p0]=x
32.以下程序的运行结果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
33.若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句()。
34.以下程序的运行结果是【】。
#include<stdio.h>
main()
{intfun();fun();}
fun()
{staticinta[3]={0,1,2};
inti;
for(i=0;i<3;i++)a[i]+=a[i];
for(i=0;i<3;i++)printf("%d,",a[i]);
printf("\n");}
35.以下程序是用递归方法求数组中的最大值及其下标值。请填空。
#defineM10
voidfindmax(int*a,intn,inti,int*pk)
{if(i<n)
{if(a[i]>a[*pk])【】;
findmax(a,n,i+1,&(*pk));}}
main()
{inta[M],j,n=0;
printf("\nEnter%ddata;\n",M);
for(i=0;i<M;i++)scanf("%d",a+i);
findmax(a,M,0,&n);
printf("Themaxinumis:%d\n",a[n]);
printf("It'sindexis;%d\n",n);}
36.以下程序运行后的输出结果是______。
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
37.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。
38.数据模型按不同应用层次分成3种类型,它们是概念数据模型、【】和物理数据模型。
39.下面的程序为6个整型变量A、B、C、D、E、F输入整数,并按从大到小的顺序输出整数及其所对应的变量名。例如,输入的数为3、2、5、7、4、6,则输出的形式为:D(7)F(6)C(5)E(4)A(3)B(2)。
#include<stdio.h>
intA,B,C,D,E,F;
struct
{
charn;
【】;
}tb1[]={{'A',&A},{'B',&B},{'C',&c},{'D',&D),{'E',&E},{'F',&F}},t;
main()
{
inti,j;
for(i=0;i<6;i++)scanf("%d",【】);
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
if(【】)
{
t=tb1[j];
tb1[j]=tb1[j+1];
tb1[j+1]=t;
}
for(i=0;i<6;i++)printf("%c(%d)",tb1[i].n,*tb1[i].p);
printf("\n");
}
40.以下程序的输出结果是【】。
#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))
}
三、1.选择题(20题)41.函数rewind的作用是
A.使文件位置指针重新返回文件的开始位置
B.将文件位置指针指向文件中所要求的特定位置
C.使文件位置指针指向文件的末尾
D.使文件位置指针自动移至下一个字符位置
42.6.C语言中下列叙述正确的是()
A.不能使用do-while语句构成的循环
B.do-while语句构成的循环,必须用break语句才能退出
C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环
43.以下选项中能正确把c1定义成结构体变量的是()。
A.typedefstruct{intred;intred;intgreen;intblue;}COLOR;COLORc1;
B.structcolorc1{intredintred;intgreenintblue;};
C.stmctcolor{intred,intgreen;intblue;}c1;
D.struct{intred;intgreen;intblue;}c1;
44.执行语句for(i=1;i++<4;);后变量i的值是______。
A.3B.4C.5D.不定
45.有下列二叉树,对此二叉树前序遍历的结果为()。
A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH
46.以下选项中属于C语言的数据类型是_______。
A.复数型B.逻辑型C.双精度型D.集合型
47.设有定义:structsk{inta;floatb;}data,*p;若有p=&data;,则对data中的a域的正确引用是()
A.(*p).data.aB.(*p).aC.p->data.aD.p.data.a
48.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则
A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次
49.若有如下语句:structa{charx[10]inty;}s,*t;t=&s;则对结构体变量s中的成员y的正确引用是()
A.a.y;B.t->y;C.t.y,D.*t->y;
50.在c语言中,变量的隐含存储类别是()。
A.autoB.staticC.externD.无存储类别
51.下列合法的字符型常量是()。
A.'\x13'B.'\081'C.'65'D.\n
52.下列关于栈的叙述中正确的是()
A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表
53.为了避免嵌套的if-else的二义性,C语言钡定:else与______配对。
A.缩排位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if
54.算法一般都可以用______控制结构组合而成。
A.循环、分支、递归B.顺序、循环、嵌套C.循环、递归、选择D.顺序、选择、循环
55.以下程序运行后,输出结果是______。main(){char*d[]={"ab","cde"};printf("%x",d[1]);}
A.cdeB.字符c的AScII码值C.字符c的地址D.出错
56.下列选项中属于C语言构造类型的是()
A.指针类型B.空类型C.枚举类型D.数组类型
57.以下叙述中不正确的是
A.在不同的函数中可以使用相同的名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
58.有下列程序:
fun(intx)
{intp;
if(x==0‖x==1)return(3);
p=x-fun(x-2);
returnp;
}
main()
{printf("%d\n",fun(7));}
执行后的输出结果是()。
A.7B.3C.2D.0
59.有以下程序;voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序运行后的输出结果是()。
A.ABCDDEFEDBDB.abeDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
60.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是
A.ABCEDB.DCBEAC.DBCEAD.CDABE
四、选择题(20题)61.
62.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序运行后的输出结果是______。
A.8B.10C.7D.11
63.
64.
65.有以下程序
voidsort(inta[],intn)
{
inti,j,t;
for(i=0;i<n-1;i+=2)
for(j=i+2;j<n;j+=2)
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
main()
{
intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(aa,10);
for(i=0;i<10;i++)
printf("%d,",aa[i]);
printf("\n");
}
执行后的输出结果是
A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,3,2,1,
C.9,2,7,4,5,6,3,8,1,10D.1,10,3,8,5,6,7,4,9,2,
66.
67.以下定义语句中正确的是()。
68.设有定义:intm=0;。以下选项的四个表达式中与其他三个表达式的值不相同的是()。
A.++mB.m+=1C.m++D.m+1
69.以下选项中,不能作为合法常量的是
A.1.24e03B.1.34e0.3C.1.24e+3D.1.34e0
70.
设变量已正确定义,则以下能正确计算f=n!的程序是()。
A.f=0:for(i=1;i<=n;i++)f*=i:
B.F=1:for(i=l;i<2n;i++)f*=i:
C.f=l:for(i=n;i>1;i++)f*=i:
D.f=1;for(i=n;i>=2;i--)f*=i:
71.以下结构体类型说明和变量定义中正确的是()。
72.设inti=2,j=1,k=3,则表达式i&&(i+j)&k|i+j的值是_______。
A.0B.2C.1D.3
73.以下程序的输出结果是()。
A.678910
B.13579
C.12345
D.62345
74.下列叙述中正确的是()。
A.数据库不需要操作系统的支持
B.数据库设计是指设计数据库管理系统
C.数据库是存储在计算机存储设备中的、结构化的相关数据的集合
D.数据库系统中,数据的物理结构必须与逻辑结构一致
75.
76.
77.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是()。
A.文件开始B.文件末尾C.文件当前位置D.以上都不对
78.
79.有以下程序程序运行后的输出结果是()。
A.4B.3C.5D.6
80.设有定义"doublea[10],*s=a;",以下能够代表数组元素a[3]的是()。
A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3
五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传人,若k的值为600,则函数的值为5671。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是根据以下公式计算S,并将计算结果作为函数值返回,通过形参传入。例如,若n的值为11时,函数的值为1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体育经纪人事业发展的机遇试题及答案
- 学习提高模具设计师资格考试的试题及答案
- 风电电力项目建设可行性研究报告(范文参考)
- 模具设计在国际市场中的竞争力试题及答案
- 农作物种子的可持续发展试题及答案
- 2024年农业植保员资格考试培训试题及答案解读
- 游泳救生员在泳场管理中的角色及试题及答案
- 2024年种子繁育员的管理战略试题及答案
- 2024年裁判员考核题目及答案
- 2024年农业植保员考试前的最后冲刺试题及答案
- 材料科技有限公司年产12500吨电子冷却液项目环评可研资料环境影响
- 初中数学竞赛方案
- 配电线路带电作业
- DB44-T 2457-2024 地质灾害自动化监测规范
- 高中政治联考分析报告
- 变电站施工应急预案
- 智能汽车行业产业研究系列(三):智能汽车软硬件产品齐发力CES展示汽车酷炫新亮点
- 《草本花卉金鱼草》课件
- 医疗器械销售项目立项报告
- 人才盘点九宫格及人才梯队盘点套表
- Unit+4+Adversity+and+courage+Reading+and+Thinking+A+Successful+Failure+课件-【知识精讲精研】高中英语人教版(2019)选择性必修第三册
评论
0/150
提交评论