国家二级C语言机试(选择题)模拟试卷1(共285题)_第1页
国家二级C语言机试(选择题)模拟试卷1(共285题)_第2页
国家二级C语言机试(选择题)模拟试卷1(共285题)_第3页
国家二级C语言机试(选择题)模拟试卷1(共285题)_第4页
国家二级C语言机试(选择题)模拟试卷1(共285题)_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷1(共9套)(共285题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共40题,每题1.0分,共40分。)1、下列选项中,不属于数据库管理的是()。A、数据库的建立B、数据库的调整C、数据库的监控D、数据库的校对标准答案:D知识点解析:数据库管理一般包括:数据库的建立、数据库的调整、数据库的重组、数据库的安全性控制与完整性控制、数据库的故障恢复和数据库的监控。2、以下叙述中正确的是()。A、当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失B、打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C、在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据D、C语言中的文件是流式文件,因此只能顺序存取数据标准答案:A知识点解析:A选项正确,C语言通过文件缓冲区对文件进行操作,如果操作完成后不进行关闭文件,可能导致文件缓冲区中的数据丢失。B选项错误,打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等;C选项错误,在一个程序中当对文件进行了写操作后,用fseek()函数进行重新定位就能够读到第1个数据;D选项错误,C语言中的文件可以进行随机读写。3、以下关于C语言数据类型使用的叙述中错误的是A、若要保存带有多位小数的数据,可使用双精度类型B、若要处理如’’人员信息’’等含有不同类型的相关数据,应自定义结构体类型C、若只处理’’真’’和’’假’’两种逻辑值,应使用逻辑类型D、整数类型表示的自然数是准确无误差的标准答案:C知识点解析:在C语言中没有定义逻辑类型,而是用0代表假,用非零代表真。4、以下选项中,能用作用户标识符的是A、_0_B、8_8C、voidD、unsifined标准答案:A知识点解析:在C语言中,用户的标识符只能由字母或下划线开始。一般强调文见其义的命名方法。但是C语言中的保留字不能用作用户的标识符。而选项C和D)全部为保留字,选项B中以数字开头,这些都不正确。5、结构化程序的三种基本控制结构是()。A、顺序、选择和调用B、过程、子程序和分程序C、顺序、选择和重复(循环)D、调用、返回和转移标准答案:C知识点解析:1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。6、阅读以下程序:#include<stdio.h>main(){inti;scanf("%dt",&i);if(i--<5)printf("%d",i);elseprintf("%d",i++);}程序运行后,如果从键盘上输入5,则输出结果是()。A、2B、3C、4D、5标准答案:C知识点解析:本题考查if-else语句的一般形式。i--是自减运算的后置形式,即先计算i是否小于5,再对i减1,所以条件(i--<5)的结果为0,i的值变为4,执行else子句,输出i++,这是自加运算的后置形式,即先输出i的值,再对i加1,i的值变为5。7、以下叙述中正确的是A、字符常量在内存中占2个字节B、转义字符要用双引号括起来,以便与普通的字符常量区分开C、字符常量需要用单引号括起来D、字符常量是不能进行关系运算的标准答案:C知识点解析:在程序中用单引号把一个字符括起来作为字符常量。转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内,和整型常量一样,字符常量也可以进行关系运算的。8、以下叙述中错误的是()。A、算法正确的程序可以有零个输入B、算法正确的程序最终一定会结束C、算法正确的程序可以有零个输出D、算法正确的程序对于相同的输入一定有相同的结果标准答案:C知识点解析:算法的特征:①有穷性,一个算法(对任何合法的输人)在执行有穷步后能够结束,并月.在有限的时间内宄成;②确定性,算法中的每一步都有确切的台义;③可行性,鼻法中的操作能够用已经买现的基本运算执行有限次来实现;④输入,一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件;⑤输出,一个算法有一个或者多个输出,以反映出数据加工的结果,所以C选项错误。9、下列结构中属于非线性结构的是A、二叉链表B、二维数组C、循环队列D、双向链表标准答案:A知识点解析:线性结构是一个有序数据元素的集合。常用的线性结构有:线性表,栈,队列,双队列,数组,串;常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。循环队列、双向链表和二维数组都是线性结构,而二叉链表是非线性结构。10、结构化程序包括的基本控制结构是()。A、主程序与子程序B、选择结构、循环结构与层次结构C、顺序结构、选择结构与循环结构D、以上说法都不对标准答案:C知识点解析:结构化程序包括三种基本控制结构,分别为顺序结构、选择结构和重复结构(也称为循环结构),所以答案选C。11、以下选项中,当x为大于1的奇数时,值为0的表达式是A、x/2B、x%21=0C、x%2=0D、x%2=1标准答案:C知识点解析:由于x为大于1的奇数,因此x%2取余的值为1,和0不相等。12、下面描述中错误的是()。A、系统总体结构图支持软件系统的详细设计B、软件设计是将软件需求转换为软件表示的过程C、数据结构与数据库设计是软件设计的任务之一D、PAD图是软件详细设计的表示工具标准答案:A知识点解析:软件设计是将软件需求转换为软件表示的过程;数据结构与数据库设计是软件设计的任务之一;PAD图,即问题分析图,是一种主要用于描述软件详细设计的图形工具。13、软件测试的目的是A、评估软件可靠性B、发现并改正程序中的错误C、改正程序中的错误D、发现程序中的错误标准答案:D知识点解析:软件测试的目的是为了发现程序中的错误,而软件调试是为了更正程序中的错误。14、在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的()。A、连接码B、关系码C、外码D、候选码标准答案:D知识点解析:在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码。15、以下叙述中正确的是A、在scanf函数的格式串中,必须有与输入项——对应的格式转换说明符B、只能在printf函数中指定输入数据的宽度,而不能在scanf函数中指定输入数据占的宽度C、scanf函数中的字符串,是提示程序员的,输入数据时不必管它D、复合语句也被称为语句块,它至少要包含两条语句标准答案:A知识点解析:输入函数的调用格式:scanf[格式控制,输入项1,输入项2,…)格式控制的主要作用是指定输入时的数据转换格式,格式串中,必须含有与输入项一一对应的格式转换说明符选项A正确,在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以用实数指定小数位的宽度,选项B错误,scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,因此若想在屏幕上输出提示信息,应该首先使用printf函数输出,选项C错误,复合语句还可以是空语句呢,并没有规定语句条数,选项D错误。16、对于一个正常运行的C程序,以下叙述中正确的是()。A、程序的执行总是从main函数开始B、程序的执行总是从程序的第一个函数开始,在main函数结束C、程序的执行总是从main函数开始,在程序的最后一个函数中结束D、程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束标准答案:A知识点解析:程序的执行总是从main函数开始,并在main函数结束,答案选A。17、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:由于B和C有一一对应的联系,而A和B之间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。18、下面属于应用软件的是A、学生成绩管理系统B、UNIX操作系统C、汇编程序D、编译程序标准答案:A知识点解析:学生成绩管理系统为应用软件;UNIX操作系统属于系统软件;编译程序和汇编程序属于支撑软件。19、有两个关系R和T如下:则由关系R得到关系T的操作是A、选择B、投影C、交D、并标准答案:A知识点解析:由关系R和T所包含的元素可知,关系R经过选择操作就可以得到关系T。20、有以下程序:#include<stdio.h>structS{intn;inta[20];};voidf(struetS*p){inti,i,t;for(i=0;i<p->n-1;i++)for(j=i+1;j<p->n;j++)if(p->a[i]>p->a[j]){t=p->a[i];p->a[i]=p->a[j];p->a[j]=t;}}main(){inti;structSs={10,{2,3,1,6,8,7,5,4,10,9}};f(&sA、2,3,1,6,8,7,5,4,lO,9,B、10,9,8,7,6,5,4,3,2,1,C、1,2,3,4,5,6,7,8,9,10,D、10,9,8,7,6,1,2,3,4,5,标准答案:C知识点解析:本题中子函数f的功能是对结构体变量s中第二个成员数组中的所有数据进行从小到大的冒泡排序,所以结果是C选项。21、有以下定义:inta:longb:doublex,y;则以下选项中正确的表达式是A、a%(int)(x-y)B、a=x<>yC、(a*y)%bD、y=x+y=x标准答案:A知识点解析:选项B)中。运算符不存在,选项C)中double类型不能进行取余(%)操作,要求两个运算数必须是整数,选项D)中x+y=x错误。22、以下程序的输出结果是()。main(){inta=I,b=3,c=5;int*pl=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf(’’%d\n’’,c);}A、4B、3C、2D、1标准答案:B知识点解析:C语言中,指针可以指向一个数组,程序使整型指针p1、p2、p指向a、b、c值所存放的地址空间。然后再将指针变量*pl、*p2中的值的乘积赋给指针变量*p,即赋给变量c,输出c的值3。23、有以下程序,程序运行后的输出结果是#includemain(){intx,y,z;x=y=1;z=x*,y*,*y;printf("%d,%d,%d\n",x,y,z);}A、2,3,1B、2,3,2C、2,3,3D、2,2,1标准答案:A知识点解析:在程序中,整型变量x、y的初值都为1,赋值语句z=x++,y++,++y右边的“x++,y++,++y”是一个逗号表达式,所以逗号表达式的值为++y的值。执行逗号表达式“x++,y++,++y”后,x的值为2,y的值为3,z取逗号表达式的值,为1。24、有以下程序#include#includemain(){int*a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b;printf("%d,%d,%d\n",*a,*b,*c);}程序运行后的输出结果是A、2,2.3B、3,3,3C、1,2,3D、1,1,3标准答案:B知识点解析:a=b=c=(int*)malloc(sizeof(int));含义为申请了一个整型的存储空间,让指针a,b,c分别指向它,*a=1;*b=2;*c=3;语句的含义为所申请的整型存储空间的内容,*c=3最后执行导致存储空间的内容为3。a=b的含义让指针a也指向指针b所指向的存储空间,a,b,c都指向整型的存储空间,里边的内容为3。25、有以下程序#includemain(){inta=1,b=0;printf("%d,",b=a+b);printf("%d\n",a=2*b);}程序运行后的输出结果是()。A、1,2B、1,0C、3,2D、0,0标准答案:A知识点解析:考查数据的输入,printf("%d,",b=a+b);先计算b=a+b,得出b=1,再输出b值。语句printf("%d\n",a=2*b);先计算a=2*b,得出a=2,再输出a值。所以输出结果为A)。26、设有定义语句intx[6]={2,4,6,8,5,7),*p=x,i;要求依次输出x数组6个元素中的值不能完成此操作的语句是A、for(i=0;i<6;i++)printf("%2d",*(p++));B、for(i=0;i<6;i++)printf("%2d",*(p+i));C、for(i=0;i<6;i++)printf("%2d",*p++);D、for(i=0;i<6;i++)printf("%2d",(*p)++);标准答案:D知识点解析:指针p指向数组x,因此可以使用p来输出数组x的值。选项A中,*(p++)表示先取出p指向的元素的值,然后p++指向下一个元素,满足要求;选项B中*(p+i)每次i的值发生变化,(p+i)指向x数组的x[i]元素,因此*(p+i)是取出数组x的x[i]元素的值,满足要求;选项C和选项A相比,少了括号,由于*运算符的优先级比++要求,因此,因此*p++表示先取出p指向的元素的值,然后p再++指向下一个元素,满足要求;选项D中(*p)++表示先取出p指向的元素的值,然后该值++,p没有增加,每次循环都*p取出的x[0]的值,不满足要求。27、若有以下程序#includemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;if(c!=3);r+=3;if(d==4)r+=4;printf("%d\n",r);}则程序的输出结果是()。A、10B、7C、6D、3标准答案:A知识点解析:if语句的形式为"if(表达式)语句体",若语句体为复合语句,则必须用"{}"括起来,否则只会执行if(表达式)下的第一条语句。所以整个程序执行的语句为"r=1;r+=2;r+=3;r+=4;",输出的r值为10。答案选A。28、表达式a+=a-=a=9的值是A、.9B、0C、18D、9标准答案:B知识点解析:第一步a=9,然后计算a-a的值,并将此值赋给a,因此此时a=0,最后计算a+a,并将此值赋给a,因此最终结果为0。29、有以下程序#include<stdioh>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第1列开始)12345678则输出结果是A、1256B、1278C、1245D、1267标准答案:C知识点解析:当用scanf函数从键盘输入数据时,每行数据的未尾按下回车键(Enter键)之前,可以任意修改。但按下回车键putchar(c1)(Enter键)之后,scanf函数即接受了这一行数据,不能再同去修改。所以本题中,当输入123<CR>时,变量c1、c2、c3的值分别为1、2、3,当输入45678<CR>时,变量c5、c6的值4和5。所以用输出函数putchar(c1)输出1,putchar(c2)输出2,print("%c%c\n",c5,c6)输出45。30、以下叙述中错误的是A、typedef的作用是用一个新的标识符来代表已存在的类型名B、typedef说明的新类型名必须使用大写字母,否则会出编译错误C、可以用typedef说明的新类型名来定义变量D、用typedef可以说明一种新的类型名标准答案:B知识点解析:typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原来类型名依然有效。为了便于识别,一般习惯将新的类型名用大写字母表示。31、以下叙述中正确的是A、用户自己定义的函数只能调用库函数B、不同函数的形式参数不能使用相同名称的标识符C、在C语言的函数内部,可以定义局部嵌套函数D、实用的C语言源程序总是由一个或多个函数组成标准答案:D知识点解析:一个c语言源程序可以由一个或多个源文件组成,每个源文件可由一个或多个函数组成,这些函数可以是自定义函数,也可以是库函数,各个函数之间没有主从关系,不能嵌套定义函数。32、以下选项中叙述错误的是()。A、C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值B、在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内C、C程序函数中定义的自动变量,系统不自动赋确定的初值D、C程序函数的形参不可以说明为static型变量标准答案:A知识点解析:静态变量是在编译时就被分配存储空间,所占用存储单元直到程序结束时才释放,其初始化只进行一次。所以选项A)的表述错误,答案选A)。33、有以下程序intfun1(doublea)retuma*=a;)intfun2(doublex,doubley){doublea=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);}main(){doublew;w=fun2(1.1,2.0);……}程序执行后输出结果是A、5.00B、5C、5.21D、0标准答案:A知识点解析:子函数fun1(doublea)的功能是返回a的平方值的整数部分。子函数fun2(doubIex,doubley)的功能是返回x的平方值的整数部分与y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun(2)的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.00。34、以下叙述中正确的是A、在C语言中,逻辑真值和假值分别对应1和0B、关系运算符两边的运算对象可以是C语言中任意合法的表达式C、对于浮点变量x和y,表达式:x==y是非法的,会出编译错误D、分支结构是根据算术表达式的结果来判断流程走向的标准答案:B知识点解析:A选项中,在C语言中,逻辑真值对应非0;C选项中,表达式:x==y是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此B选项正确。35、有以下程序段TypedefstructNODE{intnum;structNODE*next;}OLD;以下叙述中正确的是A、以上的说明形式非法B、NODE是一个结构体类型C、OLD是一个结构型类型D、OLD是一个结构变量标准答案:C知识点解析:本题考查结构体和typedf类型定义。本题的声明代码相当于两部分,首先定义structNODE,然后是一typedef定义OLD类型,因此OLD是结构体类型。选项C正确,其他选项错误。36、有以下程序#includemain(){chara=4;printf("%d\n",a=a<<1);}A、8B、16C、40D、4标准答案:A知识点解析:本题主要考查按位右移运算。a=4的二进制为00000100,a<<1后为00001000,其值为十进制数值8。37、有以下程序main(){inti=0;i=~i;printf("%d\n",i);}程序运行后的输出结果是A、0B、1C、8D、-1标准答案:D知识点解析:运算符(~)是位运算符中唯一的一个单目运算符,运算对象应置于运算符的右边,其运算功能是把运算对象的内容按位取反(使每一位上的0变1,1变0)。i的初值为0,二进制位00000000,因此取反后结果为11111111,最高位为符号位,为一1的补码形式,因此输出结果为一1。38、以下关于typedef的叙述错误的是()。A、用typedef可以增加新类型B、typedef只是将已存在的类型用一个新的名字来代表C、用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D、用typedef为类型说明一个新名,通常可以增加程序的可读性标准答案:A知识点解析:typedef为类型定义符,使用的一般形式为"typedef原类型名新类型名;",它用于给已知类型取别名,作用仅仅是用"新类型名"代替"原类型名",并没有产生新的数据类型,答案选A。39、数据字典(DD)所定义的对象都包含于A、数据流图(DFD图)B、程序流程图C、软件结构图D、方框图标准答案:A知识点解析:在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典。因此选A,而B,C,D都不符合。40、下面关于位运算符的叙述,正确的是()。A、&表示"按位与"的运算B、#表示"按位异或"的运算C、||表示"按位或"的运算D、~表示"按位异或"的运算标准答案:A知识点解析:以#开头的语句为编译预处理命令行,||为逻辑或运算符,~表示按位取反运算符,答案选A。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、下列叙述中正确的是()。A、所谓算法就是计算方法B、程序可以作为算法的一种描述方法C、算法设计只需考虑得到计算结果D、算法设计可以忽略算法的运算时间标准答案:B知识点解析:算法是指对解题方案的准确而完整的描述,算法不等于数学上的计算方法,也不等于程序。算法设计需要考虑可行陛、确定性、有穷性与足够的情报,不能只考虑计算结果。算法设计有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的,。算法在实现时需要用具体的程序设计语言描述,所以程序可以作为算法的一种描述方法。2、以下选项中关于程序模块化的叙述错误的是A、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块B、可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序C、把程序分成若干相对独立的模块,可便于编码和调试D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序标准答案:B知识点解析:如果应用结构化程序设计方法设计程序,那么可采用自顶向下,逐步细化的设讣方法把若干独立模块组装成所要求的程序。3、下列叙述中正确的是A、算法的效率只与问题的规模有关,而与数据的存储结构无关B、算法的时间复杂度是指执行算法所需要的计算工作量C、数据的逻辑结构与存储结构是一一对应的D、算法的时间复杂度与空间复杂度一定相关标准答案:B知识点解析:算法的时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算的次数来度量,而算法所执行的基本运算次数是问题规模的函数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。算法的时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系,是独立于计算机的:数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机中表示,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。4、以下叙述中错误的是A、C程序在运行过程中所有计算都以二进制方式进行B、所有C程序都需要编译链接无误后才能运行C、C程序在运行过程中所有计算都以十进制方式进行D、C程序中字符变量存放的是字符的ASCⅡ值标准答案:C知识点解析:计算机程序都是编译为二进制的代码,计算机才会执行。5、下列关于栈的叙述中,正确的是A、栈底元素一定是最后入栈的元素B、栈顶元素一定是最先入栈的元素C、栈操作遵循先进后出的原则D、以上三种说法都不对标准答案:C知识点解析:栈是限定只能在表的一端进行插入和删除操作的线性表,必须按“后进先出”的规则操作元素。6、有二叉树如下图所示:则前序序列为()。A、ABDEGCFHB、DBGEAFHCC、DGEBHFCAD、ABCDEFGH标准答案:A知识点解析:前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树;在遍历左、右子树时,仍然先访问根节点,然后遍历左子树,最后遍历右子树。故本题前序序列是ABDEGCFH。中序遍历首先遍历左子树,然后访问跟节点,最后遍历右子树;在遍历左、右子树时,仍然先遍历左子树,然后访问跟节点,最后遍历右子树。故本题的中序序列是DBGEAFHC。后序遍历首先遍历左子树,然后遍历右子树,最后访问根节点;在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根节点。故本题的后序序列是DGEBHFCA。7、下列各组排序法中,最坏情况下比较次数相同的是()。A、简单选择排序与堆排序B、简单插入排序与希尔排序C、冒泡排序与快速排序D、希尔排序与堆排序标准答案:C知识点解析:对于长度为n的线性表,最坏情况下查找或排序的次数如下表:8、某系统总体结构图如下图所示:该系统总体结构图的深度是A、7B、6C、3D、2标准答案:C知识点解析:这个系统总体结构图是一棵树结构,在树结构中,根结点在第l层,同一层上所有子结点都在下一层,由系统总体结构图可知,这棵树共3层。在树结构中,树的最大层次称为树的深度。所以这棵树的深度为3。9、sizeof(double)是A、一个双精度型表达式B、一个整型表达式C、一个不合法的表达式D、一种函数调用标准答案:B知识点解析:sizeof关键字为C语言的运算符,用于测试()内类型其变量所占内存,表达式结果返回十进制整数,因此为整型表达式,表明变量所占的内存字节数。10、下列数据流图(DFD)构造规则中正确的是()。A、子图的输入输出数据流与父图中相关加工的输入输出数据流必须一致B、“数据存储”间应有数据流C、“数据流”可不带有数据流名D、父图子图是指任意上下层的两个数据流图标准答案:A知识点解析:数据流图应遵循以下构造规则和注意事项:①对加工处理建立唯一、层次性的编号,且每个加工处理通常要求既有输入又有输出。②数据存储之间不应有数据流。③数据流图的一致I生。即输入输出、读写的对应。④父图、子图关系与平衡规则。相邻两层DFD之间具有父子关系,子图代表了父图中某个加式的详细描述,父图表示了子图间的接口。子图个数不大于父图中的处理个数。所有子图的输入输出数据流和父图中相应处理的输入输出数据流必须一致。11、结构化程序昕要求的基本结构不包括A、顺序结构B、GOTO跳转C、选择(分支)结构D、重复(循环)结构标准答案:B知识点解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。12、在软件设计中,不属于过程设计工具的是A、PDL(过程设计语言)B、PAD图C、N-S图D、DFD图标准答案:D知识点解析:DFD(数据流图Data-Flow-Diagram)是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示。它直接支持系统功能建模。在软件详细设计的过程阶段,要对每个模块规定的功能以及算法的设计给出适当的算法描述。常见的过程设计工具有:图形工具:程序流程图,N—S,PAD,HIPO。表格工具:判定表。语言工具:PDL(伪码)。13、下面不属于软件测试实施步骤的是()。A、集成测试B、回归测试C、确认测试D、单元测试标准答案:B知识点解析:软件测试的过程一般按照四个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试,所以答案选择B。14、下列叙述中正确的是A、软件过程是把输入转化为输出的一组彼此相关的资源和活动B、软件过程是软件开发过程C、软件过程是软件维护过程D、软件过程是软件开发过程和软件维护过程标准答案:A知识点解析:软件过程是指软件整个生命周期,从需求获取,需求分析,设计,实现,测试,发布和维护一个过程模型。一个软件过程定义了软件开发中采用的方法,但软件过程还包含该过程中应用的技术一一技术方法和自动化工具。过程定义一个框架,为有效交付软件工程技术,这个框架必须创建。软件过程构成了软件项目管理控制的基础,并且创建了一个环境以便于技术方法的采用、工作产品(模型、文档、报告、表格等)的产生、里程碑的创建、质量的保证、正常变更的正确管理。15、在数据库设计中,描述数据间内在语义联系得到E-R图的过程属于()。A、逻辑设计阶段B、需求分析阶段C、概念设计阶段D、物理设计阶段标准答案:C知识点解析:数据库设计的需求分析阶段是数据库设计的第一阶段,这一阶段收集到的基础数据和一组数据流图是下一步设计概念结构的基础。数据库概念设计的目的是分析数据间内在的语义关联,在此基础上建立一个数据的抽象模型。数据库的逻辑设计主要工作是将E-R图转换成指定的关系数据库中的关系模式。数据库物理设计的主要目标是对数据库内部物理结构作调整并选择合理的存取路径,以提供数据库访问速度及有效利用存储空间。所以本题答案选C。16、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面属于开发阶段任务的是A、软件运行B、可行性研究C、软件开发计划D、软件集成测试标准答案:D知识点解析:开发阶段由三个阶段组成:设计、实现和测试。可行性研究和软件开发计划属于定义阶段;软件运行属于维护阶段。17、下列定义数组的语句中正确的是()。A、#defineN10intx[N];B、intN=10;intx[N];C、intx[0..10];D、intx[];标准答案:A知识点解析:数组说明的一般形式为:类型说明符数组名[常量表达式]。B选项中N是变量,不能用变量定义数组长度。C选项中数组长度是一串非法的数字。定义数组时必须为其指明长度,D选项中的数组长度为空,所以非法。18、以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97)A、printf("%c\n",’a’-32);B、printf("%d\n",’A’);C、printf("%c\n",65);D、printf("%c\n",’B’-1);标准答案:B知识点解析:B选项输出的格式为%d,即为整型格式,所以输出字符A的ASCII码值65,而不是字符A。由于大写字母和其对应的小写字母的ASCII码值小32,所以A正确。字符A的ASCII码值就是65,所以以%c格式输出可以输出字符A,所以C正确。由于字符A的ASCII码值比字符B的小1,所以D正确。19、有以下程序:#includeinta=1,b=2;voidfunl(inta,intb){prinff(“%d%d”,a,b);}voidfun2(){a=3.b=4;}voidmain(){funl(5,6);fun2();prinff(“%d%d\n”,a,b);}程序运行后的输出结果是()。A、1256B、5634C、5612D、3456标准答案:B知识点解析:funl是输出局部变量的值,fun2是把全局变量的值改成3,4,所以输出结果是5634。20、某系统结构图如下图所示,该系统结构图的深度是A、4B、3C、2D、1标准答案:A知识点解析:树中结点的层次从根开始定义起,根为第一层,根的孩子为第二层,依次累计。树中结点的最大层次称为树的深度。所以由题目中系统结构图,得到该树的深度为4,因此应选A选项。21、DOS文件系统的组织结构属于A、星形结构B、网形结构C、环形结构D、树形结构标准答案:D知识点解析:DOS中目录结构是层次的,由根目录到子目录形成一个树型结构。22、下列关于C语言文件的叙述中正确的是()。A、文件由一系列数据依次排列组成,只能构成二进制文件B、文件由结构序列组成,可以构成二进制文件或文本文件C、文件由数据序列组成,可以构成二进制文件或文本文件D、文件由字符序列组成,其类型只能是文本文件标准答案:C知识点解析:本题考查文件的概念。文件由数据序列组成,可以构成二进制文件或文本文件,所以答案为C选项。23、有以下程序#include#includevoidmain(){charstr[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));prinff("%s\n",p);}程序运行后的输出结果是A、9,One*Dream!B、10.One*Dream!C、9,One*WorldD、10,One*World标准答案:B知识点解析:在主函数中定义了二维字符数组str,并对它赋初值。定义字符指针p,并把字符串str[1]的地址赋给它。所以这时字符指针p指向字符串“one*Drcam!”,然后在两个输出语句中,分别输出这个字符串的长度10和字符串本身。24、有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,Y的值为A、55566.0B、7777.0C、566.0D、566777.0标准答案:C知识点解析:因为在输入格式控制符中指定变量j的输入格式控制符为“%2d”,即变量j所占的宽度为2,所以变量j只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项C)。25、以下不能将S所指字符串正确复制到t所指存储空间的是A、for(i=0;t[i]=s[i];i++);B、while(*t=*s){t++;s++;}C、for(i=0,j=0;t[i++]=s[j++];);D、do{*t++=*s++;}while(*S);标准答案:D知识点解析:在选项D中,不能把s所指字符串的结束标志符赋给字符串t。26、已知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。则执行语句printf("%d,%d",c1,c2-2);的输出结果是A、65,68B、A,68C、A,BD、65,66标准答案:D知识点解析:打印时以%d整型格式打印输出,所以字符标量c1的值打印出来就是65,从c2-2的值打印出来就是68-2,即66,所以选择D。27、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。28、下面是有关C语言字符数组的描述,其中错误的是A、不可以用赋值语句给字符数组名赋字符串B、可以用输入语句把字符串整体输入给字符数组C、字符数组中的内容不一定是字符串D、字符数组只能存放字符串标准答案:D知识点解析:本题考查字符数组。选项A、B)和C)都是正确的,字符数组存放其他数据。29、以下程序段中的变量已正确定义for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");程序段的输出结果是A、********B、****C、**D、*标准答案:D知识点解析:本题考查循环语句,题中第:二个(内层)for循环之后有一个分号,意思是每次循环中的操作为空,不执行任何操作。再循环结束后执行printf语句,即只打出一个*。30、设有定义:intx=2;以下表达式中,值不为6的是A、2*x,x+=2B、x++,2*xC、x*=(1+x)D、x*=x+1标准答案:A知识点解析:本题考查逗号表达式。逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A)中值为4;选项B)中,值为6。选项C)中x*=x+1等价于x=x*(x+1),所以等于6;选项D)与选项C)等价,结果也为6。31、为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域),则在________处应填入的选项是Structlink{chardata;_________}node;A、structlink*next;B、linknext;C、link木next;D、structlinknext;标准答案:A知识点解析:单链表为动态分配的存储空间,在分配时,每个结点之间可以是不连续的(结点内是连续的)。结点之间的联系用指针实现,即在结点结构中定义一个成员项用来存放下一结点的首地址,这个用于存放地址的成员,常把它称为指针域,该指针为了保持链表中结点的地址,因此其基类型和结点的类型相同,选项为A。32、有以下程序#includefun(inta,intb){intstaticm=0,i=2;i=i+m+1;m=i+a+b;returnm;)main(){intk=4,m=1,p;p=fun(k,m);printf("%d,",p);p=fun(k,m);printf("%d\n",p);)程序运行后的输出结果是A、8,17B、7,16C、8,8D、7,17标准答案:A知识点解析:本题考查了静态变量以及局部变量的同名问题。主函数中调用fun函数两次,第一次调用fun(4,1),形参a和b接收以后,i值为3,m的值为8,调用结束返回8存放到p中并且输出p的值为8,除了静态变量m和i,变量a,b撤销。第二次调用fun(4,1),接收实参值以后,i为3+8+1,而m为12+4+1,即输出函数值17。33、以下叙述中正确的是A、在C语言中,预处理命令行都以”#}”开头B、预处理命令行必须位于C源程序的起始位置C、#include必须放在C程序的开头D、C语言的预处理不能实现宏定义和条件编译的功能标准答案:A知识点解析:在C语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。预处理命令可以放在程序中的任何位置,其有效范围是从定义开始到文件结束。预处理命令有宏定义、文件包含和条件编译三类。#include命令行表示程序中要引用C标准函数库中的标准输入输出函数。34、以下叙述中正确的是A、对于变量而言,“定义”和“说明”这两个词实际上是同一个意思B、在复合语句中不能定义变量C、全局变量的存储类别可以是静态类D、函数的形式参数不属于局部变量标准答案:C知识点解析:用static说明符说明全局变量时,此变量可称作静态全局变量。静态全局变量只限于本编译单位使用,不能被其他编译单位所引用。在一个函数内部定义的变量(包括形参)是局部变量,它只在本函数范围内有效。不同函数中可以使用相同名字的局部变量,它们代表不同的对象,互不影响。在函数内部复合语句中也可以定义变量,这些变量都是局部变量,只在本复合语句中有效。35、有以下程序#includemain(){doublex=2.0,y;if(x<0.0)y=0.0;elseif((x<5.0)&&(!x))y=1.0/(x+2.0);elseif(x<10.0)y=1.0/x;elsey=10.0;printf("%f\n",y);}程序运行后的输出结果是A、0.000000B、0.250000C、0.500000D、1.000000标准答案:C知识点解析:本题重点考察if语句,变量x和y均为double类型,由于变量x赋值为2.0,因此执行if((x<5.0)&&(!x)),即条件为0,继续执行if(x<10.0),条件为1,即执行y=1.0/x;。依据printf()函数输出类型中f是以小数形式输出单、双精度实数。因此C选项正确。36、有以下程序,程序运行后的输出结果是voidfun(int*p1,int*p2,int*s){s=(int*)malloc(sizeof(int));*s=*p1+*(p2++);}main(){inta[2]={1,2},b[2]={10,20},*s=a;fun(a,b,s);printf("%d\n",*s);}A、10B、11C、2D、1标准答案:D知识点解析:主函数中定义指针s指向数组a,调用fun函数,首先是实参传给形参,因此p1指向a,p2指向b,s指向a,即*s的值为1。流程到调用函数。fun执行,首先更改s的指向为新分空间的首地址,表达式*s=*p1+*(p2++),取p1指向数据位1,加上p2指向数据10,p2后移,存放到s指向的空间中11流程结束,形参s和p1,p2撤销,存入s指向空间的数据丢失,主函数输出s指向数据仍然是1。37、下列关于栈叙述正确的是()。A、栈顶元素最先能被删除B、栈顶元素最后才能被删除C、栈底元素永远不能被删除D、栈底元素最先被删除标准答案:A知识点解析:栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。栈底元素最先入栈却最后被删除。所以选择A)。38、有以下程序#includeintf(intm){staticintn=0;n+=m;returnn;}main(){intn=0;printf("%d,",f(++n));printf("%d\n",f(n++));}程序运行后的输出结果是A、3,3B、1,1C、2,3D、1,2标准答案:D知识点解析:该题目中首先区别++n和n++,第一次调用f函数时,将++n(n自增1后再参与运算)作为参数进行传递,此时变量m的值为1,执行n+=m;后,n=1,将1返回主函数,并输出。第二次调用f函数时,将n++(n参与运算后再自增1)作为参数进行传递,此时变量m的值为1,执行语句n+=m;,由于n是静态存储变量,因此n=2,将2返回主函数并输出。因此D选项正确。39、若有以下程序#includechar*a="you";charb[]="WelcomeyoutoChina!";main(){inti,j=0;char*p;for(i=0;b[i]!=’\0’;i++){if(*a==b[i]){p=a;for(j=i;*p!=’\0’;j++){if(*p!=b[j])break;p++;}if(*p==’\0’)break;}}printf("%s",&b[i]);}则程序的输出结果是A、China!B、toChina!C、meyoutoChina!D、youtoChina!标准答案:D知识点解析:该程序首先定义*a和b[],并进行初始化。主函数中通过外层for循环语句,遍历字符数组b[],并且将符合if条件语句的字符赋给数组p;for内层循环语句,遍历字符数组a[]。再将符合if条件语句的结果输出。因此D选项正确。40、有以下程序:#includeintfun(intx,inty){if(x!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}A、6B、3C、8D、12标准答案:A知识点解析:本题中第一次调用为fun(8,fun(5,6)),因为fun(5,6)返回值为5,所以第二次调用为fun(8,5)=6。所以选择A)。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、设变量x为longint型,并已正确赋值,以下表达式中能将x的百位上的数字提取出的是()。A、x/10%100B、x%10/100C、x%100/10D、x/100%10标准答案:D知识点解析:x/100的个位数是x的百位数上的数字,所以再进行%10运算即可得到该数字。2、若有定义语句charc=’\101’;则变量c在内存中占A、2个字节B、3个字节C、1个字节D、4个字节标准答案:C知识点解析:每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的。3、假定int类型变量占用2个字节,其有定义:intx[4]={0,2,4};,则数组x在内存中所占的字节数是()。A、3B、6C、8D、20标准答案:C知识点解析:数组变量存储空间是在定义变量时分配的,不以是否赋值决定,语句intx[4]={0,2,4};定义了具有4个元素的整形数组x,每个元素占用2个字节,共计8个字节。4、设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。下列所示的输入形式中正确的是(注:口代表空格字符)()。A、10口X口20口YB、10口X20口YC、10口X20YD、10X20Y标准答案:D知识点解析:在使用scanf函数进行输入数据时,输入的数据之间可以用空格、回车符、制表符(Tab键)等间隔符隔开,但是输入值时也要输入相应的字符,格式符中没有这些字符,所以输入时也不能输入,否则会将这些字符作为对应的字符变量的值赋值给字符变量,如输入10赋值给a1,应直接输入X赋值给c1,否则输入空格后,将空格赋值给c1,同理输入a2,、c2。5、软件测试的目的是A、评估软件可靠性B、发现并改正程序中的错误C、改正程序中的错误D、发现程序中的错误标准答案:D知识点解析:软件测试的目的是为了发现程序中的错误,而软件调试是为了更正程序中的错误。6、下面描述中不属于数据库系统特点的是()。A、数据共享B、数据完整性C、数据冗余度高D、数据独立性高标准答案:C知识点解析:数据库系统的特点是数据的集成性;数据的高共享性和低冗余性;数据独立性;数据统一管理与控制。所以答案选择C。7、若有定义:inta,b;,通过语句scanf(’’%d;%d’’,&a,&b);能把整数3赋给变量a、5赋给变量b的输入数据是()。A、35B、3,5C、3;5D、35标准答案:C知识点解析:输入数据的格式必须与scanf()的格式控制串完全匹配,所以输入时必须在3和5之间输入“;”。8、设变量已正确定义并赋值,以下正确的表达式是()。A、x=y+z+5,++yB、int(15.8%5)C、x=y*5=x+zD、x=25%5.0标准答案:A知识点解析:考查运算符与表达式。求余运算符"%"要求参与运算的量均为整型,选项B)、D)错;赋值运算符的左侧必须为变量而不能是表达式,选项C)错。选项A)为正确的逗号表达式,答案选A)。9、定义学生选修课程的关系模式:SC(S#,Sn,C#,Cn,G)(其属性分别为学号、姓名、课程号、课程名、成绩)则该关系的主键为A、C#B、S#C、S#,C#D、S#,C#,G标准答案:C知识点解析:主关键字(primarykey)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。SC中学号和课程号一起才能用于唯一地表示表中的某一条记录,因此SC的主键是“S#,C#”。10、下列叙述中错误的是()。A、可以用typedef将已存在的类型用一个新的名字来代表B、可以通过typedef增加新的类型C、用typedef定义新的类型名后,原有类型名仍有效D、用typedef可以为各种类型起别名,但不能为变量起别名标准答案:B知识点解析:本题考查typedef的用法。typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。11、数字字符0的ASCII值为48,若有以下程序,程序运行后的输出结果是main(){chara=’1’,b=’2’;printf("%c,",b++);printf("%d\n",b-a);}A、3,2B、50,2C、2,2D、2,50标准答案:C知识点解析:本题主要考查ASCII码和自加运算。第一个printf语句中,是以字符形式输出b++的值,++放在变量的后面是先使用然后自增,因此第一个printf输出值是2,然后b的值变成’3’。在第二个printf语句中,b的值为’3’,a的值为’1’,所以b-a的值为2。12、若有以下程序#includemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}则程序的输出结果是A、10B、6C、7D、3标准答案:C知识点解析:程序代码中有四条并列的if语句,第一条if表达式a!_l不成立,执行else分支,r=l;第二条if表达式b==2成立,执行r+=2,r==3;第三条if语句c!=3不成立,执行else分支,分支为空语句;第四条if分支d==4成立,执行该if分支语句,r+=4,r=7。13、有以下程序段charc1,c2,c3;scanf("%c%c%c",&c1,&c2,&c3);若要给c1、c2、c3分别输入字母A、B、C,则以下对输入形式的描述正确的是()。A、字母A、B、C之间不能有分隔符B、字母A、B、C之间可以用空格分隔C、字母A、B、C之间可以用回车符分隔D、字母A、B、C之间可以用Tab键分隔标准答案:A知识点解析:考查scanf函数的格式输入,输入的格式要严格遵循"格式控制串"中的格式,如果"格式控制串"中没有非格式字符,则输入时也不能输入非格式字符,答案选A。14、以下叙述中错误的是A、预处理命令行的最后不能以分号表示结束B、C程序对预处理命令行的处理是在程序执行的过程中进行的C、#defineMAX是合法的宏定义命令行D、在程序中凡是以“#”开始的语句行都是预处理命令行标准答案:B知识点解析:预处理命令行是以“#”开始的语句,预处理命令行的最后不能以分号表示结束,预处理命令行。其中宏定义的字符替换的定义格式为:#define标识符字符串,预处理命令行是在系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。15、有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5)}运行以后的输出结果是A、0235B、235C、02356D、2356标准答案:B知识点解析:因为变量的初始值分别为k=5,n=0,所以程序第1次进入循环时,执行default语句,n=0,k=4,没有break语句,因此执行case2分支语句,n为2,k为3,程序进行第2次循环,执行case3:n=3,k=2,输出n值为3,程序进行第3次循环,执行case3这个分支,结果是n=5,k=1,打印出5;这时因为n=5不满足n<5的循环条件,因此退出循环,程序运行结束。16、以下叙述中正确的是A、函数的返回值不能是结构体类型B、函数的返回值不能是结构体指针类型C、在调用函数时,可以将结构体变量作为实参传给函数D、结构体数组不能作为参数传给函数标准答案:C知识点解析:和普通变量相似,结构体变量也可以作为函数实参或者形参,函数的返回值也可以是结构体类犁。17、若有以下程序main(){intc;c=10^5;printf("%d\n",c);}则程序的输出结果是A、15B、10000C、5D、105标准答案:A知识点解析:按位异或(^)的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为0;若数不同,该位的结果为1。整数10和5的二进制编码分别为1010和0101,异或结果为1111,其十进制数据位15。18、结构化程序设计的基本原则不包括()。A、多态性B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A)。19、以下选项中,能正确进行字符串赋值的是A、chars[5]={’A’,’B’,’C’,’D’,’E’);B、char*S="ABCDE";C、chars[4][5]={"ABCDE");D、char*S;gets(s);标准答案:B知识点解析:对于选项A字符串中无法存放字符串结束标志’\0’,选项C每行仅仅存放5个字符,同样的不能存放字符串结束标志,选项D中指针变量s没有实际的内存空间,无法存放输入的字符串。因此正确的选项为B,相当于char*s;s="ABCDE"。把字符串常量的首地址存放到指针变量中存储。20、有以下程序,程序的运行结果是#include<stdio.h>#include<stdlib.h>intfun(intn)main(){int*p;{inta;p=(int*)malloc(sizeof(int));a=fun(10);*p=n;return*p;printf("%d\n",a+fun(10));}}A、10B、20C、0D、出错标准答案:B知识点解析:函数fun(intn)的功能是在内存中每次动态的申请一个整型变量的存储空间,把整型变量n的值存入这个存储空间中。所以当在主函数中执行输出语句时,a+fun(10)的值等于20。21、以下叙述中错误的是A、函数可以返回地址值B、改变函数形参的值,不会改变对应实参的值C、当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULLD、可以给指针变量赋一个整数作为地址值标准答案:D知识点解析:指针变量的值只能是存储单元地址,而不能是一个整数,选项D)的描述是错误,为待选答案。函数可以返回内存空间的地址,同时函数形参和实参分别占用不同的内存单元,改变形参的值不会改变对应实参的值,在头文件stdio.h中,NULL被定义为void型的指针。22、以下fun函数返回数组中最大值的下标#includeintfun(int*s,intn){inti,k;for(i=0,k=i;is[k])__________;return(k);}在横线处应填入的内容是()。A、k=iB、i=kC、k++D、++k标准答案:A知识点解析:该代码段的逻辑是循环判定s中的值,如果大于s[k]则用k记录当前的元素下标,记录当前下标的语句应为"k=i",答案选A。23、有以下程序#incllldeintfun(chars[])main(){intn=0;{chars[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};while(*s<=’9’&&*s>=’0’)printf("%d\n",fun(s));{n=10*n+*s-’0’;s++;}}return(n);}程序的运行结果是A、61490B、61C、9D、5标准答案:B知识点解析:在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。所以在主函数中调用fun(s)时,将把字符数组s中的数字组成一个数输出。因为当指针s指向数组的第3位时,即字符件’*’,循环条件不成立,循环结束,返回n的值。所以输出n的值为61。24、有以下程序structS{intn;inta[20];};voidf(structS*p){inti,j,t;for(i=0;i<p->n-1;i++)for(j=i+1;j<p->n,j++)if(p->a[i]>p->a[j]){t=p->a[i];p->a[i]=p->a[j];p->a[j]=t;}}main(){inti;structSs={10,{2,3,l,6,8,7,5,4,10,9}};f(&s);for(i=0;i<s.n;i++)printf("%d,",s.a[i]);}A、10,9,8,7,6,5,4,3,2,1,B、2,3,1,6,8,7,5,4,10,9,C、10,9,8,7,6,1,2,3,4,5,D、1,2,3,4,5,6,7,8,9,10,标准答案:D知识点解析:voidf(stmctS*p)函数的功能使用了结构体指针变量实现对一维数组的元素从小到大排序。用关系表达式p->a[i]>p->a[i]实现一维数组中相邻元素两两比较,大的元素向后移,小的元素向前移。在主函数中语句f(&s);的功能实现对结构体变量s中一维数组的元素从小到大的排序,所以循环语句的输出结果为1,2,3,4,5,6,7,8,9,10。25、下列语句组中,正确的是()。A、char*s;s="Olympic";B、chars[7];s="Olympic";C、char*s;s={"Olympic"};D、chars[7];s={"Olympic"};标准答案:A知识点解析:字符型指针变量可以用选项A)的赋值方法:char*s;s="Olympic",选项C)的写法:char*s,s={"Olympic"};是错误的。字符数组可以在定义的时候初始化:chars[]={"Olympic"};?或者chars[]="Olympic",都是正确的。但是不可以在定义字符数组后,对数组名赋值。(数组名是常量,代表数组首地址)所以选项B)和选项D)都是错误的。对于本例,选项B)、D)中字符数组s的大小至少为8,才能存放下字符串。(字符串的末尾都有结束标志"\0")。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共40题,每题1.0分,共40分。)1、下列叙述中正确的是()。A、矩阵是非线性结构B、数组是长度固定的线性表C、对线性表只能作插入与删除运算D、线性表中各元素的数据类型可以不同标准答案:B知识点解析:矩阵也是线性表,只不过是比较复杂的线性表。线性表中各元素的数据类型必须相同。在线性表中,不仅可以做插入与删除运算,还可以进行查找或对线性表进行排序等操作。2、下列叙述中正确的是A、一个算法的空间复杂度大,则其时间复杂度也必定大B、一个算法的空间复杂度大,则其时间复杂度必定小C、一个算法的时间复杂度大,则其空间复杂度必定小D、算法的时间复杂度与空间复杂度没有直接关系标准答案:D知识点解析:算法的复杂度主要包括时间复杂度和空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量,算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),其中n是问题的规模;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。根据各自的定义可知,算法的时间复杂度与空间复杂度并不相关。3、下列关于线性链表的叙述中,正确的是A、各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B、各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C、进行插入与删除时,不需要移动表中的元素D、以上都不正确标准答案:C知识点解析:线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。4、设树T的深度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1。则T中的叶子结点数为A、8B、7C、6D、5标准答案:B知识点解析:深度为m二叉树其总结点数为2m-1=24-1=15。总结点数减去度为1,2,3,4的结点个数就是叶子结点数。15.4—2—1—1=7。5、检查软件产品是否符合需求定义的过程称为()。A、确认测试B、集成测试C、验证测试D、验收测试标准答案:A知识点解析:确定测试是验证软件的功能和性能及其他特性是否满足了需求规格说明书中确定的各种需求以及软件配置是否完全、正确。6、下列选项中不属于面向对象程序设计特征的是A、继承性B、多态性C、类比性D、封装性标准答案:C知识点解析:面向对象程序设计的三个主要特征是:封装性、继承性和多态性。封装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。7、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是A、测试B、设计C、可行性研究D、实现标准答案:C知识点解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用退役的过程。其中,定义阶段包括可行性研究与计划制定和需求分析。测试、概要设计、详细设计和实现属于开发阶段。8、下列叙述中正确的是A、在switch语句中必须使用defaultB、break语句必须与switch语句中的case配对使用C、在switch语句中,不一定使用break语句D、break语句只能用于switch语句标准答案:C知识点解析:break为C语言关键字,又称间断语句。break语句的功能是跳出正在执行的条件语句或循环语句。它可以出现在switch语句中,也可以出现在循环语句中。default是关键字,起标号的作用,代表所有case标号之外的那些标号。default标号可以出现在语句体中任何标号位置上。在switch语句体中也可以没有default标号。9、有以下程序main(){intk=5;while(-k)printf(’’%d’’,k一=3);printf(’’\n’’);)执行后的输出结果是A、2B、4C、1D、死循环标准答案:C知识点解析:在程序语句中,k的初始值为5,进行第1次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出1,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。10、下列选项中可作为C语言合法常量的是()。A、-80B、-080C、-8e1.0D、-80.0e标准答案:A知识点解析:所谓常量是指在程序运行的过程中,其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。选项B中是以0开头,表示一个八进制数,而八进制数的取值范围是0~7,所以“-080”错误:在C语言中e后面的指数必须是整数,因此,选项C和D也不正确。11、以下叙述中正确的是A、循环发生嵌套时,最多只能两层B、三种循环for,while,do—while可以互相嵌套C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误D、for语句的圆括号中的表达式不能都省略掉标准答案:B知识点解析:在一个循环体内又完整包含了另一个循环,称为循环嵌套。循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。for循环、while循环、do—while循环可以互相嵌套,但每层循环在逻辑上必须完整。而在for语句中,for语句中的表达式可以部分或全部省略,但两个”:”不可省略。12、两个或两个以上模块之间关联的紧密程度称为A、耦合度B、内聚度C、复杂度D、数据传输特性标准答案:A知识点解析:暂无解析13、有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);prinff("%d\n",s);}程序的运行结果是()。A、55B、50C、45D、60标准答案:D知识点解析:内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。fun(a,5)的值是15,再次调用后sum=15,所以fun(b,4)=45,s=45+15=60,因此D选项正确。14、有以下结构体说明、变量定义和赋值语句structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];则以下sca

温馨提示

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

评论

0/150

提交评论