版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C语言)笔试模拟试卷6(共9套)(共497题)国家二级(C语言)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、算法的时间复杂度是指()。A、执行算法程序所需要的时间B、算法程序的长度C、算法执行过程中所需要的基本运算次数D、算法程序中的指令条数标准答案:4知识点解析:所谓的算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。2、下列描述中,不是线性表顺序存储结构特征的是()。A、不便于插入和删除B、需要连续的存储空间C、可随机访问D、需另外开辟空间来保存元素之间的关系标准答案:8知识点解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此,不需要另外开辟空间来保存元素之间的关系。3、按照“先进后出”原则组织数据的数据结构是()。A、队列B、栈C、双向链表D、二叉树标准答案:2知识点解析:栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除的,是按先进后出的原则组织数据的。4、有下列二叉树,对此二叉树前序遍历的结果为()。A、ACBEDGFHB、ABDGCEHFC、HGFEDCBAD、ABCDEFGH标准答案:2知识点解析:对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。5、对建立良好的程序设计风格,下列描述正确的是()。A、程序应该简单、清晰、可读性好B、符号名的命名只需要符合语法C、充分考虑程序的执行效率D、程序的注释可有可无标准答案:1知识点解析:“清晰第一,效率第二”,在考虑到程序的执行效率的同时,一定要保证程序清晰、可读;对符号名的命名,除了要符合语法要求外,还要具有一定的含义;程序的注释可以帮助程序员理解程序,不是可有可无的。6、下列不属于软件工程的3个要素的是()。A、工具B、过程C、方法D、环境标准答案:8知识点解析:软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制、管理。7、下列选项中不属于软件生命周期开发阶段任务的是()。A、软件测试B、概要设计C、软件维护D、详细设计标准答案:4知识点解析:软件的生命周期可分为软件定义、软件开发及软件运行维护3个阶段。其中软件定义阶段的主要工作有可行性研究与计划制定和需求分析等;软件开发阶段的主要工作有概要设计、详细设计和测试等:软件运行维护阶段的主要工作是软件的运行及后期的维护等。8、使用白盒测试法时,确定测试数据应该根据()和指定的覆盖标准。A、程序的内部逻辑B、程序的复杂结构C、使用说明书D、程序的功能标准答案:1知识点解析:白盒测试是把测试对象看作是一个打开的盒子,允许测试人员利用程序内部的逻辑结构及相关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。所以,白盒测试的对象基本上是源程序,以程序的内部逻辑和指定的覆盖标准测试数据。9、数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。A、DB包括DBS和DBMSB、DBMS包括DB和DBSC、DBS包括DB和DBMSD、没有任何关系标准答案:4知识点解析:数据库系统(DBS)由数据库(DBS)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软件平台5个部分组成,可见DB和DBMS都是DBS的组成部分。10、对关系S和只进行集合运算,结果中既包含S中的所有元组也包含只中的所有元组,这样的集合运算称为()。A、并运算B、交运算C、差运算D、积运算标准答案:1知识点解析:关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、下列叙述错误的是()。A、在C语言中的保留字必须小写B、变量的存储类型决定了变量的存储位置及其生存期C、宏定义以#define开头,行未必须加分号D、在C语言中的注释行可以出现在程序的任何位置标准答案:4知识点解析:本题涉及C语言最基本的4个知识点:①C语言的保留字必须小写:②变量的存储类型不同,其存储位置和生存期也不一样;③C语言允许其注释部分出现在程序中的任何位置;④宏定义以#define开头,行末不需要加分号。12、若有运算符:>、=、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为()A、%、sizeof、>、<<、=B、sizeof、%、>、=、<<C、sizeof、<<、>、%、=D、sizeof、%、<<、>、=标准答案:8知识点解析:主要考查运算符的优先级。sizeof的优先级最高,后面的顺序是:%、<<、<,优先级最低的是“=”。13、已知inta=2,b=3;则执行表达式a=a<b后,变量a的值为()。A、0B、1C、2D、3标准答案:2知识点解析:先计算关系表达a<b=2<3)为真(表达式为真时,如果变量为int型变量则真用1表示,假用0表示),即a=1。14、假定w、x、y、m均为int型变量,则执行下列的语句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;A、3B、4C、5D、6标准答案:1知识点解析:条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值,当a为假时,其值等于表达式c的值。第一个表达式:w=6<x=4为假,所以返回x的值,即m=x=4;第二个表达式:m=4<y=3为假,所以返回y的值,即m=y=3。15、若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。A、b=double(b);B、++b;C、a=a++5;D、a=double(b);标准答案:2知识点解析:要解答此题只要知道两个知识点:①在C语言中规定进行强制类型转换的格式是:(double)变量名;②在C语言中不允许给表达式赋值。16、执行下列程序中的输出语句后,a的值是()。main(){inta;printf("%d\n",(a=2*3,a*5,a+7));}A、17B、37C、6D、13标准答案:4知识点解析:本题考查逗号表达式.本题的返回值是a+7,a=2*3=6,a+7=13(注意:本题问的是a的值,而不是程序的输出值)。17、若有下列定义(设int类型变量占2个字节):inti=8;则下列语句:.printf("i=%08d",i);输出的结果是()。A、i=8,B、i=00000008,C、i=08,D、8标准答案:2知识点解析:本题考查printf函数的格式。“%08”格式符中的“0”表示在指定数据输出宽度的同时,在数据前面的多余空格处加“0”“8”表示指定数据的输出宽度为8位。18、两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是()。main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}A、4和2B、4和1C、4和0D、3和1标准答案:1知识点解析:本题考查ifelse语句。首先scanf函数通过键盘读)x的值。当x=3时,第一个if语句,先判断条件,取x的值3和2比较,然后将x的值加1,发现条件成立,执行下列的printf语句,输出x的值4。当x=1时,第一个if语句,先判断条件,取x的值1和2比较,然后将x的值加1(x的值变为2),发现条件不成立,执行下列的else语句,先输出x的值2,再将x的值减1。19、运行下列程序时,若输入的数据为“1,2,3”,则输出结果是()。main(){floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<b){t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}if(b<c){t=-b;b=c;c=t;}printf("%f\n%f\n%f/n",a,b,c);}A、1.002.003.00B、1.003.002.00C、132D、3.0000002.0000001.000000标准答案:8知识点解析:本题考查if语句。第1个if语句,实现如果a<b,则交换a、b值的功能;第2个if语句,实现如果a<c,则交换a、c的值的功能:第3个if语句,实现如果b<c,则交换b,c的值的功能。3个if语句结合起来实现的功能就是将a、b、c按从大到小排序。20、下列能正确定义一维数组的选项是()。A、inta[5]={0,1,2,3,4,5}B、chara[]={0,1,2,3,4,5};C、chara={’A’,’B’,’C’};D、inta[5]="0123";标准答案:2知识点解析:在定义数组时,如果赋给的初始值个数大于数值的长度,这样就会越界,因此选项A)错误;选项C)中定义的是一个字符变量C;选项D)中整型数组,中只能存储整型数据,而不能存储字符串常量“0123”。三、选择题(2分)(本题共20题,每题1.0分,共20分。)21、已定义下列函数:intfun(int*p){return*p;)fun函数返回值是()。A、不确定的值B、一个整数C、形参p中存放的值D、形参p的地址值标准答案:2知识点解析:由函数intfun(int*p){return*p;}的定义可知,返回值为整型指针变量p所指向的数据。22、下列程序的输出结果是()。#include<stdio.h>main(){inta=2,b=3,p;p=f(a,b);printf("%d",p);}intf(a,b){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}A、-1B、0C、1D、2标准答案:1知识点解析:本题考查ifelse语句。在intf(a,b)中:第一个if语句,先判断条件,发现a>b条件不成立,则执行与其配对的else语句;第二个if语句,先判断条件,发现a==b条件不成立,则执行与其配对的else语句,c=-1。23、有下列程序:fun(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,5B、5,11C、11,11D、11,5标准答案:2知识点解析:子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。24、下列循环体的执行次数是()。#include<stdio.h>main(){inti,j;for(i=0,j=1;i<j+1;i+=1,j--)printf("%d\n",j);}A、3B、2C、1D、0标准答案:4知识点解析:本题考查for循环。第一次循环前先判断循环条件,此时i=0,j=1,i<j+1成立,循环第一次;第二次循环前先判断循环条件,此时i=1,j=0,(j--是先使用j的值再减1),i<j+1不成立,结束循环。25、设变量x和y均已正确定义并赋值。下列if语句中,在编译时将产生错误信息的是()。A、if(x++);B、if(x>y&&y!=0);C、if(x>0)x--elsey++;D、if(y<0){;}elsex++;标准答案:4知识点解析:选项A)和选项B)在条件判断语句的后面是空语句,什么都不做;在选项D)if后面是一个复合空语句;而在选项C)中,在x--后面少了一个分号,所以程序段在编译时,会出现语法错误。26、下列字符数组初始化语句中,不正确的是()。A、charc[]=’goodmoming’;B、charc[20]="goodmorning";C、charc[]={’a’,’b’,’c’,’d’};D、charc[]={"goodmoming"};标准答案:1知识点解析:本题考查两个概念:①用单引号括起来的一个字符常量只能存放一个字符;②C语言中没有字符串变量,只能用字符数组来存储字符串。选项A)中一个单引号内放了若干个字符是错误的:选项B)和选项D)选项中将一个字符串赋值给一个字符数组是允许的。27、下列程序的输出结果是()。#include<stdio.h>voidp(int*x){printf("%d",++*x);}voidmain(){inty=3;p(&y);}A、3B、4C、2D、5标准答案:2知识点解析:本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则printf的执行结果为3+1=4。28、下列程序的运行结果为()。#include<stdio.h>voidabc(char*str){inta,b,i,j;for(i=j=0;str[i]!=’\0’;i++)if(str[i]!=’a’)str[j++]=str[i];str[j]=’\0’;}voidmain(){charstr[]="abcdef";abc(str);printf("str[]%s",str);}A、str[]=bcdefB、str[]=abcdefC、str[]=aD、str[]=ab标准答案:1知识点解析:本题考查函数调用时的参数传递。通过函数abc的执行,将字符串中的字母a去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。29、变量m的值为8,m的地址为1010,若欲使p为指向m的指针变量,则下列赋值正确的是()。A、&m=8B、*p=8C、*p=1010D、p=&m标准答案:8知识点解析:指针变量是通过指向变量地址来指定变量值的。这里只要取m的地址赋给p,即可实现使p为指向m的指针变量。30、在下列语句中,其含义为“q为一个指针的函数,该指针指向整型数据”的定义语句是()。A、int**q;B、int(*q)();C、int*q;D、int*q();标准答案:2知识点解析:本题考查的是指针函数。指针函数定义的基本格式为:类型说明符(*函数名)()。其中,类型说明符表示返回的指针值指向的数据类型。31、下列二维数组初始化语句中,不正确的是()。A、intb[][2]={1,2,3,4,5,6,7};B、intb[3][5]={0,0,0};C、intb[][4]={{1,2},{3,4,5},{6}};D、intb[3][2]={(1,2),(3,4),(5,6)};标准答案:8知识点解析:在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0;C语言规定,对于二维数组,只可以省略第1个方括号中的常量表达式,而不能省略第2个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。在选项D)赋值表达式中对每一维的元素赋初值应用(),而不是()。32、下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){inta[10]={1,2;3,4,5,6,7,8,9,10},i;sort(&a[1],7);for(i=0;i<10;i++)printf("%d,",a[i]);}程序运行后的输出结果是()。A、1,2,3,4,5,6,7,8,9,10,B、10,9,8,7,6,5,4,3,2,1,C、1,8,7,6,5,4,3,2,9,10,D、1,2,10,9,8,7,6,5,4,3,标准答案:4知识点解析:本程序中的函数sort(inta[],intn)实现的功能是将数组a中的前n个数进行从大到小排序。sort(&a[1],7)是将数组中从a[1]到a[7]这7个数进行从大到小排序,其他数不变。33、下列判断正确的是()。A、chara="ABCD";等价于char*a;*a="ABCD";B、charstr[10]={"ABCD"};等价于charstr[10];str[]={"ABCD"};C、char*s="ABCD";等价于chars;*s="ABCD";D、charc[5]="ABCD",d[5]="ABCD";等价于charc[5]=d[5]="ABCD";标准答案:8知识点解析:a="ABCD"书写错误,因为“;”左边不能出现常量;数组名s是代表s数组首地址的地址常量,而不是变量;字符串只有在定义时维数可以省略。34、下列语句中,在字符串s1和s2相等时显示“theyareEqual”的是()。A、if(*s1==*s2)puts("theyareEqual");B、if(!strcmp(s1,s2))puts("theyareEqual");C、if(s1==s2)Puts("theyareEqual");D、if(strcmp(s1,s2))puts("theyareEqual");标准答案:2知识点解析:字符串比较不能用两个等于号(==)来进行比较,应使用函数strcmp(s1,s2)来比较。函数strcmp(s1,s2)的功能是:当字符串s1和s2相等时,返回值为0。因此,当表达式!strcmp(s1,s2)=1时,条件成立,执行后面的语句,输出theyareEqual。35、下列叙述中错误的是()。A、在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值B、在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容C、在C语言中,外部变量的隐含类型是自动存储类别D、在C语言中,函数形参的存储类型是自动(auto)类型的变量标准答案:4知识点解析:外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。36、下列程序的输出结果是()。#include<stdio.h>#defineF(x)2.84+x#definew(y)printf("%d",(int)(y))#defineP(y)w(y)putchar(’\n’)main(){intx=2;P(F(5)*x);}A、12B、13C、14D、16标准答案:1知识点解析:本题考查带参数的宏的定义及相关运算。P(F(5)*x)=P(2.84+5*2)=P(12.84),调用w(12.84),输出(int)(12.84)=12。37、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st;A、st.iB、*p.iC、(*p).iD、p->i标准答案:2知识点解析:本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访问,即st.i,也可以用等价的指针形式即(*p).i和p->i。38、下列说法错误的是()。A、下列结构体定义时,占据了5个字节的空间structstudent{intnum;intage;charsex;}B、结构体的成员名可以与程序中的变量名相同C、对结构体中的成员可以单独使用,它的作用相当于普通变量D、结构体可以嵌套定义标准答案:1知识点解析:本题主要考查定义结构体的几个特点:①结构的定义明确了结构的组成形式,定义了一种C语言中没有而用户需要的新的数据类型。与其他的数据类型不同,在程序编译的时候结构的定义并不会使系统为该结构分配内存空间,只有在说明结构变量时才分配内存空间;②结构体的成员名可以与程序中的变量名相同:③结构体中的成员可以单独使用,它的作用相当于普通变量;④结构体可以嵌套定义。39、若x=10010111,则表达式(3+(int)(x))&(~3)的运算结果是()。A、10011000B、10001100C、10101000D、10110000标准答案:1知识点解析:本题主要考查运算表达式的运算。3+(int)(x)的结果是10011010,~3的结果是11111100,二者逻辑与得10011000。40、若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以哪种方式打开文件()。A、wbB、wb+C、rb+D、rb标准答案:2知识点解析:本题考查文件使用方式标识符。方式“wb”为输出打开一个二进制文件;方式“wb+”为读写建立一个新的二进制文件;方式“rb+”为读写打开一个二进制文件;方式“rb”为输入打开一个二进制文件。四、公共基础填空题(本题共5题,每题1.0分,共5分。)41、软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于______中的一个阶段。标准答案:软件开发知识点解析:软件生命周期分为3个时期共8个阶段:软件定义期(问题定义、可行性研究和需求分析)、软件开发期(系统设计、详细设计、编码和测试)、软件维护期(即运行维护阶段)。42、结构化分析方法是面向______进行分析的方法。标准答案:数据流知识点解析:结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。43、常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。标准答案:模块知识点解析:矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。44、在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块,其中______的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。标准答案:驱动模块知识点解析:由于模块通常不是独立的程序,自己不能运行,而需要其他模块调用或驱动,同时被测试模块还要去调用其他模块,前者称为驱动模块,后者称为承接模块。其中驱动模块的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果;承接模块的作用是代替被测模块,调用其他模块。45、诊断和改正程序中错误的工作通常称为______。标准答案:调试知识点解析:程序设计的任务是诊断和改正程序中的错误。程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性、原因和位置;其二是对程序进行修改,排除这个错误。五、填空题(本题共10题,每题1.0分,共10分。)46、表达式pow(2.8,sqrt(float(x)))值的数据类型为______型。标准答案:float知识点解析:在此表达式中x是float类型的变量,经过开方所得到的结果仍是float类型,再和2.8进行运算时,应该先将2.8转换成float类型再运算,最后结果仍是float型。47、下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。标准答案:(y%4==0)&&(y%100!=0)‖(y%400==0)知识点解析:考查逻辑表达。年号能被4整除(y%4==0)但不能被100整除(y%1001=0),两者是与的关系,年号能被400整除即y%400==0,与前两项是或的关系。48、下列程序的运行结果是______。#include<stdio.h>main(){inta=10,b=3;printf("%d,",a%b);printf("%d,",(a-b,a+b));printf("%d\n",a-b?a-b:a+b);}标准答案:1,13,7知识点解析:本题考查3个知识点:①余数的计算,题中的a=10,b=3,a%b=1;②(表达式1,表达式2)形式的结果为最后一个表达式的值,题中的a=10,b=3,(a-b,a+b)=a+b=13;③条件运算符的使用,题中的a-b?a-b:a+b,判断语句a-b=7不为0,所以执行a-b,结果为7。49、要求使下列程序输出5个整数,请填空。for(i=0;i<=______;printf("%d\n",i+=2));标准答案:8知识点解析:本题考查基本的for循环条件,i+=2表示i每次递增2,从0开始,输出5个整数则需要的条件是i<=8。50、下列的for语句的循环次数为______。for(x=1,y=0;(y!=19)&&(x<7);x++);标准答案:6知识点解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。51、函数调用语句:“fgets(buf,n,fp);”从fp指向的文件中读入,n个字符放到buf字符数组中,函数返回值为______。标准答案:buf的首地址知识点解析:考查fgets()函数的功能,fgets()函数用来从文件中读入字符串。调用格式为:fgets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fgets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。52、若有下列定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,则值为3的表达式为:______。标准答案:p+=2,*(p++)知识点解析:由题可知a[2]=3,因此只要使指针p指向a[3],然后再引用指针的值就可以了。53、若有说明chars1[]="Thatgirl",s2[]="isbeautiful";则使用函数strcmp(s1,s2)g,结果是______。标准答案:-1知识点解析:strcmp(s1,s2)函数的作用是:对字符数组s2和字符数组s1进行比较。如果s1<s2,则返回负数;如果s1==s2,则返回0;如果s1>s2,则返回正数。54、在宏定义#definePI3.14159中,用宏名PI代替一个______。标准答案:字符串知识点解析:本题考查字符替换格式:#define标识符字符串。55、下列程序的输出结果是______。#include<stdio.h>sb(ints[].intb){staticintn=3;b=s[n];n--;return(b);}main(){ints[]={1,5,6,8);inti,x=0;for(i=0;i<4;i++){x=sb(s,x);printf(:%d",x);}printf("\n");}标准答案:8651知识点解析:主程序中,第一次循环时,i=0,调用sb(s,x)子函数,此时n=3,x=s[n]=s[3]=8,然后将n减1变为2;第二次循环时,i=1,调用sb(s,x)子函数,因为将n定义为了静态变量,所以此时n=2,返回x=s[n]=s[2]=6;第三次循环时,i=2,调用sb(s,x)子函数,此时n=1,返回x=s[n]=s[1]=5;第四次循环时,i=3,调用sb(s,x)子函数,此时n=0,返回x=s[n]=s[0]=1。此程序实际上是将数组s逆序输出。国家二级(C语言)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动______个元素。A、n-iB、n-i+1C、n-i-1D、i标准答案:1知识点解析:暂无解析2、从顺序存储的循环队列中删除一个元素时,是______。A、先移动队首指针,后取出元素B、先取出元素,后移动队首指针C、先移动队尾指针,后取出元素D、先取出元素,后移动队尾指针标准答案:1知识点解析:暂无解析3、假定在一棵二叉树中,双分支结点数为15个,单分支结点数为32个,则叶结点数为______个。A、15B、16C、17D、47标准答案:2知识点解析:暂无解析4、在以下术语中,与数据的逻辑结构无关的是______。A、线性结构B、链式结构C、树型结构D、网状结构标准答案:2知识点解析:暂无解析5、软件工程的结构化生命周期方法,通常是将软件生命周期划分为计划、开发和运行3个时期,下列选项中的______工作应属于软件开发期的内容。①需求分析②可行性研究③总体设计④问题定义A、①和②B、①和③C、①、②和④D、全部标准答案:2知识点解析:暂无解析6、数据管理技术随着计算机技术的发展而发展。数据库阶段具有许多特点,但下面列出的特点中,______不是数据库阶段的特点。A、数据结构化B、数据面向应用程序C、数据共享性高D、数据具有较高的独立性标准答案:2知识点解析:暂无解析7、下列描述中,错误的一条是______。A、已知a=3、b=2、c=l,则表达式(a>b)气的值为1B、C语言的表达式能构成语句C、表达式(x1=3*5,x1*4),x1+5的值为20D、表达式x1=(b=4)+(c=6)的值为6标准答案:8知识点解析:暂无解析8、执行下列语句后的输出结果为______。enum{x1=3,b=4,C,d,e}data;printf("%d",data=d);A、6B、7C、8D、9标准答案:1知识点解析:暂无解析9、以下叙述中,正确的是______。A、输入项可以是一个实型常量,例如:scanf("%f",3.5);B、只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf("a=%d,b=%d");C、当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf("%4.2f",&d);D、当输入数据时,必须指明变量地址,例如:scanf("%f",&f);标准答案:8知识点解析:暂无解析10、设x、y、t均为int型变量,执行以下语句后,y的值为______。x=y=3;t=++x||++y;A、不定值B、4C、3D、1标准答案:4知识点解析:暂无解析二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、下列程序的输出结果是______。#include<stdio.h>main(){printf("%d\n",NULL);}A、不确定(因变量无定义)B、0C、-1D、1标准答案:2知识点解析:暂无解析12、下列叙述中,正确的一条是______。A、C语言以函数为程序的基本单位,便于实现程序的模块化B、C程序的执行总是从程序的第一句开始C、C程序中可以不使用函数D、C语言提供了一个输入语句scanf和一个输出语句printf标准答案:1知识点解析:暂无解析13、若有以下定义和语句,则输出结果是(口代表空格)______。chars[10];s="abcd";printf("%s\n",s);A、输出abcdB、输出aC、输出abcd口口口口口D、编译不通过标准答案:8知识点解析:暂无解析14、设x、y\z和k都是int型变量,执行表达式x=(y=4,z=16,k=32)后,x的值为______。A、4B、16C、32D、52标准答案:4知识点解析:暂无解析15、下列变量定义中,合法的是______。A、short_a=1-.le-1;B、doubleb=1+5e2.5;C、longdo=0xfdaL;D、float2_and=l-e-3;标准答案:1知识点解析:暂无解析16、用scanf("%d,%d",&a,&b)输入数据时,下面输入法中,正确的是______。A、123,4B、1234C、123;4D、123:4标准答案:1知识点解析:暂无解析17、下列程序的输出结果是______。main(){inti;for(i=0;i<2;i++)add();}add(){intx=0;staticinty=0;printf("%d,%d\n",x,y);x++;y=y+2;}A、0,00,0B、0,00,2C、0,01,0D、0,01,2标准答案:2知识点解析:暂无解析18、下列数据中,不能存放在动态存储区中的是______。A、函数形参变量B、局部自动变量C、函数调用时的现场保护和返回地址D、局部静态变量标准答案:8知识点解析:暂无解析19、下列程序的输出结果是______。main(){inta=12,b=12;printf("%d%d\n",--a,++b);A、1010B、1212C、1110D、1113标准答案:8知识点解析:暂无解析20、语句“printf("%d",(a=2)&&(b=-2);”的输出结果是______。A、无输出B、结果不确定C、-1D、1标准答案:8知识点解析:暂无解析三、选择题(2分)(本题共10题,每题1.0分,共10分。)21、以下程序的输出结果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%ld\n",fun(3));}A、1B、2C、3D、4标准答案:1知识点解析:暂无解析22、若输入1.5、2.5,则以下程序的运行结果为______。main(){floata,b;intc;scanf("%f,%f,",&a,&b);c=max(a,b);printf("%d",c);}max(x,y)floatx,y;{floatz;z=x>y?x:y;return(z);}A、1.5B、2.5C、2D、3标准答案:4知识点解析:暂无解析23、程序运行结果为______。#defineR3.0#definePI3.1415926#defineL2*PI*R#defineSPI*R*Rmain(){printf("L=%fS=%f\n",L,S);}A、L=18.849556S=28.274333B、18.849556=18.84955628.274333=28.274333C、L=18.84955628.274333=28.274333D、18.849556=18.849556S=28.274333标准答案:1知识点解析:暂无解析24、如果要限制一个变量只能为本文件所使用,必须通过______来实现。A、外部变量说明B、静态内部变量说明C、静态外部变量说明D、局部变量说明标准答案:4知识点解析:暂无解析25、在下列叙述中,正确的一条是______。A、如果形参发生改变,不会改变主调函数的实参值B、在C语言中,函数可以递归调用或递归定义C、数组名作函数参数时,也采用“值传送”方式D、预处理时,宏名用字符串代替,并检查语法正确与否标准答案:1知识点解析:暂无解析26、以下程序的输出结果是______。#include<stdio.h>structstu{intnum;charname[10];intage;};voidfun(structstu*p){printf("%s\n",(*p).name);}main(){structstustudents[3]={{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}};fun(students+2);}A、ZhangB、ZhaoC、WangD、18标准答案:2知识点解析:暂无解析27、以下程序的输出结果是______。main(){chara[]="programming",b[]="language";char*p1,*p2;inti;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}A、gmB、rgC、orD、ga标准答案:8知识点解析:暂无解析28、以下C程序的运行结果为______。main(){inti=1,sum=0;loop:if(i<=10){sum+=i;i++;gotoloop;}printf("sum=%d\n",sum);}A、sum=10B、sum=55C、sum=100D、sum=88标准答案:2知识点解析:暂无解析29、以下程序的运行结果为______。main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf("%d%d",f1,f2);f1+=f2;f2+=f1;}}A、1123581321B、1122551010C、1258981321D、0112451521标准答案:1知识点解析:暂无解析30、在下列叙述中,正确的一条是______。A、对while循环、do…while循环和for循环,可以用continue语句跳出循环B、表达式1+2<<3和sizeof(3.8)的结果分别为24和8C、函数fputc(c,stdout)与putchax(c)的结果相同D、在有参函数中,定义函数中指定的形参变量在整个程序一开始执行时便分配内存单元标准答案:4知识点解析:暂无解析四、公共基础填空题(本题共5题,每题1.0分,共5分。)31、十六进制数100转换成十进制数为【】。标准答案:256知识点解析:暂无解析32、对二叉排序树进行查找的方法是:用待查的值与根结点的值相比,若比根小,则继续在【】子树中找。标准答案:左知识点解析:对二叉排序树进行查找,若待查的值与根结点的值相比,若比根小,则继续在左子树中找;若比根大,则在右子树中找。33、自盒测试方法重视【】的度量。标准答案:测试覆盖率知识点解析:白盒测试又称为结构测试。白盒测试作为对结构的测试,要求对被测程序的各种结构特性进行测试,这种情况被称为覆盖,故白盒测试又称为“基于覆盖的测试”。白盒测试方法重视测试覆盖率的度量,力求提高覆盖率,从而找出被测程序的错误。34、下面程序的输出是【】。main(){inta[]={2,4,6},*ptr=&a[0],x=8,y,z;for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;printf("%d\n",z);}标准答案:6知识点解析:本题变量z的值应为最后一次给它赋的值,且最后一次for循环使prt指向a[2]35、在双链表中每个结点有两个指针域:一个指向【】,另一个指向【】。标准答案:前趋结点后继结点知识点解析:暂无解析五、填空题(本题共14题,每题1.0分,共14分。)36、表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。标准答案:x>5||x<-5或x<-5||x>5知识点解析:要使整数x的绝对值大于5,则x大于5或x小于-5,用C语言表示即为:x>5||-5或者x<-5||x>5。故本题答案为:x>5||x<-5或者x<-5||x>5。37、以下程序的输出结果是【】。main(){unsignedshorta=65536;intb;printfC%d\n",b=a);}标准答案:0知识点解析:对于一个unsignedshort来说,它能取的最大值是65535。这里给a赋值65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋给它(全零)。所以a的值实际为0。38、若有定义inta=10,b=9,c=8;,接着顺序执行下列语句,变量b中的值是【】。c=(a-=(b-5));c=(a%11)+(b=3);标准答案:3知识点解析:这里:b-5=4,a-=4之后a的值为6,并把它赋给c。此时b的值并未被改变。在第2个表达式中,也只有赋值表达式b=3改变了b的值。所以两行语句抽行完毕,b的值应该为3。39、以下程序运行后的输出结果是【】。main(){intp=30;printf("%d\n",(p/3>0?p/10:p%3));}标准答案:3知识点解析:条件表达式的一般形式为:表达式1?表达式2:表达式3条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。30/3=10>0,所以执行p/10,结果为3。40、函数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));}标准答案:1.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。41、函数pi的功能是根据以下公式近似求得的:pi*pi/6=1+1/(2*2)+1/(3.3)+...+1/(n*n)请在下面的函数中天空,完成求pi的功能。#include<math.h>doublepi(longn){doubles=0.0,longi;for(i=1;i<<=n;i++)s=s+【】;return(sqrt(6*s));}标准答案:1.0/i/i或1.0/(i*i)知识点解析:由题面中提供的计算pi的公式可知:在第i项其值为1/(i*i),考虑到运算结果为浮点数,故必须要将1转化为浮点数或采用1.0/(i*i)的形式。故本题应填1.0/(i*i)或其等效形式。42、若输入字符串:(图片),则以下while循环体将执行【】次。while((ch=getchar())==’e’)printf("*");标准答案:0知识点解析:函数getchar()是从键盘得到用户输入的一个字符。用户输入的第1个字符是a,不管后面输入的是什么ch的值都是’a’,因此条件(ch=getchar())==’e’为假,这个循环不会被执行。43、以下函数用来求出两整数之和,并通过形参将结果传回,请填空。voidfunc(intx,inty,【】z){*z=x+y;}标准答案:int*知识点解析:从题中代码可知:z应该是一个整型指针,因此应填int*。44、若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是【】。intw[10]={23,54,10,33,47,98,72,80,61},*p=w;标准答案:p[5]或*(p+5)知识点解析:98是数组w的第5个元素(最开始的为第0个),而通过*p=w已经将p指向了数组w,要想不移动指针p而引用98,可以有以下两种写法:p[5]、*(p+5)。45、设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】。要求形参名为b。main(){doubles[10][22];intn;……fun(s);……}标准答案:voidfun(doubleb[10][22])知识点解析:本题答案:voidfun(doubleb[10][22])。46、有以下程序:intf(intn){if(n==1)retum1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是【】。标准答案:3知识点解析:i=1时,f(1)=1,j=j+f(1)=0+1=1;i=2时,f2=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此时循环结束,程序运行后的输出结果是3。47、以下程序的输出结果是【】。voidfun(){staticinta=0;a+=2;printf("%d",a);}main(){intcc;for(cc=1;cc<4;cc++)fun();printf(""\n");}标准答案:246知识点解析:循环for(cc=1;cc<4;cc++)被执行了3次。在函数fun中,由于a是static型变量,所以函数第1次调用后,a=2;第2次调用后,a=4;第3次调用后,a=6。48、以下程序的输出结果是【】。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=5,b=2,c=3,d=3,t;t=MAX(a+b,e+d)*10;printf("%d\n",t);}标准答案:7知识点解析:在C语言中,宏定义是直接替换的,所以在对表达式MAX(a+b,c+d)*l0进行替换后,表达式变为(a+b)>(c+d)?(a+b):(c+d)*10。在这个条件表达式中,(a+b)>(c+d)为真,所以用(a+b)的值作为整个表达式的值(否则用(c+9d)*10)的值作为整个表达式的值),而(a+b)的值为7。所以整个表达式的值为7。49、实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中(相当于copy命令),假定文件在当前目录下。请补全程序。#include<stdio.h>voidmain(intargc,char*argv[]){FILE*f1,*f2;if(argc<【】){printf("parametererror!\n");exit(0);}f1=fopen(argv[1],"r");f2=fopen(argv[2],"w");while(【】)fputc(fgetc(f1),f2);fclose(f1);fclose(f2);}标准答案:3!feof(f1)知识点解析:要实现文件复制,需要指定源文件及目的文件,因此在命令行下执行程序时至少要指定两个参数,加上程序名本身,故argc的值至少为3,因此第一空应填3。while循环中语句fputc(fgetc(f1),f2);的目的是将f1中的字符依次读出并写入到f2对应的文件中去,直至文件f1结束为止,因此第二空为!feof(f1)。国家二级(C语言)笔试模拟试卷第3套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、在深度为5的满二叉树中,叶子结点的个数为()。A、32B、31C、16D、15标准答案:4知识点解析:所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。这就是说,在满二叉树中,每层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。由此可知,本题中叶子结点的个数为25-1=16。2、若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。A、bdgcefhaB、gdbecfhaC、bdgaechfD、gdbehfca标准答案:8知识点解析:前序遍历的第一个结点a为树的根结点;中序遍历中a左边的结点为a的左子树,a右边的结点为a的右子树;再分别对a的左右子树进行上述两步处理,直到每个结点都找到正确的位置。3、一些重要的程序语言(如Pascal语言)允许过程的递归调用,而实现递归调用中的存储分配通常用()。A、栈B、堆C、数组D、链表标准答案:1知识点解析:一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些调用点。4、软件工程的理论和技术性研究的内容主要包括软件开发技术和()。A、消除软件危机B、软件工程管C、程序设计自动化D、实现软件可重用标准答案:2知识点解析:软件工程的目标是:在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括软件开发技术和软件工程管理。5、开发软件时对提高开发人员工作效率至关重要的是()。A、操作系统的资源管理功能B、先进的软件开发工具和环境C、程序人员的数量D、计算机的并行处理能力标准答案:2知识点解析:软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境,工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。6、在软件测试设计中,软件测试的主要目的是()。A、实验性运行软件B、证明软件正确C、找出软件中全部错误D、为发现软件错误而执行程序标准答案:8知识点解析:使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。7、数据处理的最小单位是()。A、数据B、数据元素C、数据项D、数据结构标准答案:4知识点解析:数据处理的最小单位是数据项。由若干数据项组成数据元素,而数据是指能够被计算机识别、存储和加工处理的信息载体,数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。8、索引属于()。A、模式B、内模式C、外模式D、概念模式标准答案:2知识点解析:内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径。9、下述关于数据库系统的叙述中正确的是()。A、数据库系统减少了数据冗余B、数据库系统避免了一切冗余C、数据库系统中数据的一致性是指数据类型一致D、数据库系统比文件系统能管理更多的数据标准答案:1知识点解析:数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。10、数据库系统的核心是()。A、数据库B、数据库管理系统C、模拟模型D、软件工程标准答案:2知识点解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操作、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、C语言规定,在一个源程序中,main函数的位置()。A、必须在最开始B、必须在系统调用的库函数的后面C、可以任意D、必须在最后标准答案:4知识点解析:C程序总是从main函数开始执行,但main函数在程序中的位置可以是任意的。12、下列数据中,不合法的C语言实型数据的是()。A、0.123B、123e3C、2.1e3.5D、789.0标准答案:4知识点解析:在C语言中,实数有两种表示形式。即十进制数形式和指数形式,在指数形式中,字母e的前面必须有数字,且e的后面必须是整数。e3,2.1e3.5,e3,e等都是不合法的指数形式,而123e3或123E3都代表123乘以10的3次方。13、下面四个选项中,均是不合法的用户标识符的选项是()。A、AP_0doB、floatla0_AC、b-agotointD、_123tempint标准答案:4知识点解析:C语言规定的标识符只能由字母、数字和下划线三种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a中的"-"不是组成标识符的三种字符之一,所以,均是不合法用户标识符的选项是C)。14、设变量a是int型,f是float型,i是double型,则表达式10+’a’+i*f值的数据类型为()。A、intB、floatC、doubleD、不确定标准答案:4知识点解析:根据混合运算规则,如果有一个数据是double型,则其他数据类型先转化为double型,运算的结果最终也是double型。15、能正确表示逻辑关系“a)10或a≤0”的C语言表达式是()。A、a>=10ora<=0B、a>=0|a<=10C、a>=10&&a<=0D、a>=10||a<=0标准答案:8知识点解析:本题考查C语言的逻辑表达式及逻辑或(“||”)运算符的用法。“||”表示或的意思,“|”是按位或的意思,“&&”表示且的意思,C语言中没有“or”这种运算符。16、设以下变量均为int类型,表达式的值不为7的是()。A、(x=y=6,x+y,x+1)B、(x=y=6,x+y,y+1)C、(x=6,x+1,y=6,x+y)D、(y=6,y+1,x=y,x+1)标准答案:4知识点解析:本题考查逗号表达式的用法。C语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。逗号表达式的一般形式为:表达式1,表达式2,表达式3,……,表达式n,其值为表达式n的值。17、若有说明:int*p,m=5,n;以下正确的程序段是()。A、p=&n;scanf("%d",&p);B、p=&n;scanf("%d",*p)C、scanf("%d",&n);*p=6;D、p=&n;*p=m;标准答案:8知识点解析:“&”是求址运算符,“*”是指针变量说明符。选项A),B)应改为scanf("%d",p);选项C)中指针变量p未指向一确定的内存单元,不能为其赋值,这样做很危险,建议不使用。18、以下程序段的输出结果是()。inta=1234;printf("%2d\n",a);A、12B、34C、1234D、提示出错,无结果标准答案:4知识点解析:在C语言中,对于不同类型的数据用不同的格式字符输出,其中,“%d”是按整型数据的实际长度输出,在“%md”中,m为指定的输出字段的宽度,如果实际数据的位数小于m,则左端补以空格;若大于m,则按实际位数输出。19、若变量a是int类型,并执行了语句:a=’A’+1.6;则正确的叙述是()。A、a的值是字符’C’B、a的值是浮点型C、不允许字符型和浮点型相加D、a的值是字符’A’的ASCII码值加上1标准答案:8知识点解析:字符“A”要转换成相应的ASCII码值,由于运算结果要赋值给int型变量,所以对1.6进行取整运算,最后a的值应是66。20、有如下程序:#include<stdio.h>main(){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;elsec++;printf("%d\n",c);}该程序的输出结果是A、0B、1C、2D、3标准答案:4知识点解析:if语句嵌套使用时,else总是与它上面最近的if配对。因此,本题中先判断(a<b),因为表达式的值为0,故不执行下面的if语句,直接跳到printf行,c值没有改变。三、选择题(2分)(本题共30题,每题1.0分,共30分。)21、以下选项中,与k=n++完全等价的表达式是A、k=n,n=n+1B、n=n+l,k=nC、k=++nD、k+=n+1标准答案:1知识点解析:在本题中k=n++,为后缀运算。根据其运算规则,首先n先加一,但n++表达式的值依然n原来的值,即k的值没有改变。选项A中先给k赋值为n,然后n再加1,k值没有变化,所以这个表达式和本题中表达式等价;选项B中先n加1,然后将n加1后的值赋给k,k变化了比原来的值大1,所以这个表达式和本题中表达式不等价;选项C中先计算表达式左边的表达式++n的值,执行++n后,左边的表达式的值为n的值加1,然后将n+1后的值赋给k,所以这个表达式和本题中的表达式不等价;选项D中表达式展开为k=k/(n+1),k的值发生了变化,所以这个表达式和本题中的表达式不等价.所以4个选项中A正确。22、要求以下程序的功能是计算main(){intn;floats;S=1.0;for(n=10;n>1;n--)s=S+1/n;printf("%6.4f\n",S);}程序运行后输出结果错误,导致错误结果的程序行是A、s=1.0;B、for(n=10;n>1;n--)C、s=s+1/n;D、prind("%6.4f\n",s);标准答案:4知识点解析:程序中由于n为整型,所以1/n的结果始终为0,故程序最后输出的结果为0,其结果错误,原因为在表达式1/n中1和n均为整型,所以应该将1改为1.0,这样表达式1.0/n的值不为0,为该数学表达式的值,因此我们可以知道导致程序运行后输出结果错误的行为s=s+1/n;,所以,4个选项中选项C符合题意。23、若有语句:char*line[5],以下叙述中正确的是A、定义line是一个数组,每个数组元素是一个基类型为char的指针变量B、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C、定义line是一个指针数组,语句中的*号称为间址运算符D、定义line是一个指向字符型函数的指针标准答案:1知识点解析:理解复杂定义要掌握两点:一、右结合原则.本题中的定义char*line[5];等价于char*(line[5]);;二、自外向内分解成typedef语句。char*(line[5]);等价于typedefchar*A;Aline[5];其中A被typedef定义成字符指针的别名,然后line被定义成A的一维数组,即字符指针的一维数组。再来看看行指针的定义char(*line)[5];它应该被分解成typedefcharB[5];B*line;其中B被定义成包含5个元素的一维字符数组,然后line被定义成指向B的指针,即指向包含5个元素的一维字符数组的指针。所以两者切不可混淆了,后者的括号不能省略。故本题应该选择A。24、有以下程序main(){chara,b,C,*d;a=’\’;b=\\xbc’;c=’\0xab’;d="\0127";princf("%c%c%c%c\n",a,b,c,*D);}编译时出现错误,以下叙述中正确的是A、程序中只有a=’\’;语句不正确B、b=’\xbc’;语句不正确C、d="\0127":语句不正确D、a=’\’;和c=’\0xab’;语句都不正确标准答案:8知识点解析:给字符变量赋值只能赋一个字符,包括转义字符,语句“a=’\’”是错误的,因为“\”是转义字符,应该用“\\”来表示,语句“B=’\xbc’;”是正确的,它是将一个用十六进制表示的转义字符赋给一个字符型变量,故选项B不为所选;语句“c=\0xab;”是正确的,反斜线后的十六进制只可由小写x开头,不能用Ox。语句“d="\0127";”是正确的,可以给字符型指针变量赋一个字符串,其作用是让该指针变量指向该字符串,故选项C不正确。所以,D选项为所选。25、有以下程序intfl(intx.ihty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:X;}main(){inta=4,b=3.c=5,d,e,f;d=fl{a,B);d=f1(d,C):e=f2{a,B);e=f2(e.C);f=a+b+c-d-e;printf("%d,%d,%d\n",d,f,e);}执行后输出的结果是A、3,4,5B、13,4C、5,4,3D、3,5,4标准答案:4知识点解析:本题考核的知识点是函数的定义与函数调用。函数f1()的作用是返回形参x和y的较大值,函数f2()的作用是返回形参x和y的较小值,在main()函数中通过调用两次f1()函数,求得a、b、c的最大值并存放在变量d中,通过调用两次f2()函数,求得a、b、c的最小值并存放到变量e中.由程序可知d值为5,f的值为4,e的值为3,因此最后输出的d,f、e的值为5、4,3。所以,C选项为所选。26、有以下程序:voidfun(char*a,char*B);{a=b;(*A)++;}main(){charc1=’A’,c2=’a’,*p1,*p2;p1=&cl;p2=&c2:fun(p1,p2);printf("%c%c\n",c1,c2);}程序运行后的输出结果是A、AbB、aaC、AaD、Bb标准答案:1知识点解析:经过分析得知fun()函数的功能:将形参9指向形参b所指的存储空间,然后使形参a指向变量的值加1。在主函数中定义了字符型指针变量p1和p2,并让它们分另别指向c1和c2.然后将p1、p2作为实参传递给形参a、b.在fun()函数中,首先让指针变量p1向p2,然后p1指向的存储空间的值加1,即让变量c2加1为“b”,而c1的值没有被改变,仍然是“A”。所以,4个选项中选项A符合题意。27、若有以下说明和语句intc[4][5],(*p)[5];p=c;能够正确引用c数组元素的是A、p+1B、*(p+3)C、*(p+1)+3D、*(P[0]+2)标准答案:8知识点解析:本题中定义了一个二维数组c和一个指针数组p并初始化让它指向c,显然此时p中的各元素为地址,选项A中p+1,此时其中的1代表的长度是整个;维数组c的长度,故p+1将让p指向c数组后面的元素,故不能引用c数组中的成员,故选项A错误;同理选项B和选项C都不正确,选项D中p[0]指的是指针数组中的第一个元素的地址即c的首地址,此时的1的长度代表的是数组c中一行的长度,故p[0]+2代表的是第三行的首地址,而*(p[0]+2)将代表第三行的第一个元素的地址,所以,4个选项中选项D符合题意。28、有以下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是A、5B、6C、8D、9标准答案:8知识点解析:C语言中规定:一个数组名代表它的起始地址.本题中,定义了一个长度为10的数组a并赋初值,数组名a就是数组的起始地址,由于数组下标是从。开始,因此a[0]地址也是a的值,a[1]的地址可以用a+1表示,也就是说a+1指向数组a中下标为1的元素,同样a+1是a[i]的地址,*p=&a[3]表明指针变量p指向元素a[3],即p指向数组a的第4个元素4,p[5]的值应为数组a中的第9个元素的值即a[8]的值,即p[5]=9,所以b=9。所以,4个选项中选项D符合题意。29、有以下程序main(){inti=1,j=2,k=3;if(i++==l&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k);程序运行后的输出结果是A、123B、234C、223D、233标准答案:8知识点解析:在计算由&&或‖组成的逻辑表达式时一定要注意“短路”现象:&&是逻辑与,要两边的运算分量同时为真的时候表达式的值才为真,否则为假,若&&左边的运算分量为假的时候,无论&&右边的运算分量如何,整个&&表达式的结果都为假,因此C语言会忽略&&右边的表达式;‖(逻辑或)也有同样现象,当‖左边为真时将忽略右边的表达式。本题的关键点在于逻辑表达式i++==1&&(++j)==3‖k++==3的计算。因
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年法理学试题法律部门的划分标准考核题及解析
- 2026年安阳职业技术学院高职单招职业适应性考试备考题库带答案解析
- 2026年用电检查员招聘考试试题含答案
- 2026年新版FMEA常见考点模拟测试题库含答案
- 2026年广东松山职业技术学院单招职业技能笔试参考题库带答案解析
- 2026年消防安全管理员考试题含答案
- 2026年贵阳职业技术学院单招职业技能笔试备考题库带答案解析
- 2026年水务集团财务管理规范专项练习题及解析
- 2026年乡村医疗招聘面试职业道德试题及答案
- 2026年渤海理工职业学院单招职业技能笔试参考题库带答案解析
- T/CCMA 0114-2021履带式升降工作平台
- DB32T 5124.1-2025 临床护理技术规范 第1部分:成人危重症患者目标温度管理
- 食管癌的护理查房知识课件
- 高三日语二轮复习阅读专题课件
- 《双重差分法与调节效应模型:解析绿色债券价值影响》12000字(论文)
- 2025届江苏省南通市高三下学期3月二模化学试题(含答案)
- 毕业论文答辩的技巧有哪些
- 粉色小清新小红帽英语情景剧
- 酒店安全风险分级管控和隐患排查双重预防
- 2018年风电行业事故锦集
- 《重点新材料首批次应用示范指导目录(2024年版)》
评论
0/150
提交评论