2025年全国计算机等级考试(NCRE)二级C语言程序设计试题与答案_第1页
2025年全国计算机等级考试(NCRE)二级C语言程序设计试题与答案_第2页
2025年全国计算机等级考试(NCRE)二级C语言程序设计试题与答案_第3页
2025年全国计算机等级考试(NCRE)二级C语言程序设计试题与答案_第4页
2025年全国计算机等级考试(NCRE)二级C语言程序设计试题与答案_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

2025年全国计算机等级考试(NCRE)二级C语言程序设计试题与答案一、选择题(共40题,每题1分,共40分。其中110题为公共基础知识题,1140题为C语言程序设计题)下列关于栈的叙述中正确的是()A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据算法的时间复杂度是指()A.算法的执行时间B.算法所处理的数据量C.算法执行过程中所需要的基本运算次数D.算法程序中的语句或指令条数软件生命周期中,确定软件系统要做什么的阶段是()A.需求分析B.软件设计C.软件测试D.系统维护下列耦合类型中,耦合度最低的是()A.内容耦合B.控制耦合C.数据耦合D.公共耦合数据流图中带有箭头的线段表示的是()A.控制流B.数据流C.模块调用D.事件驱动在数据库系统的三级模式结构中,描述数据库中全体数据的全局逻辑结构和特征的是()A.外模式B.内模式C.存储模式D.模式学校的教务处管理学生和课程两个实体,一名学生可以选多门课程,一门课程可以被多名学生选,则学生和课程实体之间的联系类型是()A.一对一B.一对多C.多对多D.多对一有两个关系R和S如下:R:ABCa12b21c31S:ABCa12d21若关系T是R与S的交运算结果,则T的元组个数为()A.1B.2C.3D.4下列排序方法中,最坏情况下时间复杂度最低的是()A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序下列选项中不属于结构化程序设计原则的是()A.自顶向下B.逐步求精C.模块化D.可复用下列叙述中正确的是()A.C语言程序的基本组成单位是语句B.C语言程序中的每一行只能写一条语句C.简单C语句必须以分号结束D.C语言的注释必须写在语句的后面下列选项中,合法的C语言标识符是()A.123abcB._var123C.a&b

D.int下列选项中,合法的C语言实型常量是()A.1.2E0.5B.3.14159eC..5E-3D.E10若有定义语句:inta=3,b=2,c=1;则以下表达式中值为0的是()A.a>bB.a>b>cC.(a>b)==1D.b<c若有定义:intx=10,y=3;则表达式x%y+x/y的值是()

A.1B.3C.4D.10/3若有定义:inta;floatb;执行scanf(“%d%f”,&a,&b);语句时,若从键盘输入:1234.567,则a和b的值分别是()

A.123和4.567000B.1234和0.567000C.123和4567.000000D.1234和567.000000有以下程序段:inta=5,b=0,c=0;if(a=b+c)printf(““);elseprintf(”$$$“);则输出结果是()

A.有语法错,不能编译B.C.$$$

D.程序能运行,但无输出有以下程序:#include<stdio.h>

