版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年山东省东营市全国计算机等级考试C语言程序设计真题一卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(12题)1.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()
A.*p+9B.*(p+8)C.*p+=9D.p+8
2.已知a,b均被定义为double型,则表达式:a=5/2的值为()。
A.1B.3C.3.0D.2.5
3.有以下程序:main(){intp[7]={11,13,14,15,16,17,18),i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k)}执行后的输出结果是______。
A.58B.56C.45D.24
4.
5.判断有向图是否存在回路,利用()方法最佳。
A.求关键路径B.求最短路径C.拓扑排序D.广度优先遍历
6.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。
A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)
7.以下非法的赋值语句是
A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;
8.在软件设计中,不属于过程设计工具的是()。
A.PDLB.DFD图C.PAD图D.N—S图
9.若在线性表中采用折半查找法查找元素,该线性表应该()A.元素按值有序B.构采用顺序存储结C.元素按值有序且采用顺序存储结构D.元素按值有序且采用链式存储结构
10.有以下函数:intfun(char*x,char*y){intn=0;.while((*x==*y)&&*x!="\0){x++;y++;n++;}returnn;}函数的功能是()。
A.将y所指字符串赋给x所指存储空间
B.查找和y所指字符串中是否有"\0'
C.统计x和y所指字符串中最前面连续相同的字符个数
D.统计x和y所指字符串中相同的字符个数
11.计算机算法必须具备输入、输出和()等5个特性。
A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性
12.以下关于long、int和short类型数据占用内存大小的叙述中正确的是(),
A.均占4个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由C语言编译系统决定
二、2.填空题(12题)13.对一组记录{54,38,96,23,15,72,60,45,83}进行直接插入排序时,当插入第5个记录到有序表时,寻找插入位置需比较【】次。
14.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。
structnode
{intinfo;
【】link;};
15.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。
16.数据的逻辑结构有线性结构和______两大类。
17.汉字系统中,字库中的汉字是以【】码存在。
18.有以下程序:
#include<stdio.h>
main()
{inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;
*q=*(p+5);
printf("%d%d\n",*p,*q);
}
程序运行后的输出结果是【】。
19.在运算过程中,能够使空表与非空表的运算统一的结构是【】。
20.程序的运行结果为【】。
main()
{charc1='a',c2='b',c3='c';
printf("a%cb%c\tc%c\n",c1,c2,c3);
}
21.成本估算模型中,Putnam估算模型是一种【】模型。
22.若a是血型变量,则表达式(a=2*3,a*2),a+6的值为______。
23.以下程序的输出结果是【】。
#include<stdio.h>
main()
{inti;
for(i-'a';i<'f';i++,i++)printf("%c",i-'a'+'A');
printf("\n");
}
24.下列程序的运行结果是______。
#definePOWER(x)((x)*(x))
main()
{inti=1;
printf("%d,%d",POWER(i++),i);
}
三、3.程序设计题(10题)25.请编写一个函数voidfun(char*ss),其功能是:将字符串ss中所有下标为偶数位置上的字母转化为大写(若该位置上不是字母,则不转换)。
例如,若输入abc4Efg,则应输出AbC4EfG。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
voidfun(char*ss)
{
}
main()
{
chartt[51];
clrscr();
printf("Pleaseenterancharacterstring
within50characters:\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n
%s",tt);
fun(tt);
printf("\nbecomes\n\%s",tt);
}
26.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构件数组s中,请编写函数fun(),它的功能是:把分数最高的学生数据放在h所指的数组中。注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b)
{
}
main()
{
STRECs[N]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",91},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85),("GA013",91},{"GA012",64},
{"GA014",91),{"GA011",66},{"GA017",64},
{"GA018",64},{"GA016",72}};
STRECh[N];
inti,n;
FILE*out;
n=fun(s,h);
printf("The%dhighestscore:\n",n);
for(i=0;i<n;i++)
printf("%s%4d\n",h[i].num,h[i].s);
/*输出最高分学生的学号和成绩*/
printf("\n");
ut=fopen("out45.dat","w");
fprintf(out,"%d\n",n);
for(i=0;i<n;i++)
fprintf(out,"%4d\n",h[i].s);
fclose(out);
}
27.编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。
例如:n为1000时,函数值应为s=96.979379。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<math.h>
#include
doublefun(intn)
{
}
main()
{
clrscr();
printf("s=%f\n",fun(1000));
}
28.编写函数fun(),它的功能是:计算和输出下列级数的和。
S=1/(1×2)+1/(2×3)+…+1/(n×(n+1))
例如,当n=10时,函数值为0.909091。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序;
#include<conio.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
clrscr();
printf("%f\n",fun(10));
}
29.请编写函数fun(),其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。
例如,当s所指字符串中的内容为ABCDEFGHIJK,则在t所指数组中的内容应是BDFHJ。
注意:部分源程序给出如下。
请勿改动主函数main口其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*s,chart[])
{
}
main()
chars[l00],t[l00];
clrscr();
printf("%nPleaseenterstringS:");
scanf("%s",s);
fun(s,t);
prlntf("\nTheresultis:%s\n",t);
}
30.请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。
例如:实型数为1234.567,则函数返回1234.572000;
实型数为1234.564,则函数返回1234.562000。
注意:部分源程序存在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
31.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。
例如,输入beijingshah曲aj(为回车键),函数将返回shanghai。
注意:部分源程序存在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
32.编写程序,实现矩阵(3行3列)的转置(即行列互换)
例如,输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
33.函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为“ABCDEFGl2345”,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除:而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依此类推。
最后t所指的数组中的内容应是“BDFl2345”。
注意:部分源程序存在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
34.编写函数fun(),函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。
S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)
例如:若n的值为11时,函数的值为1.833333。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
floatfun(intn)
{
}
main()
{
intn;
floats;
clrscr();
printf("\nPleaseenterN:");
scanf("%d",&n);
s=fun(n);
printf("Theresultis:%f\n",s);
}
四、单选题(0题)35.设文件指针fp已定义,执行语句“fP=foPen(“file”,“w”);”后,下列针对文本文件file操作叙述的选项中正确的是()。
A.只能写,不能读B.写操作结束后可以从头开始读C.可以在原有内容后追加写D.可以随意读和写
五、单选题(0题)36.以下叙述中正确的是()。
A.C语言编译系统对标识符的长度没有规定
B.C语言标识符的规定长度因系统而异
C.C语言规定标识符长度最多允许16个字符,超长报错
D.C语言规定以下划线开头的标识符长度必须大于1
六、单选题(0题)37.以下选项中表示一个合法的常量是(说明:符号口表示空格)()。
A.9口9口9B.0XabC.123E0.2D.2.7e
参考答案
1.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。
2.D
3.D解析:程序中while语句的循环条件为i<7&&p[i]%2。当i=0时,条件成立,k=k+p[0]=11;当i=1时,条件仍成立,k=k+p[1]=11+13=24;当i=2时,p[2]%2=0条件不成立,结束while循环,所以k=24。
4.C
5.C
6.C
7.C解析:本题考查的知识点是赋值语句的基本知识。在表达式的运算中,双目赋值运算符的格式为“变量二表达式”,单目运算符一般形式为“运算符表达式”或“表达式运算符”。常量和表达式是不能被赋值的。选项A为复合表达式,首先计算(i=2,++i)的值,然后赋值给n,故选项A正确;选项B为简单自加运算,故选项B正确;选项C在表达式++(i+1);中,(i+1)不是变量,该表达式的值为常量,而在++运算中,其运算对象必须为变量,故选项C错误;选项D中为复合赋值表达式,正确.所以应当选择C。
8.B常见的过程设计工具有图形土具(程序流程图、N—S图、PAD图、HIP0图)、表格工具(判定表)和语言工具(PDL)。DFD是数据流图,是描述数据处理过程的工具。
9.C
10.C本题中由循环条件可知遇到“0或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。
11.B
12.D解析:在C语言的标准中,short占2个字节、long占4个字节,但int的大小和编译系统相关。例如在Turbo\u3000C\u30002.0中,int占2个字节,但在VisualC++6.0(VC6可以用做C语言编译器)中占4个字节。故本题应该选择D。
13.11解析:直接插入排序是在已排好序的序列中用顺序查找法查找插入位置。第5个记录是15,15和23比较,就知道15应放在原23放的位置,23及其以后的记录后移。
14.structnode*structnode*解析:本题中的结构类型名为structnode,所以空白处应填:structnode*。即定义一个指向自身的结构体指针。
15.上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当rear=m+1时置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。
16.非线性结构非线性结构
17.字形字形
18.运行后报错运行后报错解析:指针q没有指向确定的存储单元,故不能赋值。
19.循环链表循环链表解析:在链表的运算过程中,采用链接方式即循环链表的结构把空表与非空表的运算统一起来。循环链表具有两个特点:①在循环链表中增加了一个表头结点,其数据域为任意或根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。②循环链表中最后一个结点的指针不是空,而是指向表头结点。
20.aabbccaabbcc解析:printf函数先输出a,遇%c,接着输出变量c1的值a,然后输出bb,遇%t,从第9个位置开始输出cc。
21.动态多变量动态多变量
22.1212解析:本题考查逗号表达式的运算规则。逗号表达式的基本格式为:“表达式1,表达式2,…”,其整个表达式的结果取最后一个子表达式的值。本题中首先计算逗号表达式中的第1个表达式a=2*3=6,然后计算第2个表达式a*2,这时整个表达式的值为12,但要注意,因为第2个表达式并没有给a赋值,因此a的值不变;接下来执行最后一个表达式a+6=12,所以整个表达式最后的值为12。
23.ACEACE解析:题目中for循环的循环变量i从字符'a'变到字符'e',但由于每次循环后都连续执行了两次i++,所以for循环将执行3次,循环变量i的值依次为'a'、'c'、'e'。循环体中是一条输出语句,按字符输出表达式i-'a'+'A'。因为大小写字母的ASCII码是连续的,例如'b'+1='c'、'W'-1='V',而且小写字母的ASCII码比大写字母的大。所以,同一个字母的大小写字符之差是一个固定值。由此可见,将一个字符从小写转换为大写,只需将其减去这个固定值,而将大写转为小写可以加上这个固定值。固定值可以通过任一字符的小写减去大写来得到。所以本题的i-'a'+'A'=i-('a'-'A'),即让i减去了此固定值,从而使整个表达式的值为i所代表的小写字母的大写形式。故本题的输出结果是ACE。
24.111,1解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。
25.voidfun(char*ss){inti;for(i=0;ss[i]!='\0';i++){if(i%2==0&&ss[i]>='a'&&ss[i]<='z')/*将ss所指字符串中所有下标为偶数位置的字母转换成大写*/ss[i]==ss[i]-32;}/*大写字母比相应的小写字母的ASCII码值小32*/}voidfun(char*ss)\r\n{inti;\r\nfor(i=0;ss[i]!='\\0';i++){\r\nif(i%2==0&&ss[i]>='a'&&ss[i]<='z')/*将ss所指字符串中所有下标为偶数位置的字母转换成大写*/\r\nss[i]==ss[i]-32;}/*大写字母比相应的小写字母的ASCII码值小32*/\r\n}解析:从C语言的学习中我们知道,只要将小写字母减去32则转换成大写字母,将大写字母加上32则转成小写字母,该程序使用if语句实现该功能转换的。
26.intfun(STREC*aSTREC*b){intij=0max=a[0].s;for(i=0;i<N;i++)if(max<a[i].s)max=a[i].s;/*找出最大值*/for(i=0;i<N;i++)if(max==a[i].s)b[j++]=a[i];/*找出成绩与max相等的学生的记录存入结构体b中*/returnj;/*返回最高成绩的学生人数*/}intfun(STREC*a,STREC*b)\r\n{\r\ninti,j=0,max=a[0].s;\r\nfor(i=0;i<N;i++)\r\nif(max<a[i].s)max=a[i].s;/*找出最大值*/\r\nfor(i=0;i<N;i++)\r\nif(max==a[i].s)b[j++]=a[i];/*找出成绩与max相等的学生的记录,存入结构体b中*/\r\nreturnj;/*返回最高成绩的学生人数*/\r\n}解析:该程序使用循环嵌套,第1个for语句的作用是找出最大值。第2个循环的作用是找出与max相等的成绩,也即最高成绩的学生记录,并存入b中。
27.doublefun(intn){doubles=0.0;inti;for(i=0;i<n;i++)/*从0~n中找到既能被5整除同时又能被11整除的数并将这些数求和*/if(i%5==0&&i%11==0)s=s+i;s=sqrt(s);/*对s求平方根*/returns;doublefun(intn)\r\n{doubles=0.0;\r\ninti;\r\nfor(i=0;i<n;i++)/*从0~n中找到既能被5整除同时又能被11整除的数,并将这些数求和*/\r\nif(i%5==0&&i%11==0)\r\ns=s+i;\r\ns=sqrt(s);/*对s求平方根*/\r\nreturns;解析:本题的解题思路是逐个取得从。0-n之间的所有数,对每次取得的数进行条件判断,条件是既能被5整除同时又能被11整除,注意:这两个条件要求同时成立,因此用到了“&&”运算符。满足条件,该数就被累加到s中去,求出所有符合条件的数后,用sqrt()函数(包含于头文件<math.h>中)对s求平方根。
28.doublefun(intn){inti;doubles=0.0;for(i=l;i<=n;i++)s=s+l.0/(i*(i+l));/*求级数的和*/returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0;\r\nfor(i=l;i<=n;i++)\r\ns=s+l.0/(i*(i+l));/*求级数的和*/\r\nreturns;\r\n}解析:解决数学序列的问题,我们的思路依然是“数学先行”,即先看清楚题目的数学逻辑,然后再根据C语言来“翻译”出来。本题中,每一项的值都是n*(n+1)的倒数。当输入n时,从1开始循环,注意,此处for(i=1;i
29.voidfun(char*schart[]){intij=0k=strlen(s);/*k为字符串的长度*/for(i=l;i<k;i=i+2)/*将s所指字符串中下标为奇数的字符存入t所指字符串中*/t[j++]=s[ii;t[j]='\0';/*在字符申最后加上结束标志*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026绩效面谈记录表与低绩效员工改计划
- YXD-1/1.5摇台操作步骤详解
- 简明职业规划书模板
- 矿山局安全工作指南讲解
- 企业消防安全排查指南
- 职业技术发展规划
- 鼠药中毒随访指导
- 2026年10月自考03372团体心理辅导押题及答案(甘肃)
- 法律职业资格客观题真题解析大全(含答案详解)
- 2026年下半年中小学教师资格笔试综合素质真题模拟卷(含解析)
- 2026年嘉兴市秀洲区公开招聘劳动合同制教职工(幼儿教师、卫生保健员)24人笔试备考题库及答案详解
- 2026天津一中高一入学数学分班考试真题含答案
- 2026年大学生就业前景研判及高考志愿填报攻略-智联研究院
- 2026肉牛养殖环境承载力评估与生态平衡维护报告
- 多模态数据融合驱动的传染病传播机制研究-洞察与解读
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.5-2025)
- GA/Z 2328-2025法庭科学资金数据分析标准体系表
- 衢州市技师学院招聘考试试卷及答案2025年
- 儿科住院医师医患沟通情景模拟考核方案
- 2024年第41届全国中学生竞赛预赛物理试题(解析版)
- 2025年广州市天河区招聘事业单位工作人员考试笔试试题含答案
评论
0/150
提交评论