2022-2023学年湖南省长沙市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页
2022-2023学年湖南省长沙市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页
2022-2023学年湖南省长沙市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页
2022-2023学年湖南省长沙市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页
2022-2023学年湖南省长沙市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022-2023学年湖南省长沙市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(12题)1.

2.

3.

4.在以下给出的表达式中,与“while(E)”中的“(E)”不等价的表达式是()。

A.(E>0||E<0)B.(E==0)C.(!E==0)D.(E!=0)

5.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0

6.下列关于线性链表的描述中正确的是()。

A.存储空间不一定连续,且各元素的存储顺序是任意的

B.存储空间不一定连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且各前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

7.给定下列代码:已知n是一个整数:foo()时间复杂度为O(1),上述代码的时间复杂度是()A.O(logn)B.O(n)C.O(n*log(n))D.O(log(n)^2)

8.执行下面的程序后,a的值为()。main{inta,b;for(a=1,b=1;a<=10;a++){if(b%3==l){b+=3;continue;}b-=5;}}A.7B.8C.9D.10

9.一个队列的入队序列是1,2,3,4,则队列的输出序列是()。

A.4,3,2,1B.1,2,3,4C.1,4,3,2D.3,2,4,1

10.给出发下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为______。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

11.一个递归算法必须包括()。

A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭代部分

12.以下说法错误的是()。

A.由3种基本结构组成的结构化程序不能解决过于复杂的问题

B.由3种基本结构组成的结构化程序能解决一些简单的问题

C.由3种基本结构组成的结构化程序能解决递归问题

D.由3种基本结构组成的结构化程序能解决数学上有解析解的问题

二、2.填空题(12题)13.下列程序的运行结果是______。

#include<stdio.h>

main()

{intfun();

fun();

}

fun()

{staticinta[4]={1,2,3,4);

inti:

for(i:0;i<4;i++)a[i]+=a[i];

for(i=0;i<4;i++)printf("%d,",a[i]);

printf("\n");

}

14.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)

______

main()

{printf("\n");

try_me();

printf("\n");}

15.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【】。

16.请在以下程序第一行的下划线处填写适当内容,使程序能正常运行。

#include<stdio.h>

【】(double,double);

main()

