版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C语言机试(选择题)模拟试卷35(共9套)(共240题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、下列排序方法中,最坏情况下比较次数最少的是()。A、冒泡排序B、简单选择排序C、直接插入排序D、堆排序标准答案:D知识点解析:冒泡排序与简单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。2、下列关于栈的叙述正确的是()。A、栈是非线性结构B、栈是一种树状结构C、栈具有“先进先出”的特征D、栈具有“后进先出”的特征标准答案:D知识点解析:栈是限定在一端进行插入和删除的线性表。允许进行插入和删除元素的一端称为栈顶,另一端称为栈底。栈是按照“先进后出”或“后进先出”的原则组织数据的。3、以下叙述中正确的是A、程序必须包含所有三种基本结构才能成为一种算法B、如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达C、只有简单算法才能在有限的操作步骤之后结束D、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令标准答案:D知识点解析:C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成。由这三种基本结构组成的算法可以解决任何复杂的问题,反之则不一定,所有算法必须在有限步骤后结束。4、下列叙述中正确的是()。A、栈是“先进先出”的线性表B、队列是“先进后出”的线性表C、循环队列是线性结构D、有序线性表不可以采用顺序存储结构标准答案:D知识点解析:栈是“先进后出”队列是“先进先出”。栈和队列都是一种线性表,属于线性结构。有序线性表既可以采用顺序存储结构,也可以采用链式存储结构。采用链式存储结构的线性表称之为线性链表。5、设数据元素的集合D={1,2,3,4,5},则满足下列关系R的数据结构中为线性结构的是A、R={(1,2),(3,4),(5,1)}B、R={(1,3),(4,1),(3,2),(5,4)}C、R={(1,2),(2,3),(4,5)}D、R={(1,3),(2,4),(3,5)}标准答案:B知识点解析:把每个答案中的第一个元素集合取出来,例如A:(1,2),先写下来就是12,然后看后面的(3,4),在(1,2)中找不到前驱和后继,只能和(1,2)暂时先并列,然后是(5,1),这里我们已经写过12了,那么5在1前面就是512,但是34要单排,所以A就是两个根节点3和5,两个顺序是512,34。同理选项B是541,32;选项C是:123和45;选项D是135,24所以选项B正确。6、表示关系式x≤y≤z的C语言表达式的是A、(x<=y)‖(y<=z)B、(xC、(x<=y)&&(y<=z)D、(x<=y)!(y<=z)标准答案:C知识点解析:表示三个变量的关系,要利用逻辑表达式,用逻辑与连接。7、在软件开发中,需求分析阶段产生的主要文档是A、可行性分析报告B、软件需求规格说明书C、概要设计说明书D、集成测试计划标准答案:B知识点解析:需求分析的最终结果是生成软件需要规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标与确认,又可以作为控制软件开发进程的依据。8、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是()。A、while(ch=getchar()=’N’)printf("%c",ch);B、while((ch=getchar())!=’N’)printf("%c",ch);C、while(ch=getchar()==’N’)printf("%c",ch);D、while((ch=getchar())==’N’)printf("%c",ch);标准答案:B知识点解析:在C语言中,等于号用“==”表示,一个“=”表示赋值,当读入字母N时,选项A中,while后的条件值为“N”,是非零数,条件成立,循环继续执行,所以A选项错误。C、D选项的含义都是如果输入的字符为“N”,则打印输出,所以正好和题意相反。9、有以下程序段inti,n;for(i=0;i<8;i++){n=rand0%5;switch(n){case1:case3:printf("%d\n",n);break;case2:case4:printf("%d\n",n);continue;case0:exit(0);}printf("%dkn",n);}A、当产生的随机数n为4时结束循环操作B、当产生的随机数n为1和2时不做任何操作C、当产生的随机数n为0时结束程序运行D、for循环语句固定执行8次标准答案:C知识点解析:rand()函数功能为产生一个随机数,ralId()%5,则产生0~4之间的任意随机数,当产生的随机数n为O时,执行case0:exit(0)这条语句,结束程序的运行。10、设变量x和变量y都是int类型,且x=1,y=2,则printf(’’%d%d’’,x,y,(x,y))的输出结果是()。A、12B、122C、1,2D、输出值不确定标准答案:A知识点解析:本题考查printf函数的格式和逗号表达式。printf函数在输出时,是根据格式说明符的个数输出的,如果函数中有多余的项将不予输出;如果有输出项少于格式说明符,则出错,不能输出正确的结果。本题中逗号表达式(x,y)只返回y的值。此时格式说明的个数是2,而输出项的个数是3,因此,printf函数只输出前两项。11、下列定义变量的语句中错误的是()。A、floatUS$;B、doubleint_;C、charFor;D、int_int;标准答案:A知识点解析:考查标识符。定义的变量名要符合表示符的命名规则:C语言规定,标识符由字母(A~Z,a~z)、数字(0~9)或者下划线(_)组成,并且第一个字符必须为字母或者下划线,由此答案选A。12、有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen(″d2.dat″,″w+″);for(i=0;i<6;i++)fprintf(fp,″%d\n″,a[i]);rewind(fp);for(i=0;i<6;i++)fscanf(fp,″%d″,&a[5—i]);fclose(fp);for(i=0;i<6;i++){printf(″%d,″,a[i]);}printf(″\n″);}程序运行后的输出结果是()。A、4,5,6,1,2,3,B、1,2,3,3,2,1,C、1,2,3,4,5,6,D、6,5,4,3,2,1,标准答案:D知识点解析:这是对文件的操作,把数组的数写到文件里,然后再从文件里倒序读出。所以输出结果为6,5,4,3,2,1,。13、以下选项中合法的标识符是A、1-1B、1_1C、_11D、1__标准答案:C知识点解析:本题考查标识符定义。合法标识符的要求是由下划线、英文大小写字母和数字组成的字符串,且第一个字符必须是字母或下划线。14、若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是A、#definen5inta[2*n];B、inta[5+5];C、#defineN10inta[N];D、intn=10,a[n];标准答案:D知识点解析:在C语言中,定义一维数组的语句形式为:类型名数组名[整型常量表达式]。在选项D中,n是一个整型的变量。15、有以下程序#includevoidmain(){charb,c;inti;b=’a’;c=’A’;for(i=0;i<6;i++){if(i%2)putchar(i+b);elseputchar(i+c);}printf("\n");}程序运行后的输出结果是A、ABCDEFB、aBeDeFC、abcdefD、AbCdEf标准答案:D知识点解析:循环变量i从0依次递增到5,依次输出字母.A,b,C,d,E,f。16、有以下程序段intn,t=1,s=0;scanff("%d,&n);do{s=s++;t=t.2;}while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是A、任意正奇数B、任意负偶数C、任意正偶数D、任意负奇数标准答案:D知识点解析:本题考查基本输入和循环。程序代码的功能是通过scanf给变量n赋值,在do…while循环中,s变量自增,t变量每次减2,t的初值为1,循环执行执行一次后t的值变成-1,然后是-3、-5…,直到t的值和n的值相同循环结束。从t的值的变化可知,t是一个变化的负奇数,因此输入的n如果是负奇数,则循环能退出,否则是死循环。17、有以下程序#includemain()voidfun(char*a,char*b){char*s="*****a*b****",t[80];{while(*a==’*’)a++;fun(s,t);puts(t);while(*b=*a){b++;a++;}}}程序的运行结果是A、a*bB、*****a*bC、a*b****D、ab标准答案:C知识点解析:主函数main()定义了指向字符串的指针和一个字符数组,接着调用fun(s,t)函数,进行实参向形参传递,函数fun()第一个while语句判断*a中的值为“*”时继续扫描,当遇到不是“*”时结束,接着第二个while循环语句,将*a中从“a”开始的后续所有字符都赋予.b,也就是t[80]中的内容为“a.b,……。18、有以下程序#includeintf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf("%d\n",s);}intf(intn){staticinta=1;n+=a++;returnn;}程序运行后的输出结果是()。A、9B、8C、7D、10标准答案:A知识点解析:静态变量是在编译时就被分配存储空间,所占用存储单元直到程序结束时才释放,其初始化只进行一次。所以第一次调用f()函数,计算的结果为n=4,a=2,s=4;第二次调用f()函数时,函数f()内的a初值为2,n=5,s=4+5=9,答案选A。19、C语言中double类型数据占字节数为A、4B、8C、12D、16标准答案:B知识点解析:double型数据在内存中占8个字节,float型数据占4个字节,int型数据占2个字节,char型数据占1个字节,所以选择B。20、若变量已正确定义,有以下程序段i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其输出结果是A、0,0B、1,1C、0,1D、程序进入无限循环标准答案:C知识点解析:do…while循环的执行过程如下:①执行do后面的循环体中的语句。②计算while后一对圆括号中表达式的值。当值为非0时,转去执行步骤①;当值为0时,执行步骤③。③退出do…while循环。对于本题变量i的初始值等于“0”,接着执行do后面的循环体中的语句,输出变量i的值0。再判断while后面括号中表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加已经变为1,所以再次输出i的值“1”。21、设有如下的说明和定义struct{inta;char*s;}x,*p=&x;x.a=4;x.s="hello";则以下叙述中正确的是A、语句++p->a;的效果是使P增1B、(p++)->a与p++->a都是合语法的表达式,但二者不等价C、语句*p->s++;等价于(*p)->s++;D、语句++p->a;的效果是使成员a增1标准答案:D知识点解析:p->a得到p指向的结构体变量中的成员a的值。p->a++得到p指向的结构体变量中的成员a的值,用完该值后使p->a加1。++p->a得到p指向的结构体变量中的成员a的值使之加1(先加)。由此可见指向运算符->优先级高于++,因此*p->s++相当于*(p->s)++,结合性自右至左,因此p++->a和(p++)->a等价。22、有以下程序#includeintfun(char*s){char*p=s;while(*p!=0)p++;return(p-s);}main(){printf("%d\n",fun("goodbey!"));}程序的输出结果是A、0B、6C、7D、8标准答案:C知识点解析:本题主要考查了函数定义及调用,以及while循环语句,执行fun函数后,首先是找到最后一个字符的地址,然后减去第一个地址得到的就是这个字符串的长度,所以本题答案为8。23、结构化程序设计的基本原则不包括()。A、多态性B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A)。24、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面属于定义阶段任务的是()。A、软件设计B、软件测试C、可行性研究D、数据库设计标准答案:C知识点解析:软件生命周期可分为定义阶段、开发阶段和维护阶段。软件定义阶段的任务是:确定软件开发工作必须完成的目标;确定工程的可行性。软件开发阶段的任务是:具体完成设计和实现定义阶段所定义的软件,通常包括总体设计、详细设计、编码和测试。其中总体设计和详细设计又称为系统设计,编码和测试又称为系统实现。软件维护阶段的任务是:使软件在运行中持久地满足用户的需要。25、有以下程序#include<stdio.h>#include<math.h>main(){ints;floatn,t,pai;t=1,pai=0,n=1.0,s=1;while(fabs(t)>1.0e-6){pai+=t;n+=2;s=-s;t=s/n;}printf("total=%f\n",pai);}程序运行所计算的是()。A、1-1/2!+1/3!-1/5!+1/7!-…B、1+1/3+1/5+1/7+1/9-…C、1+1/2+1/3+1/4+1/5-…D、1-1/3+1/5-1/7+1/9-…标准答案:D知识点解析:main函数首先定义整型变量s,初值为1;定义float类型的n、t、pai,其中n初值为1.0,t初值为1,pai初值为0。while:循环判断t的绝对值(fabs为求float类型值的绝对值的函数)是否大于1.0×10﹣6,若t的绝对值大于1.0×10﹣6,那么执行语句“pai+=t;n+=2;s=-s;t=s/n;”,所以每轮循环pai累加“s/n”(其中s是上一轮s的相反数,n是上一轮n累加2的值)。第1轮循环时,pai被赋值为1,s是正数,所以最终pai的计算结果是:1-1/3+1/5-1/7+1/9-……。故本题答案为D选项。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、下列描述中正确的是A、线性链表是线性表的链式存储结构B、栈与队列是非线性结构C、双向链表是非线性结构D、只有根结点的二叉树是线性结构标准答案:A知识点解析:线性表的链式存储结构称为线性链表。线性表链式存储结构的基本单位称为存储结点,每个存储结点包括数据域和指针域两个组成部分。各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一结点的指针HEAD称为头指针,当HEAD=NULL时称为空表。栈、队列和双向链表是线性结构。树是一种简单的非线性结构。在树这种数据结构中,所有数据元素的关系具有明显的层次特征。二叉树是非线性结构。线性结构和非线性结构是从数据的逻辑结构角度来讲的,与该数据结构中有多少个元素没有关系,即使是空的二叉树也是非线性结构。2、下面叙述中正确的是()。A、线性表是线性结构B、栈与队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构标准答案:A知识点解析:线性表是最简单的、最常用的一种线性结构。所谓线性链表指的是采用链式存储结构的线性表。栈和队列其实是一种特殊的线性表。树是一种简单的非线性结构,二叉树是树的一种。3、冒泡排序在最坏情况下的比较次数是A、n(n+1)/2B、nlog2nC、n(n-1)/2D、n/2标准答案:C知识点解析:对n个结点的线性表采用冒泡排序,在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。4、程序测试的目的是()。A、为被测程序设计正确的测试用例B、发现并改正程序中的错误C、发现程序中的错误D、改正程序中的错误标准答案:C知识点解析:程序测试是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别,即为发现错误而执行程序的过程,而不是改正错误。故正确答案为C。5、表达式a+=a=a=9的值是A、9B、0C、18D、9标准答案:B知识点解析:第一步a=9,然后计算a.a的值,并将此值赋给a,因此此时a=0,最后计算a+a,并将此值赋给a,因此最终结果为0。6、设栈的顺序存储空间为S(1:m),初始状态为top=0。现经过一系列正常的入栈与退栈操作后,top=m+1,则栈中的元素个数为A、不可能B、m+1C、0D、m标准答案:A知识点解析:栈是向上增长的,每次压入一个元素,栈的TOP指针向上移动一位,即top-1。对于这个题目,由于top初始值等于0,此时入栈一个元素,top值减1,即0-1=-1,出现下溢错误,所以选项A正确。7、若有定义:chars[30]={0};运行时输入:Thisisastring.<回车>则以下不能正确读入整个字符串Thisisastring.到字符数组s中的语句组是()。A、scanf(“%s”,s);B、gets(s);C、for(i=0;(c=getchar())!=’\n’;++)s[i]=c;D、i=0;while((C=getchar())!=’\n’)j[i++]=c;标准答案:A知识点解析:考查基本的字符串输入控制语句。8、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是()。A、while(ch=getchar()=’N’)printf("%c",ch);B、while((ch=getchar())!=’N’)printf("%c",ch);C、while(ch=getchar()==’N’)printf("%c",ch);D、while((ch=getchar())==’N’)printf("%c",ch);标准答案:B知识点解析:在C语言中,等于号用“==”表示,一个“=”表示赋值,当读入字母N时,选项A中,while后的条件值为“N”,是非零数,条件成立,循环继续执行,所以A选项错误。C、D选项的含义都是如果输入的字符为“N”,则打印输出,所以正好和题意相反。9、以下叙述中错误的是A、C程序在运行过程中所有计算都以二进制方式进行B、所有C程序都需要编译链接无误后才能运行C、C程序在运行过程中所有计算都以十进制方式进行D、C程序中字符变量存放的是字符的ASCII值标准答案:C知识点解析:计算机程序都是编译为二进制的代码,计算机才会执行。10、有以下程序#includemain(){FILE*fp;intk,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后的输出结果是()。A、12B、14C、1234D、123456标准答案:D知识点解析:fprintf()函数向文件输出,将输出的内容输出到硬盘上的文件或是相当于文件的设备上执行两次fprintf后文件中有123456,所以D选项正确。11、以下叙述中正确的是A、关系运算符两边的运算对象可以是C语言中任意合法的表达式B、在C语言中,逻辑真值和假值分别对应1和0C、对于浮点变量X和Y,表达式:x==y是非法的,会出编译错误D、分支结构是根据算术表达式的结果来判断流程走向的标准答案:A知识点解析:C语言中没有逻辑类型,用非零表示逻辑真。0表示逻辑假,选项B)错误,无法判断两个浮点变量是否相等,但是x==y不会出现编译错误,选项C)错误,分支结构根据表达式的值,不一定为算术表达式,选项D)错误。12、若有定义语句:inta=3,b=2,c=1;以下选项中错误的赋值表达式是A、a=b=c+1;B、a=(b=4)=3;C、a=(b=4)+c;D、a=1+(b=c=4);标准答案:B知识点解析:本题主要考查赋值表达式,对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一个C语言合法的表达式。13、若有定义语句charc=’\101’;则变量c在内存中占A、2个字节B、3个字节C、1个字节D、4个字节标准答案:C知识点解析:每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的。14、有以下程序,程序运行后的输出结果是#include#defineSUB(a)(a)-(a)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c:printf("%d\n",d);}A、.12B、0C、10D、.20标准答案:D知识点解析:本题主要考查的是宏替换,在程序中执行d=sub(a+b)*c这条语句时,首先要进行宏替换,依据宏SUB(a)的定义可知,上面这条语句替换为d=(a+b)-(a+b)*c,因为乘法的优先级比减法的优先级高,所以先进行乘法运算,即d=5-5*5=-20。15、若有定义“intx,y;”并已正确给变量赋值,则以下选项中与表达式“(x-y)?(x++):(y++)”中的条件表达式(x.y)等价的是A、(x-y<0)B、(x-y>0)C、(x-y<0‖x—y>0)D、(x-y==0)标准答案:D知识点解析:条件表达式的形式如下:表达式1?表达式2:表达式3。其含义为当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值:当“表达式1”的值为零时,则求“表达式3”的值,这时“表达式3”的值就是整个表达式的值。本题条件表达式的执行顺序是先求解表达式“x-y”的值,若其值为非0(可以是证数,也可以是负数),则再求表达式“x++”的值,其值就是条什表达式的值:若表达式“x-y”的值为0,则再求表达式“y++”的值,其值就是条什表达式的值。16、有下列程序:structS{intn;inta[20];);voidflint*a,intn){inti;for(i=0;i<n-1;i++)a[i]+:i;)main(){inti;structSs={10,{2,3,1,6,8,7,5,4,10,9});f(s.a,s.n);for(i=0;i<s.n;i++)printf(”%d,”,s.a[i]);)程序运行后的输出结果是A、3,4,2,7,9,8,6,5,11,10,B、2,3,1,6,8,7,5,4,10,9,C、2,4,3,9,12,12,11,11,18,9,D、1,2,3,6,8,7,5,4,10,9标准答案:C知识点解析:voidf(int*a,intn)函数的功能是对数组a[]的每一个元素加上其下标的值。所以在main()函数中f(s.as.n)语句会调用f(int*a,intn)函数,此时指针a指向数组s.a={2,3,l,6,8,7,5,4,10,9},n=10:然后执行for(i=0;i<n.1;i++)a[i]+=i;语句,也就是从0开始到8对数组s.a={2,3,1,6,8,7,5,4,10,9}中的每一个元素加上其下标值。17、有下列程序:fun(charp[][10]){intn=O,i;for(i=0;i<7;i++)if(p[i][0]==’T’)n+-;returnn;}main(){charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun");printf("%d\n".fun(str));}程序执行后的输出结果是A、1B、3C、0D、2标准答案:D知识点解析:本题在主函数中定义了一个字符二维数组str[][10],并用{“Mon”,“‘Tue”,“Wed”,“Thu”,“Fri”,“Sat”,“Sun”}初始化。函数fun(charp[][10])的功能是统计出p[][10]中p[i][0]等于字符T的个数。所以fun(str)的功能是统计一周七天中英文名称首字母为“T”的个数。因为字符串"Tue”和“Thu”的首字符是“T”,所以n=2。18、若有以下程序#includeintk=7,m=5;voidf(int**s){int*t=&k;s=&t;*s=&m;printf("%d,%d,%d,",k,*t,**s);}main(){inti=3,*p=&i,**r=&p;f(r);printf("%d,%d,%d\n",i,*p,**r);}则程序的输出结果是A、7,5,7,3,5,7,B、7,5,7,3,3,3,C、7,5,5,3,3,3,D、7,7,5,3,3,3,标准答案:C知识点解析:在主函数中首先初始化整型变量i,将i的地址赋给指针变量p,再将指针变量p的地址赋给指向指针的指针变量r;调用f函数,将变量r的值传递给变量s;由于k和m分别赋值7和5,printf("%d,%d,%d,",k,*t,**s);,即结果为7,5,5;返回主函数,printf("%d,%d,%d\n",i,*p,**r);,即结果为3,3,3?因此C选项正确?19、有以下程序intd=1;voidfun(intP)main(){inta=3;{intd=5;fun(a);d+=p++;d+=a++;printf("%d",d);}printf("%d\n",d);}程序的输出结果是A、96B、94C、84D、85标准答案:C知识点解析:代码考查点为全局变量和局部变量的同名问题,若全局变量和某个函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,访问的是局部变量,与同名的全局变量不发生任何关系。主函数执行fun(3)时候,执行调用函数fun,使用局部变量d=5,执行d+=p++,相当于d=d+(p++),得到d的值为8,输出。函数调用结束,转到主函数,继续执行d+=a++,此时d为全局变量,执行语句以后,d值为4。20、以下叙述中正确的是A、局部变量不能被说明为staticB、只有全局变量才有自己的作用域,函数中的局部变量没有作用域C、只有在函数内部定义的变量才是局部变量D、只要是用户定义的标识符,都有一个有效的作用域标准答案:D知识点解析:本题考查局部变量和全局变量作用域,B选项中局部变量也有作用域,C选项中,函数内部定义的也可能是全局变量,A选项错误,因为可以定义个静态局部变量。21、若有定义typedefint*T;Ta[10];则a的定义与下面哪个语句等价A、int*a[10];B、int(*a)[10];C、int*a;D、inta[10];标准答案:A知识点解析:typedef的主要功能是为存在的类型命名,后面的代码中可以利用该新定义的类型名定义变量,题目中定义了整型指针类型T,而后利用T定义了整型指针数组a,含有10个元素,选项A中定义了整型指针数组a,选项B定义了一个指向一维数组的指针a,选项C定义指针变量,,而选项D为定义整型数组最常用的形式,数组a中可以存放10个数据元素。22、以下叙述中正确的是A、在语句charstr[]="string!";中,数组str的大小等于字符串的长度B、语句charstr[10]="string!";和charstr[10]={"string!"};并不等价C、对于一维字符数组,不能使用字符串常量来赋初值D、对于字符串常量"string!",系统已自动在最后加入了’\0’字符,表示串结尾标准答案:D知识点解析:字符串中的字符依次存储在内存中一块连续的区域内,并且把空字符’\0’自动附加到字符串的尾部作为字符串的结束标志。故字符个数为n的字符串在内存中应占(n+1)个字节。B选项中两者等价,C选项中可以使用字符串常量来给一维字符数组赋值,就像B选项中一样,A选项中数组长度比字符串长度小一个字节,字符串中包含隐含的结尾符。23、下面不属于软件测试实施步骤的是A、集成测试B、回归测试C、确认测试D、单元测试标准答案:B知识点解析:软件测试主要包括单元测试、集成测试、确认测试和系统测试。24、下列叙述中正确的是A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B、循环队列中的元素个数随队头指针的变化而动态变化C、循环队列中的元素个数随队尾指针的变化而动态变化D、以上说法都不对标准答案:A知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的变化而变化,A正确。25、层次型、网状型和关系型数据库划分原则是A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是A、)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C、顺序存储结构能存储有序表,链式存储结构不能存储有序表D、链式存储结构比顺序存储结构节省存储空间标准答案:A知识点解析:顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。而链式存储结构的存储空间不一定是连续的。2、在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A、63B、64C、6D、7标准答案:B知识点解析:顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到(即查找成功),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。3、有以下程序:#includemain(){charx=2,y=2,z;z=(Y<<1)&(x>>1);prinff(“%d\n”,z);}程序的输出结果是()。A、1B、0C、4D、8标准答案:B知识点解析:本题考查位运算<<和&。y<<1为4,x>>1为1,二者与运算后为0,故B选项正确。4、设表的长度为n。在下列结构所对应的算法中,最坏情况下时间复杂度最低的是A、堆排序B、有序链表查找C、希尔排序D、循环链表中寻找最大项标准答案:D知识点解析:在循环链表中寻找最大项算法是,首先取出第一个数作为最大数,然后和后面的所有项进行比较查找。因此,比较次数为n-1。5、以下选项中,能用作用户标识符的是()。A、_0_B、8_8C、voidD、unsigned标准答案:A知识点解析:C语言中的标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B选项中以数字8开头,所以错误。C选项与D选项中用的是关键字void与unsigned,所以错误。6、设二叉树共有375个结点,其中度为2的结点有187个。则度为1的结点个数是A、0B、1C、188D、不可能有这样的二叉树标准答案:A知识点解析:二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2i-1个结点;深度为k的二叉树至多有2k-1个结点;对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。本题中,度为2的结点有187个,叶子结点应该有187+1=188个,度为1的结点个数=375-187-188=0。7、程序调试的任务是A、设计测试用例B、验证程序的正确性C、发现程序中的错误D、诊断和改正程序中的错误标准答案:D知识点解析:程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试工具去执行并找出错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。8、若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是A、sqrt(fabs(pow(n,x)+pow(x,e)))B、sqrt(abs(n^x+e^x))C、sqrt(fabs(pow(n,x)+exp(x)))D、sqrt(fabs(pow(x,n)+exp(x)))标准答案:C知识点解析:n和e的x幂次方,要分别调用C语言的数学库函数doublepow(n,x)和doubleexp(x),因为这两个函数的返回值都为double型,对其两者的和计算绝对值,调用库函数doubleflabs(pow(n,x)+exp(x)),求出和的绝对值,再调用开平方函数doublesqrt(fabs(pow(n,x)+exp(x))),这样计算出的结果就是题干中算*表达式的值。9、在一个C源程序文件中所定义的全局变量,其作用域为A、由具体定义位置和extern说明来决定范围B、所在程序的全部范围C、所在函数的全部范围D、所在文件的全部范围标准答案:A知识点解析:全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。在同一编译单位内用extern说明符扩展全局变量的作用域(当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序:该变量是一个己在外部定义了的全局变量,已经分配了存储单元,不需要再为它分配存储单元。这时全局变量的作用域从extern说明处起,延伸到该函数末尾)。当一个程序由多个编译单位构成,并且在每个文件中均需要引用同一个全局变量,这时只在其中一个文件中定义所有的全局变量,而在其他用到这些全局变量的文件中用extem对这些变量进行说明。10、以下叙述中正确的是A、程序的主函数名除main外,也可以使用Main或mainB、在C程序中,模块化主要是通过函数来实现的C、程序可以包含多个主函数,但总是从第一个主函数处开始执行D、书写源程序时,必须注意缩进格式,否则程序会有编译错误标准答案:B知识点解析:C语言中任何一个有效的程序都有且只能有一个main()函数,不能写成其他形式,一个C程序总是从主函数开始执行,到main函数体执行完后结束,而不论main函数在整个程序中的位置如何。而为了代码清晰容易看懂,最好加上注释,这是程序书写风格,与编译无关。11、C语言源程序名的后缀是A、.CB、.exeC、.objD、.cp标准答案:A知识点解析:C语言源程序名的后缀是.C,目标文件的扩展文件是.obj,可执行文件的扩展名是.exe。12、当变量c的值不为2、4、6时,值也为“真”的表达式是A、(c==2)‖(c==4)‖(c==6)B、(c>=2&&c<=6)&&!(c%2)C、(c>=2&&c<=6)&&(c%2!=1)D、(c>=2&&c<=6)‖(c!=3)‖(c!=5)标准答案:D知识点解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D中c的值不为2、4、6时,那么表达式(c>=2&&c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。13、有以下程序#include<stdio.h>main(){inta=2,b;b=a<<2;printf(”%d\n”,b);}A、4B、6C、8D、2标准答案:C知识点解析:表达式a<<2,把a向左移动2位,相当于扩大4倍。14、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:A和B为一对多的联系,则对于A中的每一个实体,B中有多个实体与之联系,而B与C为一对一联系,则对于B中的每一个实体,C中之多有一个实体与之联系,则可推出对于A中的每一个实体,C中有多个实体与联系,所以为一对多联系。15、执行以下程序后,test.txt文件的内容是(若文件能正常打开)main(){FILE*fb;char*s1="Fortran",*s2="Basic".if((fb=fopen("test.txt","wb"))==NULL){printf("Can’topentest.txtfile\n");exit(1);}fwrite(s1,7,l,fb);/*把从地址s1开始的7个字符写到fb所指文件中*/fseek(fb,0L,SEEK_SET);/*文件位置指针移到文件开头*/fwrite(s2,5,1,fb);fclose(fb);}A、BasicanB、BasicFortranC、BasicD、FortranBasic标准答案:A知识点解析:本题主要考查文件的基本操作。在main函数中,首先打开text.txt文件,然后通过fwrite函数把s1字符串写到文件中,接下来通过fseek函数把文件指针移动到文件开始,再调用fwrite函数把s2字符窜写到文件中,s2的长度小于s1的长度,因此第二次写的时候会覆盖第一次写的部分内容,程序运行后test.text中内容为Basican。16、有以下程序段charname[20];intnum;scanf("name=%snum=%d",name,&num);当执行上述程序段,并从键盘输入:name=Lilinum=1001后,name的值为A、name=LiliB、Lilinum=C、name=Lilinum=1001D、Lili标准答案:D知识点解析:在题目中以字符串的形式给字符数组赋值,所以字符数组name的值为Lili。17、以下叙述中正确的是A、循环发生嵌套时,最多只能两层B、三种循环for,while,do-while可以互相嵌套C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误D、for语句的圆括号中的表达式不能都省略掉标准答案:B知识点解析:在一个循环体内又完整包含了另一个循环,称为循环嵌套。循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。for循环、while循环、do-while循环可以互相嵌套,但每层循环在逻辑上必须完整。而在for语句中,for语句中的表达式可以部分或全部省略,但两个“;”不可省略。18、有以下程序#includetypedefstruct{intb,p;}A;voidf(AC)/*,注意:c是结构变量名*/{intj;c.b+=1;c.p+=2;}main(){i;Aa={1,2};f(a);printf("%d,%d\n",a.b,a.p);}程序运行后的输出结果是A、2,4B、1,2C、1,4D、2,3标准答案:B知识点解析:在C语言中,数据只能从实参单向传递给形参,称为“按值”传递。也就是说,当简单变量作为实参时,用户不可能在函数中改变对应实参的值。所以本题中在main()函数f(A)语句中结构体实参a作为值,传递给函数f(AC)中的形参c;这种值传递的方式不会对实参a产生任何影响,所以结构体实参a的值不会发生变化。19、软件设计中模块划分应遵循的准则是A、低内聚低耦合B、高耦合高内聚C、高内聚低耦合D、以上说法均错误标准答案:C知识点解析:根据软件设计原理提出如下优化准则:①划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性,并以此原则优化初始的软件结构。②一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。③软件结构的深度、宽度、扇入、扇出应适当。④模块的大小要适中。C正确。20、有以下程序structS{inta;intb;};main(){structSa,*p=&a;a.a=99;printf("%d\n",_______);}程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是A、a.aB、*p.aC、p->aD、(*p).a标准答案:B知识点解析:如果p指向结构体,那么下面三种形式都可以访问结构体的成员:结构体变量.成员名、(*p).成员名、p->成员名。21、有以下程序voidfun(intx,inty,int*c,int*d){*c=x+y;*d=x-y;}main(){inta=4,b=3,c=0,d=0;fun(a,b,&c,&d);printf("%d%d\n",c,d);}程序的输出结果是A、43B、34C、71D、00标准答案:C知识点解析:函数fun有四个形参,功能是利用参数的地址传递来计算前两个参数的和与差。主函数中调用fun函数c计算4+3,d计算4.3值为1。22、若fp已定义为指向某文件的指针,且没有读到该文件的末尾,则C语言函数feof(fp)的函数返回值是A、EOFB、非0C、-1D、0标准答案:D知识点解析:本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以选项D正确。23、有以下程序:#includefun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k);}执行后的输出结果是()。A、5,11B、5,5C、11,11D、11,5标准答案:A知识点解析:声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。本题子函数fun中的变量i和m均为静态局部变量。所以第一次调用fun函数,返回m的值为5,第二次再调用fun函数时,i的值为3,m的值已经是5了,所以执行i+=m+1,i的值变为9,m=i+x+y=9+1+1=11。24、若有定义语句:intyear=2009,*p=&year;以下不能使变量year中的值增至2010的语句是A、(*p)++;B、*p++;C、++(*p);D、*p+=1;标准答案:B知识点解析:由于自加运算符++的运算级别高于间接运算*的运算级别,所以B选项的表达式*p++不能使变量year中的值增至2010。因此B选项正确。25、下列叙述中正确的是()。A、算法的复杂度包括时间复杂度与空间复杂度B、算法的复杂度是指算法控制结构的复杂程度C、算法的复杂度是指算法程序中指令的数量D、算法的复杂度是指算法所处理的数据量标准答案:A知识点解析:算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。算法的复杂度包括时间复杂度与空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度是指算法在执行过程中所需要的内存空间。故本题答案为A选项。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述中正确的是A、标识符的长度不能任意长,最多只能包含16个字符B、语言中的关键字不能作变量名,但可以作为函数名C、用户自定义的标识符必须“见名知义’’,如果随意定义,则会出编译错误D、标识符总是由字母、数字和下划线组成,且第一个字符不得为数字标准答案:D知识点解析:标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。C语言合法标识符的命名规则是:①标识符由字母、数宁和下划线组成;②第一个字符必须为字母或下划线;③大写字母与小写字母被认为是两个不同的宁符;④C语言规定了一个标识符允许的宁符个数,为32,超过的字符将不被识别。C语言的标识符可分为以下3类:①关键字,不能用于为自定义标识符命名。②预定义标识符。③用户标识符。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名,一般做到见名知义,但是没有特殊规定。2、以下选项中合法的常量是A、2.7eB、999C、123E0.2D、0Xab标准答案:D知识点解析:0xab是十六进制表示的常量。3、C语言源程序名的后缀是()。A、.CB、.exeC、.objD、.cp标准答案:A知识点解析:C语言源程序名的后缀是.C,目标文件的扩展名是.obj,可执行文件的扩展名是.exe。4、有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(Y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);}程序运行后的输出结果是A、a=l,b=1B、a=l,b=0C、a=2,b=lD、a=2,b=2标准答案:C知识点解析:本题考查的是用switch语句实现多分支选择结构,首先进入第一个switch(x)判断,进入case1中进行嵌套判断,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接着执行case2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1。5、要求通过while循环不断读入字符,当读人字母N时结束循环。若变量已正确定义,以下正确的程序段是()。A、while(ch:getchar()=’N’)printf(’’%e’’,ch);B、while((eh=getchar())!=’N’)printf(’’%e’’,eh);C、while(ch=getchar()==’N’)printf(’’%c’’,ch);D、while((ch=getchar())==’N’)printf(’’%e’’,eh);标准答案:B知识点解析:在C语言中,等于号用“==”表示,一个“=”表示赋值,当读入字母N时,选项A中,while后的条件值为“N”,是非零数,条件成立,循环继续执行,所以A选项错误。C、D选项的含义都是如果输入的字符为“N”,则打印输出,所以正好和题意相反。6、若有定义:floatx=1.5;inta=1,b=3,c=2;,则正确的switch语句是()。A、switch(a+b){ease1:printf("*\n");ease2+1:printf("**\n");}B、switch((int)x);{ease1:printf("*\n");case2:printf("**\n");}C、switch(x){case1.0:printf("*\n");ease2.0:printf("**\n");}D、switch(a+b){case1:printf("*\n");casec:printf("**\n");}标准答案:A知识点解析:B选项中switch((int)x);语句中不应该有最后的分号。switch(expr1)中的expr1不能用浮点类型或long类型,也不能为一个字符串,所以C选项错误。case后面必须为常量表达式,所以D选项错误。7、在关系数据库中,用来表示实体间联系的是A、属性B、二维表C、网状结构D、树状结构标准答案:B知识点解析:在关系数据库中,实体间的联系由个二维表来表示。8、若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是A、main(){……x=fun(2,10);……}floatfun(inta,intb){……)B、floatfun(inta,intb){……)main(){……x=fun(i,j);……)C、floatfun(int,int);main(){……x:fun(2,10);……)floatfun(inta,intb){……)D、main(){floatfun(inti,intj);……x=fun(i,j);……)floatfun(inta,intb){……}标准答案:A知识点解析:C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)。在选项A中,调用的子函数在调用后面定义,所以不正确。在选项B、C中,被调用函数在主函数之前定义,再在主函数中调用,所以是正确的;在选项D中,在主函数中先对子函数floatfun(inti,inti)进行了声明,然后进行调用。9、负责数据库中查询操作的数据库语言是A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言标准答案:C知识点解析:负责数据库中查询操作的数据库语言是数据操纵语言。10、以下叙述中正确的是A、continue语句的作用是:使程序的执行流程跳出包含它的所有循环B、break语句只能用在循环体内和switch语句体内C、在循环体内使用break语句和continue语句的作用相同D、break语句只能用于switch语句体中标准答案:B知识点解析:只能在循环体内和switch语句体内使用break语句。continue语句的作用是结束本次循环,即跳过本次循环体中continue语句后面的语句,立刻进行下一次的循环条件判断,可以理解为仅结束本次循环。而break语句可以使程序流程跳出switch语句体,也可用break语句在循环结构中终止循环体。11、有以下程序intadd(inta,intb){return(a+b);)main(){intk,(*f)(),a=5,b=10;f=add;}则以下函数调用语句错误的是A、k=add(a,b);B、k=(*f)Ca,b);C、k=*f(a,b);D、k=fla,b);标准答案:C知识点解析:在语句”k=*f(a,b)”中,由于”()”的优先级高于”*”,所以”’f(a,b);”表示其返回类型为指针的带有两个整型参数的函数,而不是整型数值,因此选项C为错误的调用形式。12、以下选项中可用作C程序合法实数的是A、3.0e0.2B、1e0C、E9D、9.12E标准答案:B知识点解析:A选项中E后面的指数必须为整数。C语言规定,E之前必须要有数字,所以C选项错误。E后面必须要有数字,且必须为整数,所以D选项错误。13、下列叙述中正确的是()。A、当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失B、打开一个已存在的文件并进行写操作后,原有文件中的全部数据必定被覆盖C、在一个程序中对文件进行写操作后,必须先关闭该文件然后再打开才能读到第一个数据D、C语言中的文件是流式文件,因此只能顺序存取数据标准答案:A知识点解析:B选项中打开一个已存在的文件并进行写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C选项中在一个程序中对文件进行写操作后,不是先关闭该文件然后再打开才能读到第—个数据,用fseek()函数进行重新定位即可。D选项中,C语言中的文件可以进行随机读写。14、在黑盒测试方法中,设计测试用例的根据是A、数据结构B、程序调用规则C、模块间的逻辑关系D、软件要完成的功能标准答案:D知识点解析:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。15、当变量c的值不为2、4、6时,值也为“真”的表达式是A、(c==2)||(c==4)||(c==6)B、(c>=2&&c<=6)&&!(c%2)C、(c>=2&&c<=6)&&(c%21=1)D、(c>=2&&c<=6)||(c!=3)||(c!=5)标准答案:D知识点解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D)中c的值不为2、4、6时,那么表达式(c>=2&&c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。16、有下列程序:inta=4;intf(intn){intt=0;staticinta=5;if(n%2){inta=6;t+=a++;}else{inta=7;t+=a++;}returnt+a++;}main(){ints=a,i=0;for(;i<2;i++)s+=f(i);printf("%d\n",s);}程序运行后的输出结果是A、28B、24C、32D、36标准答案:A知识点解析:程序中定义了全局整型变量a=4。在intf(intn)函数中定义了局部静态整型变量并进行了初始化即staticinta=5。在intf(intn)函数中对n是否是偶数进行判断,如果n是奇数,则函数的返回值为11,局部静态整型变量a=6;如果n是偶数,则函数的返回值为12,局部静态整型变量a=6。所以在main()函数中循环首先执行s+=f(0)语句,而f(0)返回值12,所以第一次循环结束s的值等于4+12=16:第二次开始执行f(1)时,在f(1)中执行if(n%2){inta=6;t+=a++;}和returnt+a++;这两条语句,这时t=6,a=6(静态局部变量第一次循环后其值加1值不释放,执行第二次循环量,其值仍有效),所以f(1)的返回值等于12。再在主函数中执行s+=f(1)语句,即16+12=28。17、以下选项中函数形参不是指针的是A、fun(int&p){…}B、fun(inta[10]){…}C、fun(int*a){…}D、fun(intp[]){…}标准答案:A知识点解析:C语言中形参数组是指针变量,其数组中元素的个数由传递的实参数组决定,因此可以在定义的时候,不给出元素个数的说明,因此选项B)和D)形参均为指针变量,选项A)的定义在C语言中不存在的。18、若有以下程序typedefstructstu{char*name,gender;intscore;}STU;voidf(char*p){p=(char*)malloc(10);strcpy(p,"Qian");}main(){STUa={NULL,’m’,290},b;a.name=(char*)malloc(10);strcpy(a.name,"Zhao");b=a;f(b.name);b.gender=’f:b.score=350;printf("%s,%c,%(1,",a.name,a.gender,a.score);printf("%s,%c,%d\n",b.name,b.gender,b.score);}则程序的输出结果是A、Zhao,m,290,Qian,f,350B、Qian,C350,Qian,f,350C、Qian,m,290,Qian,f,350D、Zhao,m,290,Zhao,f,350标准答案:D知识点解析:函数f(char*p)的主要功能申请字符串的存储空间,然后存入字符串"Qian",但当程序调用结束以后,形参指针变量p撤销,存储的字符串地址丢失,而不能更改实参指针的值。主函数中结构体变量定义同时赋初值,初始情况其name指针成员存储空,而后语句为其分配存储空间,存入字符串"Zhao"。执行b=a;语句后,b的数据和a的数据相同,调用函数f以后,b的name成员的值没变。19、程序中己构成如下图所示的不带头结点的单向链表结构,指针变量s、P、q均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。若有以下程序段:q=s;s=s->next;p=s;while(p->next)p=p->next;p->next=q;q->next=NULL;该程序段实现的功能是A、尾结点成为首结点B、首结点成为尾结点C、删除首结点D、删除尾结点标准答案:B知识点解析:分析程序可知,程序段首先让q指向链表的首结点,s指向链表的第二结点,p此时指向链表的第二个结点。然后在while循环中,当p的后继结点非空时,让p指向链表的最后一个结点,退出循环。然后让尾结点指向首结点,并使首结点的后继结点为NULL。所以最终实现链表的首结点成为尾结点。20、若有以下程序typedefstructstu{charname[10],gender;intscore;}STU;voidf(STUa,STUb){b=a;printf(”%s,%c,%d,",b.name,b.gender,b.score);}main(){STUa={"Zhao",’m’,290},b={"Qian",’f’,350};f(a,b);printf("%s,%c,%d\n",b.name,b.gender,score);}则程序的输出结果是A、Zhao,m,290,Zhao,m,290B、Zhao,m,290,Qian,f,350C、Qian,f,350,Qian,f,350D、Zhao,m,290,Zhao,f,350标准答案:B知识点解析:函数f(STua,STUb)的主要功能是为把结构体变量a的值存放到b中,然后输出b中各个成员的值。土函数中调用函数f(a,b),输出赋值以后b的数据,实际为a{"Zhao",’m’,290}的数据,函数调用结束,形参a和b撤销,流程到主函数输出b{"Qian",’f’,350}的数据。21、下列关于C语言文件的叙述中正确的是A、文件由结构序列组成,可以构成二进制文件或文本文件B、文件由一系列数据依次排列组成,只能构成二进制文件C、文件由数据序列组成,可以构成二进制文件或文本文件D、文件由字符序列组成,其类型只能是文本文件标准答案:C知识点解析:在C语言中,对输入、输出的数据都按“数据流”的形式进行处理。数据可以按文本形式或二进制形式存放在介质上,因此文件可以按数据的存放形式分为文本文件和二进制文件。22、以下叙述中正确的是A、只能在循环体内和switch语句体内使用break语句B、当break出现在循环体中的switch语句体内时,其作用是跳出该switch语句体,并中止循环体的执行C、continue语句的作用是:在执行完本次循环体中剩余语句后,中止循环D、在while语句和do-while语句中无法使用continue语句标准答案:A知识点解析:break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。B、C和D三个选项中均有错误。因此A选项正确。23、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。A、-369B、369C、0.369D、整数集合{1,2,3,4,5}标准答案:B知识点解析:只有B)选项369可以用无符号整数来表示和存储。A)选项-369有负号,选项C)0.369是小数都不能用无符号整数类存储。选项D)是一个整数集合得用数组来存储。24、程序流程图中带有箭头的线段表示的是()。A、图元关系B、数据流C、控制流D、调用关系标准答案:C知识点解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。25、下列结构体类型说明和变量定义中正确的是()。A、structREC;{intn;charc;};RECt1,t2;B、typedefstruct{intn;charc;}REC;RECt1,t2;C、typedefstructREC;{intn=0;charc=’A’;}t1,t2;D、struct{intn;charc;}REC;RECt1,t2;标准答案:B知识点解析:本题考查结构体的相关知识。选项A中“structREC”后面不能有分号。C选项中“typedefstructREc”的后面也不能有分号。选项D中“REC”是结构体变量,不能当作结构体类型来使用。故本题答案为B选项。国家二级C语言机试(选择题)模拟试卷第5套一、选择题(本题共25题,每题1.0分,共25分。)1、下列选项中不属于结构化程序设计原则的是()。A、可封装B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化程序设计的原则包括:自顶向下、逐步求精、模块化、限制使用GOTO语句,所以选择A选项。2、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是A、-369B、369C、0.369D、整数集合{1,2,3,4,5}标准答案:B知识点解析:UInt表示的是无符号整数类,所以它的每个实例都是一个无符号整数,所以排除选项A和选项C,选项D是整数集合,所以也排除。3、设顺序表的长度为16,对该表进行简单插入排序。在最坏情况下需要的比较次数为A、15B、30C、60D、120标准答案:D知识点解析:插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。最坏情况计算方法(n*(n—1))/2=16*15/2=120。4、已知大写字母A的ASCⅡ码值是65,小写字母a的ASCII码值是97。下列不能将变量c中的大写字母转换为对应小写字母的语句是()。A、c=(-A’+c)%26一’a’B、c=c+32C、C=C—’A’+‘a’D、c=(c一’A’)%26+’a’标准答案:A知识点解析:根据题意可知,小写字母比与之对应的大写字母的ASCⅡ码大32。A选项中字符A加上c表示的大写字符再对字母个数26取余,本身这个表达式没有任何含义,所以选择A选项。5、软件生命周期是指A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用、退役的过程。6、下列叙述中错误的是()。A、C程序可以由一个或多个函数组成B、C程序可以由多个程序文件组成C、一个C语言程序只能实现一种算法D、一个C函数可以单独作为一个C程序文件存在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天然气提氦操作工安全技能能力考核试卷含答案
- 压电石英片烧银焊线工操作管理强化考核试卷含答案
- 轮轴装修工安全意识强化测试考核试卷含答案
- 油锯工安全文化考核试卷含答案
- 米面主食制作工改进模拟考核试卷含答案
- 砚台雕刻工健康知识强化考核试卷含答案
- 保险公估人发展趋势考核试卷含答案
- 真空测试工安全生产基础知识模拟考核试卷含答案
- 磨矿分级工岗中知识竞赛考核试卷含答案
- 液化天然气储运工岗中复测考核试卷含答案
- 2026年非接触式物位仪表行业技术创新与应用报告
- 2026中国新能源电池材料技术突破与市场前景研究报告
- 2026年综合管理岗试题及答案
- 2027届高考思想政治《指向学科思维培养的高考政治复习备考策略》
- 2026年《中国肺动脉高压诊断治疗指南(2026版)》
- (2026年)康复医学科住院患者医疗安全管理制度与措施
- 手术室净化监理细则
- 2026年发展对象培训班考试题库(含完整答案解析)
- 2026年西学中考试题库及答案
- (2026)院感考试试题(含答案)
- 2026年燃气从业资格证模拟题及完整答案详解1套
评论
0/150
提交评论