intmain(){intx=1,y=0,a=0,b=0;

switch(x){

case1:

switch(y){

case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

printf("\%d,\%d\n",a,b);

return0;}程序的运行结果是()A.2,1B.1,1C.1,0D.2,2若有程序段:intk=0;while(k=1)k++;则while循环执行的次数是()A.无限次B.有语法错,不能执行C.一次也不执行D.执行1次有以下程序:#include<stdio.h>

intmain(){inti,sum=0;

for(i=1;i<10;i+=2)sum+=i;

printf("\%d\n",sum);

return0;}程序运行结果是()A.25B.15C.16D.45以下能正确定义一维数组的是()A.inta[5]={0,1,2,3,4,5};B.inta[]={0,1,2,3,4,5};C.inta(5);D.inta[5]=“abcde”;若有定义:inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则不能表示a数组元素的表达式是()A.*pB.a[10]C.*aD.p[5]下列选项中,能正确进行字符串赋值操作的是()A.chars[5]={“ABCDE”};B.chars[5]={‘A’,‘B’,‘C’,‘D’,‘E’};C.char*s;s=“ABCDE”;D.char*s;scanf(“%s”,s);

24.若有定义:charstr1[10]=“abc”,str2[]=“def”;则执行strcat(str1,str2);后str1的内容是()A.“abcdef”B.“defabc”C.“abc”D.“def”下列关于C语言函数的叙述中,正确的是()A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和调用都可以嵌套D.函数的定义和调用都不可以嵌套有以下程序:#include<stdio.h>

voidfun(inta,intb){intt;t=a;a=b;b=t;}intmain(){intx=1,y=2;

fun(x,y);

printf("\%d,\%d\n",x,y);

return0;}程序运行结果是()A.1,2B.2,1C.1,1D.2,2若有定义:inta=10,p=&a;则p的值是()

A.变量a的地址B.变量a的值C.变量p的地址D.不确定有以下程序:#include<stdio.h>

voidfun(int*p,intn){inti;

for(i=0;i<n;i++)p[i]++;}intmain(){inta[5]={1,2,3,4,5},i;

fun(a,5);

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

return0;}程序运行结果是()A.12345B.23456C.34567D.54321下列函数定义的首部中,正确的返回指针的函数定义是()A.int*fun(inta,b)B.int*fun(inta,intb)C.intfun(int*a,intb)D.int(*fun)(inta,intb)若有定义:structstudent{intnum;charname[10];}s;则下列叙述中错误的是()A.struct是结构体类型的关键字B.structstudent是用户定义的结构体类型C.s是用户定义的结构体类型名D.num是结构体成员名有以下程序:#include<stdio.h>

#include<string.h>

structstudent{intnum;

charname[10];};intmain(){structstudents1={1001,"Zhang"},s2;

s2=s1;

s2.num=1002;

strcpy(,"Li");

printf("\%d,\%s\n",s1.num,);

return0;}运行结果是()A.1001,ZhangB.1002,LiC.1001,LiD.1002,Zhang若有定义:uniondata{inti;charc;floatf;}d;则32位编译环境下变量d的所占内存字节数是()A.1B.4C.8D.不确定有以下程序:#include<stdio.h>

#defineN2

#defineMN+1

#defineNUM(M+1)*M/2

intmain(){printf("\%d\n",NUM);

return0;}程序运行结果是()A.4B.8C.9D.10若要以“读+写”方式打开一个已经存在的文本文件,下列fopen函数调用正确的是()A.fopen(“file.txt”,“r”);B.fopen(“file.txt”,“w+”);C.fopen(“file.txt”,“r+”);D.fopen(“file.txt”,“rb”);下列函数中,用于判断文件指针是否到达文件尾的是()A.feof()B.ferror()C.fseek()D.rewind()下列叙述中正确的是()A.预处理命令行必须位于源文件的开头B.预处理命令行的末尾必须加分号C.#include和#include“文件名”的作用完全相同D.宏替换在编译阶段完成,不占用运行时间若有定义:inta=5,b=2;则表达式a&b的值是()

A.0B.1C.2D.5表达式(a=35,a4),a+5的值是()A.15B.20C.60D.65若有定义:inta[3][4];则a数组中第i行第j列元素的地址不能表示为()A.&a[i][j]

B.a[i]+jC.*(a+i)+jD.((a+i)+j)若要申请10个int类型的动态内存空间,下列语句正确的是()A.intp=(int)malloc(10);B.intp=(int)malloc(10*sizeof(int));C.int*p=malloc(10);D.intp=malloc(10int);二、程序填空题(共18分)给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。例如,有10个正数:4630324061745154826,平均值为30.500000,移动后输出为:3061715264632404548。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构。#include<stdlib.h>

#include<stdio.h>

#defineN10

doublefun(double*x){inti,j;doubleav,y[N];

av=0;

for(i=0;i<N;i++)av+=___1___;

av/=N;

for(i=j=0;i<N;i++)

if(x[i]<av){

y[j++]=x[i];

x[i]=-1;

}

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

if(x[i]!=___2___)y[j++]=x[i];

for(i=0;i<N;i++)x[i]=y[i];

return___3___;}main(){inti;doublex[N];

for(i=0;i<N;i++){x[i]=rand()\%50;printf("\%4.0f",x[i]);}

printf("\n");

printf("\nTheaverageis:\%f\n",fun(x));

printf("\nTheresult:\n");

for(i=0;i<N;i++)printf("\%5.0f",x[i]);

printf("\n");}三、程序修改题(共18分)给定程序中函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为8642。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。#include<stdio.h>

/found/voidfun(longs,longt){longd;

longsl=1;

*t=0;

while(s>0)

{

d=s\%10;

if(d\%2==0)

{

*t=d*sl+*t;

sl*=10;

}

/found/

s\=10;

}}main(){longs,t;

printf("\nPleaseenters:");scanf("\%ld",\&s);

fun(s,\&t);

printf("Theresultis:\%ld\n",t);}四、程序设计题(共24分)请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=4152。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include<stdio.h>

voidfun(inta,intb,long*c){/*请在这里编写代码*/}main(){inta,b;longc;

printf("Inputa,b:");

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

fun(a,b,\&c);

printf("Theresultis:\%ld\n",c);}参考答案及解析一、选择题答案及解析1~5:BCACB解析:1.栈是仅允许在栈顶进行插入删除的线性表,遵循先进后出原则,B正确。2.算法时间复杂度衡量算法执行所需基本运算次数,与硬件、代码长度无关,C正确。3.需求分析阶段确定软件功能需求,明确系统要实现的目标,A正确。4.数据耦合仅通过参数传递数据,耦合度最低,内容耦合耦合度最高,C正确。5.数据流图中箭头表示数据的流动方向,即数据流,B正确。6~10:DCADD解析:6.三级模式中,模式描述全局逻辑结构,外模式描述用户可见的局部逻辑结构,内模式描述物理存储结构,D正确。7.学生和课程之间双向一对多,属于多对多联系,C正确。8.交运算取两个关系的共同元组,只有(a,1,2)是共同元组,元组个数为1,A正确。9.堆排序最坏时间复杂度为O(nlog₂n),其余三种排序最坏时间复杂度均为O(n²),D正确。10.结构化程序设计原则为自顶向下、逐步求精、模块化、限制使用goto语句,可复用是面向对象程序设计的特点,D正确。11~15:CBCBC解析:11.C语言基本组成单位是函数,一行可写多条语句,注释可放在任意位置,语句必须以分号结尾,C正确。12.标识符由字母、数字、下划线组成,首字符不能为数字,不能与关键字重名,B正确。13.实型常量的指数部分必须为整数,e前后必须有数字,C正确。14.a>b结果为1,1>c结果为0,B正确。15.10%3=1,10/3=3,和为4,C正确。

16~20:ACAAA解析:16.%d读取整数时遇到非数字字符停止,因此读取123赋值给a,剩余的4.567赋值给浮点型变量b,A正确。17.a被赋值为0,条件为假,输出$$$,C正确。18.内层switch执行后无break,继续执行外层case2,a自增2次,b自增1次,结果为2,1,A正确。19.循环条件是赋值语句k=1,恒为真,进入无限循环,A正确。20.累加1、3、5、7、9,和为25,A正确。

21~30:BBCABBBBBC解析:21.A选项初始化元素个数超过数组长度,C选项数组定义语法错误,D选项字符数组不能直接用字符串初始化长度不匹配,B正确。22.a数组最大下标为9,a[10]越界,B正确。23.A、B选项无字符串结束符’\0’,D选项指针未指向有效内存空间,C正确。24.strcat将第二个字符串拼接到第一个字符串尾部,A正确。25.C语言不允许函数嵌套定义,允许嵌套调用,B正确。26.函数参数为值传递,实参值不会被修改,A正确。27.*p取指针指向的变量a的值,B正确。28.函数将数组每个元素加1,输出结果为23456,B正确。29.A选项形参定义错误,C选项返回值为int类型,D选项为函数指针定义,B正确。30.s是结构体变量名,不是类型名,C错误。

31~40:ABBCADABDB解析:31.结构体赋值是值拷贝,修改s2不影响s1,A正确。32.共用体取占用内存最大的成员的字节数,float类型占4字节,B正确。33.宏展开为(2+1+1)2+1/2=42+0=8,B正确。34.r+为读写打开已存在文本文件,w+会清空原有文件内容,C正确。35.feof()判断文件指针是否到达末尾,A正确。36.预处理命令可放在任意位置,末尾不需要分号,<>优先从系统库查找头文件,““优先从当前目录查找,宏替换在编译预处理阶段完成,不占运行时间

温馨提示

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

评论

0/150

提交评论