{doublex,y;

scanf("%If%If",&x,&y);

printf("%If\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

17.当线性表的元素总数基本稳定,且很少进行插入和删除操作,并要求以很快的速度存取线性表中的数据元素时,应采用【】存储结构。

18.对于图书管理数据库,将图书表中"人民邮电出版社"的图书的单价涨价5%。请对下面的SQL语句填空:UPDATE图书【】WHERE出版单位="人民邮电出版社"

19.软件生命周期包括2今阶段。为了使各时期的任务更明确,又可分为3个时期:软件定义期、软件开发期、软件维护期。编码和测试属于【】期。

20.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。

21.以下程序运行后的输出结果是()。main(){inta,b,c;a=10;b=20;c=(a/b<1)&&(a%b<1);printf("%d%d%d\n",a,b,C);}

22.以下程序运行后的输出结果是______。

main

{

inna=b=c=5:

if(c=a+b)

printf("yes\n);

else

printf("no\n);

}

23.下列程序输出的结果是______。

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

printf("%d\n",fun(a,B)/m);

}

24.以下程序运行后的输出结果是______。

main()

{chara[]="Language",b[]="Programe";

char*p1,*p2;

intk;

p1=a;p2=b;

for(k=0;k<=7;k++)

if(*(p1+k)==*(p2+k))printf("%c,*(p1+k));

}

三、3.程序设计题(10题)25.m个人的成绩存放在score数组中,请编写函数fun(),它的功能是将高于平均分的人数作为函数值返回,将高于平均分的分数放在叩所指的数组中。

例如,当score数组中的数据为24,35,88,76,90,54,59,66,96时,函数返回的人数应该是5,up中的数据应为88,76,90,66,96。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(intscore[],intm,intup[])

{

}

main()

{

inti,n,up[9];

intscore[9]={24,35,88,76,90,54,

59,66,96};

clrscr();

n=fun(score,9,up);

printf("\nuptotheaveragescoreare:");

for(i=0;i<n;i++)

printf("%d",up[i]);

}

26.请编写函数fun(),其功能是:将s所指字符串中除了下标为偶数、同时ASCII码值为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

例如,若s所指字符串中的内容为ABCDEFG12345,其中字符B的ASCII码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCII码值为奇数,所在数组中的下标为偶数,因此不应当删除,其他依次类推。最后t所指的数组中的内容应是ACEG。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h)

voidfun(char*s,chart[])

{

}

main()

{

chars[100],t[100];

clrscr();

printf("\nPleaseenterstrings:");

scanf("%s",s);

fun(s,t);

printf("\nTheresultis:%s\n",t);

}

27.请编写函数fun(),其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。

例如,输入17,则应输出46891012141516。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

voidfun(intm,int*k,intxx[])

{

}

main()

{

intm,n,zz[100];

clrscr();

printf("\nPleaseenteranintegernumber

between10and100:");

scanf("%d",&n);

fun(n,&m,zz);

printf("\n\nThereare%dnon-prime

numberslessthan%d:",m,n);

for(n-0;n<m;n++)

printf("\n%4d",zz[n]);

}

28.请编写函数fun,其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。

例如,当a=16,b=35,调用该函数后,c=5361。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<stdio.h>

voidfun(inta,intb/long*c)

{

}

main()

{

inta,b;

longc;

clrscr();

printf("Inputa,b;");

scanf("%d%d",&a,&b);

fun(a,b,&c);

printf("Theresultis:%ld\n",c);

}

29.请编写函数fun(),其功能是;计算井输出下列多项式值。

S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)

例如,若主函数从键盘给n输入8后,则输出为S-0.662872。

注意;部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序;

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\nInputn:");

scanf("%d",&n);

s=fun(n);

printf("\ns=%f\n",s);

}

30.请编写函数fun,其功能是:计算并输出3到n之间(含3和n)所有素数的平方根之和。

例如,在主函数中从键盘给n输入100后,输出为:sum=148.874270。

注意:要求n的值大于2但不大于100。部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

31.编写函数fun,其功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>n。

例如:m=12,n=8时,运行结果为495.000000。

注意:部分源程序在文件PROGl.C文件中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

32.请编写一个函数fun,它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。

注意:部分源程序存在文件PROGl.C文件中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

33.请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,一维数组中的数据是:2223445666677899101010。

删除后,数组中的内容应该是:2345678910。

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

34.编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。

例如若n为1000时,程序输出应为:s=153.909064。

注意:部分源程序在文件PROGl.C文件中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

四、单选题(0题)35.以下叙述中错误的是()。

A.C语言编写的函数源程序,其文件名后缀可以是C

B.C语言编写的函数都可以作为一个独立的源程序文件

C.C语言编写的每个函数都可以进行独立的编译并执行

D.一个C语言程序只能有一个主函数

五、单选题(0题)36.若已定义inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是

A.a[p-A)B.*(&a[i])C.p[i]D.a[10]

六、单选题(0题)37.

参考答案

1.B

2.A

3.D

4.Bwhile语句中条件表达式E的值不为0即真,认为满足条件。这与B选项中表达式的含义正好相反。故本题答案为B选项。

5.A本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。

6.A解析:线性表的链式存储结构中的结点空间是动态生成的,它们在内存中的地址可能是连续的,也可能是不连续的。

7.B

8.D本题考查continue的用法,continue语句的作用是结束本次循环,直接进行下次循环。所以在程序中,只有当a=10时,才退出循环,故选择D选项。

9.B

10.C

11.B

12.A顺序结构、选择结构、循环结构是3种基本结构,由3种基本结构构成的程序称为结构化程序,由3种基本结构组成的算法可以解决任何复杂的问题,选项A错误。本题答案为A选项。

13.24682,4,6,8解析:子函数fun()的功能是将数组a中的元素都自加一遍,然后仍然将结果存在原数组中,其实就是将数组a的每个元素都变为原来的2倍,然后输出。在主程序中首先通过intfun()定义了子函数fun(),然后再调用fun()。

14.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用ginclude文件包含命令将定义函数的文件包含进来。

15.4545解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过遍的从前往后扫描和遍的从后往前扫描,需要比较次数为。

16.doublemax或externdoublemaxdoublemax或externdoublemax解析:main函数中调用了一个max函数,而max函数是在调用之后定义的,所以要求填空的内容应该是对函数进行声明的语句。由max函数的定义可知此函数是double型的,因此空格处应该填doublemax或externdoublemax。

17.顺序顺序

18.SET单价=单价*1.05SET单价=单价*1.05解析:更新表中元组的值,使用UPDATE命令,一次可以更新表中的一个或多个属性值。UPDATE短语之后指定更新数据所属的表,将新的属性值或表达式赋值给对应的属性名(SET单价=单价*1.05),并置于SET短语之后。要求对人民邮电出版社的图书涨5%,需要用WHERE短语对元组进行限制,即对符合条件的元组进行更新。

19.软件开发软件开发解析:软件生命周期包括8个阶段:问题定义、可行性研究、需求分析、系统设计、详细设计、编码、测试、运行维护。为了使各时期的任务更明确,又可以分为3个时期:软件定义期,包括问题定义、可行性研究和需求分析3个阶段;软件开发期,包括系统设计、详细设计、编码和测试4个阶段;软件维护期,即运行维护阶段。可知,编码和测试属于软件开发阶段。

20.buf的首地址buf的首地址解析:考查fsets()函数的功能,f8ets()函数用来从文件中读入字符串。调用格式为:f8ets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fsets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。

21.1020010200解析:本题考查的是混合运算。“(a/b<1)&&(a%b<1)”的运算顺序为:括号>算术运算符>关系运算符>逻辑运算符。其中a%b=10,a,b=0,所以a%b<1的值为0,a/b<1的值为1,故整个表达式的结果为0,所以输出的a,b,c的值为10200。

22.yesyes解析:if...else构造了一种二路分支选择,是一种最基本的选择结构。本题中,if后面括号里的表达式为c=a+b为真(即c=1+3=4为真);所以,执行s1,即执行prinff('yes\\'),最后输出yes。

23.11解析:本题考查局部变量和全局变量的区别:局部变量是指作用域在函数级和块级的变量,全局变量是指作用域在程序级和文件级的变量。本程序首先定义了一个全局变量m=17,m=17的作用域在整个程序内。在fun函数内部定义了一个局部变量m=3,m=3的作用域仅在fun函数内部,通过fun函数返回两个形参的积再减m。在主函数中,输出fun(a,b)/m=(5*7-3)/17=1。

24.gae

25.intfun(intscore[]intmintup[]){intij=0;floatav=0.0for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]>av)/*如果分数高于平均分则将此分数放入up数组中*/up[j++]=score[i];returnj;/*返回高于平均分的人数*/}intfun(intscore[],intm,intup[])\r\n{\r\ninti,j=0;\r\nfloatav=0.0\r\nfor(i=0;i<m;i++)\r\nav=av+score[i]/m;/*求平均值*/\r\nfor(i=0;i<m;i++)\r\nif(score[i]>av)/*如果分数高于平均分,则将此分数放入up数组中*/\r\nup[j++]=score[i];\r\nreturnj;/*返回高于平均分的人数*/\r\n}解析:该题第1个循环的作用是求出平均分av,第2个循环的作用是找出高于平均分的成绩并存入up数组中。

26.voidfun(char*s/chart[]){intij=0;for(i=0;s[i]!='\0';i++){if(i%2==0&&s[i]%2!=0)t[j++]=s[i];}/*将下标为偶数同时ASCII码值为奇数的字符放入数组t中*/t[j]='\0';/*在字符串最后加上结束标志位*/}voidfun(char*s/chart[])\r\n{inti,j=0;\r\nfor(i=0;s[i]!='\\0';i++)\r\n{if(i%2==0&&s[i]%2!=0)\r\nt[j++]=s[i];}/*将下标为偶数同时ASCII码值为奇数的字符放入数组t中*/\r\nt[j]='\\0';/*在字符串最后加上结束标志位*/\r\n}解析:本题要求除了下标为偶数同时ASCII码值为奇数的字符之外,其他字符都删除。即要留下下标为偶数同时ASCII码值为奇数的字符。所以,在if的条件语句中应使用if(i%2==0&&s[i]%2!=0)。

27.voidfun(intmint*kintxx[]){intijn=0;for(i=4;i<m;i++)/*找出大于1小于整数m的非素数*/{for(j=2;j<i;j++)if{i%j==0)break;if(j<i)xx[n++]=i;}*k=n;/*反回非素数的个数*/}voidfun(intm,int*k,intxx[])\r\n{\r\ninti,j,n=0;\r\nfor(i=4;i<m;i++)/*找出大于1小于整数m的非素数*/\r\n{for(j=2;j<i;j++)\r\nif{i%j==0)break;\r\nif(j<i)xx[n++]=i;\r\n}\r\n*k=n;/*反回非素数的个数*/\r\n}解析:这道题是考查一个数是不是素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决,请学习者以此题为例,搞清判断素数的方法。

28.voidfun(intaintblong*c){*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;}voidfun(inta,intb,long*c)\r\n{\r\n*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;\r\n}解析:语句“*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;”是将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。注意“/”和“%”的用法。

29.doublefun(intn){inti;doubles=0.0;for(i=1;i<=n;i++)s=s+(1.0/(2*i-1)-1.0/(2*i));/*计算S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-l/2n)*/returns;}double

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论