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

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷44(共9套)(共270题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述中错误的是A、C程序在运行过程中所有计算都以二进制方式进行B、所有C程序都需要编译链接无误后才能运行C、C程序在运行过程中所有计算都以十进制方式进行D、C程序中字符变量存放的是字符的ASCII值标准答案:C知识点解析:计算机程序都是编译为二进制的代码,计算机才会执行。2、下列叙述中正确的是A、循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D、循环队列中元素的个数是由队头指针和队尾指针共同决定标准答案:D知识点解析:循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。3、一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为A、219B、221C、229D、231标准答案:A知识点解析:在二叉树中,叶子结点个数为n0,则度为2的结点数n2=n0-1。本题中叶子结点的个数为70,所以度为2的结点个数为69,因而总结点数=叶子结点数+度为1的结点数+度为2的结点数=70+80+69=219。4、下列关于软件工程的描述中正确的是A、软件工程只是解决软件项目的管理问题B、软件工程主要解决软件产品的生产率问题C、软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D、软件工程只是解决软件开发中的技术问题标准答案:C知识点解析:软件工程是建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。软件工程主要思想是强调在软件开发过程中需要应用工程化原则。5、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。6、设顺序表的长度为40,对该表进行冒泡排序。在最坏情况下需要的比较次数为A、780B、820C、40D、41标准答案:A知识点解析:冒泡排序(BubbleSort),是一种计算机科学领域的较简单的排序算法。冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序的最坏时间复杂度为(n*(n-1))/2=780。7、39.有以下定义: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错误。8、在软件开发中,需求分析阶段可以使用的工具是A、N-S图B、DFD图C、PAD图D、程序流程图标准答案:B知识点解析:在软件开发中,需求分析阶段常使用的工具有数据流图(DFD),数据字典(DD)、判断树和判断表。9、设已有定义floatx;,则下列对指针变量p进行定义且赋初值的语句中正确的是()。A、int*p=(float)x;B、float*p=&x;C、floatp=&x;D、float*p=1024;标准答案:B知识点解析:指针是用来存放地址的变量,用(类型名*指针变量名)的形式定义。赋值时应将某个变量地址即&x赋给指针变量,所以选择B。10、有以下程序#includemain(){intk:4,m=1,p:fun(inta,intb){intstaticm=0,i=2;p=fun(k,m);i=i+m+1;printf("0%d,",p);m=i+a+b;p=fun(k,m);returnm;}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。11、有以下程序#includemain(){chars[]="abcde";s+=2;printf("%d\n",s[0]);}执行后的结果是A、输出字符C的ASCII码B、输出字符CC、输出字符a的ASCII码D、程序出错标准答案:D知识点解析:因为字符数组s[]的数组名s表示的是一个地址常量。所以语句“s+=2;”不能将指针存当前化置的基础上再向后移动两位。因而程序编译时出错。12、有以下程序段charname[20];intnum;scanf("name=%snum=%d",name,&nurn);当执行上述程序段,并从键盘输入:name=Lilinum=1001后,name的值为A、name=LiliB、Lilinum=C、name=Lilinum=1001D、Lili标准答案:D知识点解析:在题目中以字符串的形式给字符数组赋值,所以字符数组name的值为Lili。13、已知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。则执行语句printf("%d,%d",c1,c2-2);的输出结果是A、A,68B、A,BC、65,66D、65,68标准答案:C知识点解析:在C语言中,字符常量在内存中占一个字节,存放的是字符的ASCII码值。所有的字符常量都作为整型量来处理。在本题中输出语句用整型格式输出字符时,输出的是其ASCII码值。因为字符’A’和’D’的ASCII码值分别为65和68,所以c2-2=68-2=66。14、若有以下程序,则程序的输出结果是#include<stdio.h>main(){charc1,c2;c1=’C’+’8’-’3’;c2=’9’-’0’;printf("%c%dha",c1,c2);}A、H9B、H’9’C、F’9’D、表达式不合法输出无定值标准答案:A知识点解析:字符常量允许进行简单的算术运算,则’C’+5表示H,而’9’-’0’则表示数值9。15、有以下计算公式若程序前面已经在命令行中包含math.h文件,不能够正确计算上述公式的程序段是A、y=sqrt(x);if(x<0)y=sqrt(-x);B、if(x>=0)y=sqrt(x);elsey=sqrt(-x);C、if(x>=0)y=sqrt(x);if(x<0)y=sqrt(-x);D、y=sqrt(x>=0?x:-x);标准答案:A知识点解析:由题意可知计算公式的含义是:当x大于等于0时,y值等于x的算术平方根:当x小于0时,y值等于x的相反数的算术平方根。所以选项B用一个完整的ifelse语句表达了计算公式的含义;选项C用两个if语句表达了计算公式的含义;选项D在求平方根函数的后面用x≥0?x:-x条件表达式来表达了计算公式的含义。选项A没有用C语言语句正确的表达计算公式的含义。16、以下程序段中,不能实现条件"如果aA、if(aB、if(aC、x=-10;if(aD、x=(a>=b)?-10:10;标准答案:A知识点解析:题目的意思若a=b,x=-10,选项A)少考虑了a==b的情况。答案选A)。17、若fp已定义为指向某文件的指针,且没有读到该文件的末尾,则C语言函数feof(fp)的函数返回值是A、0B、非0C、-1D、EOF标准答案:A知识点解析:feof用来判断文件是否结束。如果遇到文件结束,函数feof(fb)的值为1,否则为0。18、若以下选项中变量全部为整型变量,且己正确定义并赋值,则语法正确的switch语句是A、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}B、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}C、switch(a+9){casec1:y=a-b;casec2:y=a+b;}D、switcha*b{case10:x=a+b;default:y=a-b;}标准答案:B知识点解析:本题考查switch的使用。选项A)中的case0和case4没有break语句:选项B)正确;选项C)中的case后面不是常量,错误;选项D)中switch后面没有括号。19、以下与函数fseek(fp,OL,SEEK_SET)有相同作用的是A、feof(fp)B、ftell(fp)C、fgetc(fp)D、rewind(fp)标准答案:D知识点解析:本题主要考查文件系IO函数的使用,fseek函数用于设置文件指针的位置,feof函数用于判断是否已经到了文件结束,ftell函数返回文件指针的当前位置,fgetc从文件读取一个字符,rewind函数将文件指针重新指向文件开始。题目当中fseek(fp,OL,SEEK_SET)表示把文件指针移动到文件的开始位置0,和rcwind函数功能一致。20、有以下程序#includeintfun(inta,intb){returna+b;}main(){intx=6,y=7,z=8,r;r=fun(fun(x,y),z-);printf("%d\n",r);}程序运行后的输出结果是A、15B、21C、20D、31标准答案:B知识点解析:本题考查了函数的调用,函数fun功能为求两个数据的和。主函数中表达式r=fun(fun(x,y),z--),首先计算内层调用fun(x,y),计算结果为13,然后外层调用fun(13,8),结果为21。21、以下叙述中正确的是A、语句“charstr[10]="string!";”和“charstr[10]={"string!"};”并不等价B、对于一维字符数组,不能使用字符串常量来赋初值C、对于字符串常量“string!”,系统已自动在最后加入了“’\0’”字符,表示串结尾D、在语句charstr[]="string!";中,数组str的大小等于字符串的长度标准答案:C知识点解析:在C语言中,字符串是借助于字符型一维数组来存放的,可以借助在定义时初始化以及输入来把字符串存入数组,并规定以字符’\0’作为“字符串结束标志”。’\0’是一个转义字符,称为空值,它的ASCII码值为0。’\0’作为标志占用存储空间,但不计入字符串的实际长度。在C语言中,系统在每个字符串的最后自动加入一个字符(’\0’)作为字符串的结束标志。22、有以下程序段structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是A、pt->xB、*pt->yC、++pt->xD、(pt++)->x标准答案:C知识点解析:由题目的已知条件可知,pt指向结构体数组c[2]的第一元素c[0],所以pt->x=10,执行自加运算后为11。23、有以下程序#include<stdio.h>#include<string.h>structA{inta;charb[10];doublec;};voidf(structAt);main(){structAa={1001,"ZhangDa",1098.0};f(a);printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}voidf(structAt){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;}程序运行后的输出结果是A、1002,ChangRong,1202.0B、1001,ChangRong,1098.0C、1001,ZhangDa,1098.0D、1002,ZhangDa,1202.0标准答案:C知识点解析:本题主要考查是的函数调用时参数之间的传递问题。在C语言中参数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。所以对于本题来说,在主函数中执行f(a),把结构体变量a的值复制一份传递给形参变量t,而实参变量a的值保持不变。24、有以下程序structA{inta;charb[10];doublec;};voidf(structAt);main(){structAa={1001,"ZhangDa",1098.0};f(a);printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}voidf(structAt){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;}程序运行后的输出结果是A、1002,ChangRong,1202.0B、1001,ZhangDa,1098.0C、1001,ChangRong,1098.0D、1002,ZhangDa,1202.0标准答案:B知识点解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数f(a),形参t接收实参的数据,在函数f(t)中对结构体变量t的各个成员进行了赋值操作,需要注意的,形参和实参之间是数据传递,因此对形参的操作对实参不产生影响,因此在主函数输出仍然输出变量a的数据25、有以下程序#include<stdio.h>#defineN2#defineMN+1#defineNUM(M+1)*M/2main(){printf("%d\n",NUM);}程序运行后的输出结果是A、4B、8C、9D、6标准答案:B知识点解析:宏展开以后NUM为(2+1+1)*2+1/2,计算以后值为8。注意在进行宏展开的时候,千万不要试图计算,展开以后再进行计算。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、某完全二叉树按层次输出(同一层从左到右)的序列为ABCDEFGH。该完全二叉树的前序序列为()。A、ABCDEFGHB、ABDHECFGC、HDBEAFCGD、HDEBFGCA标准答案:B知识点解析:完全二叉树的特点是除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。根据这一特点,再根据题意输出序列为ABCDEFGH,可以得到该二叉树的结构如下:故此完全二叉树的前序序列为ABDHECFG。2、有如下程序:#includevoidmain()}intX=0x13;if(x=0x18)prinff(“T”);prinff(“F\n”);}程序运行后的结果是()。A、TFB、TC、FD、TFT标准答案:A知识点解析:x=Oxl8为赋值表达式,十六进制数Oxl8非0,if条件成立输出T,之后再输出F与回车符。程序运行后的输出结果是TF。3、某系统总体结构图如下图所示:该系统总体结构图的深度是A、7B、6C、3D、2标准答案:C知识点解析:这个系统总体结构图是一棵树结构,在树结构中,根结点在第1层,同一层上所有子结点都在下一层,由系统总体结构图可知,这棵树共3层。在树结构中,树的最大层次称为树的深度。所以这棵树的深度为3。4、某二叉树有5个度为2的节点,则该二叉树中的叶子节点数是()。A、10B、8C、6D、4标准答案:C知识点解析:根据二叉树的性质,在任意二叉树中,度为0的节点(叶子节点)总是比度为2的节点多一个。5、有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){case1:case3:printf("%d\n",n);break;case2:case4:printf("%d\n",n);continue;ease0:exit(0);}printf("%d\n",n);}以下关于程序段执行情况的叙述,正确的是()A、for循环语句固定执行8次B、当产生的随机数n为4时结束循环操作C、当产生的随机数n为1和2时不做任何操作D、当产生的随机数n为0时结束程序运行标准答案:D知识点解析:当产生的随机数n为0时,执行“case0:exit(0)”这条语句,结束程序的运行。6、冒泡排序在最坏情况下的比较次数是A、n(n+1)/2B、nlog2nC、n(n-1)/2D、n/2标准答案:C知识点解析:对n个结点的线性表采用冒泡排序,在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。7、下列叙述中正确的是A、循环队列是顺序存储结构B、循环队列是链式存储结构C、循环队列是非线性结构D、循环队列的插入运算不会发生溢出现象标准答案:A知识点解析:循环队列属于队列的特例和栈同属于线性结构,所以选项C不正确。在顺序队列中,由于数组空间不够而产生的溢出叫真溢出;顺序队列因多次入队列和出队列操作后出现的有存储空间但不能进行入队列操作的溢出称为假溢出;假溢出是由于队尾rear的值和队头front的值不能由所定义数组下界值自动转为数组上界值而产生的,解决的办法是把顺序队列所使用的存储空间构造成一个逻辑上首尾相连的循环队列。因此,顺序队列通常都采用顺序循环队列结构;栈的存储方式有顺序存储和链式存储,故选项A正确,选项B不正确。循环队列虽然能解决假溢出,却不能解决在顺序队列中,由于数组空间不够而产生的真溢出,故选项D不正确。8、以下程序的输出结果是()。#includevoidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}A、11,42,3112,22,41B、11,41,2012,42,20C、11,21,4011,21,21D、11,41,2112,42,22标准答案:B知识点解析:本题考查的是函数参数的传递及自加运算符。主函数中第一次调用函数“prt(&a,&b,&c);”,此函数中的输出语句“printf("%d,%d,%d\n",++*x,++*y,*(z++));”使得a和b的值均加1,而“*(z++)”由于先执行“z++”,所以c的值不变;第二次调用函数“prt(&a,&b,&c);”使得a和b在上一次的基础上再各自加1(因为形参和实参进行的是地址传递),而c的值仍不变。9、将E-R图转换为关系模式时,实体和联系都可以表示为()。A、属性B、键C、关系D、域标准答案:C知识点解析:从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。10、若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是A、switch(a+b){case1:printf("*\n");case2+1:printf("**\n"):}B、switch((int)x);{case1:printf("*\n"):case2:printf("*"\n");}C、switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}D、switch(a+b){case1:pfintf("*\n");casec:pfintf("**\n");}标准答案:A知识点解析:在C语言中,switch()后一对圆括号中的可以是整犁表达式或字符表达式。case语句后面的常量表达式的类型必须与switch后圆括号中的表达式类犁相同,各case语句标号的值应该互不相同,选项B)中switch后括号表达式出错,选项C)中case后面的常量类型不正确,选项D)中case后面出现了变量表达式,所以D)不正确。11、C语言程序的模块化通过以下哪个选项来实现A、变量B、程序行C、函数D、语句标准答案:C知识点解析:用函数作为程序模块以实现C程序的模块化,程序有多个函数构成,每个函数可以实现一个具体的功能,实现程序的模块化设计。12、有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i.j++)m=m%j;printf(’’%d\n’’,m);}程序的运行结果是A、0B、1C、2D、3标准答案:B知识点解析:存程序中,内层循环判断条件为”i<=i”而i的初值为3,故当外层循环变量i的值为1和2时,内层循环体都不会被执行。只有当i和i都等于3时循环才会执行一次。因为m的值为55对3求余结果为1。13、关于C语言的符号常量,以下叙述中正确的是A、符号常量的符号名是标识符,但必须大写B、符号常量在整个程序中其值都不能再被重新定义C、符号常量是指在程序中通过宏定义用一个符号名来代表一个常量D、符号常量的符号名必须是常量标准答案:C知识点解析:在C语言程序中,用一个符号名来代表一个常量,称为符号常量。注意:这个符号名必须在程序中进行特别的“指定”,并符合标识符的命名规则。一般在程序中都是利用宏定义来定义符号常量的,在代码中可以利用under来结束符号常量的定义,然后进行重新定义,符号常量的大小写并没有特别的规定,一般时候为了和变量区分利用大写。14、C源程序中不能表示的数制是A、八进制B、十进制C、二进制D、十六进制标准答案:C知识点解析:在C语言的源程序中,数值可以用十进制、八进制和十六进制来表示。不用二进制来表示。15、以下是if语句的基本形式:if(表达式)语句其中“表达式”A、必须是逻辑表达式B、必须是关系表达式C、必须是逻辑表达或关系表达D、可以是任意合法的表达式标准答案:D知识点解析:本题考查if语句,C语言中if语句中的表达式可以是任意合法的表达式。16、C语言程序中,运算对象必须是整型数的运算符是A、/B、%C、&&D、*标准答案:B知识点解析:%要求参与运算的运算量为整型,其他三个运算符对于参与运算的运算量没有直接要求。17、第二范式是在第一范式的基础上消除了A、多值依赖B、非主属性对键的传递函数依赖C、主键值对键的部分函数依赖D、非主属性对键的部分函数依赖标准答案:D知识点解析:第二范式实际上对关系增加了一约束,就是关系中的每一个属性必须完全依赖于主码,即在第一范式的基础上,消除非主属性对主码的部分函数依赖可达到第二范式。所以选项D正确。18、关于do循环体while(条件表达式);以下叙述中正确的是A、循环体的执行次数总是比条件表达式的执行次数多一次B、条件表达式的执行次数总是比循环体的执行次数多一次C、条件表达式的执行次数与循环体的执行次数无关D、条件表达式的执行次数与循环体的执行次数一样标准答案:D知识点解析:do…while语句先执行语句,后判断表达式的值。故do…Vwhile语句又称“直到型”循环结构。由于是先执行后判断,因此do…while语句的循环语句至少被执行一次,循环条件至少判断一次。19、以下叙述中正确的是()。A、C语言本身没有提供对字符串进行整体操作的运算符B、函数调用strlen(s);会返回字符串s实际占用内存的大小(以字节为单位)C、两个字符串可以用关系运算符进行大小比较D、当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和标准答案:A知识点解析:C语言中没有为字符串提供整体操作的运算符,但是提供了相应的字符串处理函数对字符串进行处理,选项A)正确,选项C)错误;strlen()函数的功能是计算字符串的实际长度(不包含结束标志),而字符串实际占用内存会包含结束标识符,选项B)错误;每个字符串末尾都会有一个结束标识符,但是拼接后只保留了一个,计算字符串占用内存时结束标识符也会占用1个字节,所以要小于两个原串占用空间的和,选项D)错误;答案选A)。20、以下叙述中正确的是A、使用typedef说明新类型名时,其格式是:typedef新类型名原类型名;B、使用typedef说明新类型名时,后面不能加分号C、在程序中,允许用typedef来说明一种新的类型名D、在使用typedef改变原类型的名称后,只能使用新的类型名标准答案:C知识点解析:C语言允许用typedef说明一种新类型名。定义形式如下:typedef类型名标识符;其中“类型名”必须是在此语句之前已定义的类型标识符;“标识符”是一个用户定义标识符,用作新的类型名;typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。21、C语言主要是借助以下哪种手段来实现程序模块化A、定义函数B、定义常量和外部变量C、使用丰富的数据类型D、使用三种基本结构语句标准答案:A知识点解析:C语言程序的模块化通过函数来体现,所以选择A。22、下列关于栈的叙述正确的是A、栈按"先进先出"组织数据B、栈按"先进后出"组织数据C、只能在栈底插入数据D、不能删除数据标准答案:B知识点解析:栈是按"先进后出"的原则组织数据的,数据的插入和删除都在栈顶进行操作。23、在关系模型中,每一个二维表称为一个A、关系B、属性C、元组D、主码(键)标准答案:A知识点解析:关系模型采用二维表来表示,即每个二维表称为一个关系。24、以下定义数组的语句中错误的是()。A、intnum[][3]={{1,2},3,4,5,6};B、intnum[2][4]={{1,2},{3,4},{5,6}};C、intnum[]={1,2,3,4,5,6};D、intnum[][4]={1,2,3,4,5,6};标准答案:B知识点解析:B选项中定义的数组为2行4列,而赋值时赋成了3行所以出错。25、有以下程序#include#includemain(){charp[20]={’a’,’b’,’c’,’d’},q[]="abc",r[]="abcde";strcat(p,r);strcpy(p+strlen(q),q);printf("%d\n",strlen(p));}程序运行后的输出结果是A、11B、9C、6D、7标准答案:C知识点解析:strcpy:字符串拷贝函数;strlen:求字符串长度函数(注意:不包含字符串结束标记字符’\0’);strcat:字符串连接函数。执行完语句strcat(p,r);后,p数组中存储的元素为a,b,c,d,a,b,c,d,e;执行语句strcpy(p+strlen(q),q);得到的结果是将q所指向的字符串拷贝至p+strlen(q)开始的存储位置,因为strlen的值为3,即p+3开始存储q中的元素。所以执行完strcpy(p+strlen(q),q)语句后,字符数组p[20]的存储元素为a,b,c,a,b,c;所以strlen(p)的结果为6。因此C选项正确。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、下列描述中正确的是A、数据的逻辑结构与存储结构必定是一一对应的B、由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C、程序设计语言中的数据一般是顺序存储结构,因此,利用数组只能处理线性结构D、以上三种说法都不对标准答案:D知识点解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等。2、有以下程序:#includeintb=2;intfun(int*k){b=*k+b;return(b);}voidmain(){inta[10]={1,2,3,4,5,6,7,8},i;for(i=2;i<4;i++){b=fun(&a[i])+b;prinff(“%d”,b);}prinff(“\n”);}程序运行后的输出结果是()。A、1012B、810C、1028D、1016标准答案:C知识点解析:因为b是全局变量,所以它的值在整个程序结束才会消失。for循环中,第一次循环,i=2,a[2]=3,所以fun(&a[i]=3+2=5,b=5,所以b:fun(&a[i])+b=5+5=10;第二次循环,b=10,然后fun(&a[i])代入a[3]=4,这时fun(&a[i]=10+4=14,所以b=fun(&a[i])+b=14+14=28。3、下列叙述中正确的是A、循环队列是队列的一种链式存储结构B、循环队列是队列的一种顺序存储结构C、循环队列是非线性结构D、循环队列是一种逻辑结构标准答案:B知识点解析:本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。4、设变量均已正确定义并赋值,以下与其他三组输出结果不同的一组语句是A、x++;printf("%d\n",x);B、++x;printf("%d\n",x);C、n=x++;printf("%d\n",n);D、n=++x;printf("%d\n",n);标准答案:C知识点解析:本题考查自增运算符。++在前表示先自增然后使用,++在后面表示先使用然后自增。选项A中首先执行x++,执行完后x自增1,然后printf输出的是x自增后的值;选项B首先执行++x,x的值增加1,接着输出x的值;选项C中++在x的后面,因此n的值是x自增前的值,printf输出的是x自增前的值;选项D中++在x的前面,因此x首先自增,然后再赋值给n,n的值是x自增后的值,输出的也是x自增后的值。5、下列叙述中正确的是A、所谓有序表是指在顺序存储空间内连续存放的元素序列B、有序表只能顺序存储在连续的存储空间内C、有序表可以用链接存储方式存储在不连续的存储空间内D、任何存储方式的有序表均能采用二分法进行查找标准答案:C知识点解析:有序表可以用顺序存储空间内连续存放的元素序列来实现,也可以用链接存储方式存储在不连续的存储空间内,已达到逻辑上连续,存储空间上不一定连续的效果。二分法进行查找只适用于顺序存储的有序表。故选项C正确。6、执行以下程序段后,w的值为()。intw=’A’,x=14,y=15;w=((x‖y)&&(w<’a’));A、-1B、NULLC、1D、0标准答案:C知识点解析:字符变量w的初值为字符“’A’”,其ASCH码值为65,字符“’at’”的ASCII码值为97,所以关系表达式“w<’a’”的值为1:变量x=14,变量y=15,“x‖y”为或,x、y均为真,所以x‖y的结果1。因而逻辑表达式“(x‖y)&&(w<’a’)”的值为1。7、有以下程序main(){intsum,pad,pAd;sum=pad=5;pAd=++sum,pAd++,++pad;printf(”%dkn”,pad);)程序的输出结果是A、5B、7C、8D、6标准答案:D知识点解析:有逗号表达式构成的语句:pAd=++sum,pAd++,++pad;主要从左到由连续运算,因此pad的值为6。注意pad和pAd的是不同的变量。8、下列描述中正确的是A、程序就是软件B、软件开发不受计算机系统的限制C、软件既是逻辑实体,又是物理实体D、软件是程序、数据与相关文档的集合标准答案:D知识点解析:计算机软件与硬件是计算机系统中相互依存的两部分。计算机软件是包括程序、数据及相关文档的完整集合。软件由两部分组成:一部分是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。软件具有以下六个特点:①软件是一种逻辑实体,而不是物理实体,具有抽象性。②软件的生产与硬件不同,它没有明显的制作过程。③软件在运行、使用期间不存在磨损、老化问题。④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移值的问题。⑤软件复杂性高,成本昂贵。⑥软件的开发涉及诸多社会因素。9、表达式a+=a一=a=9的值是()。A、18B、一9C、0D、9标准答案:C知识点解析:首先计算a=9,然后计算a一=9,即a=a一9,结果为0,然后计算a+=0,即a=a+0,所以最终结果为0。10、若变量已正确定义,则语句S=32;s^=32;printf(“%d”,s);的输出结果是()。A、一1B、0C、1D、32标准答案:B知识点解析:本题考查逻辑异或运算。异或运算只有在两个比较的位不同时其结果为1,否则结果为0,题目中两个值相同,所以结果为0。11、表达式3.6-5/2+1.2+5%2的值是()。A、4.3B、4.8C、3.3D、3.8标准答案:D知识点解析:计算5/2,结果取整数值2。计算3.6-2,结果与高精度数据保持一致,即为1.6。计算1.6+1.2,结果为2.8。计算5%2,结果为1。计算2.8+1结果为3.8。所以选择D选项。12、有以下程序:#include<stdio.h>voidfun(char*a,char*b){while(*a==′*′)a++;while(*b=*a){b++;a++;}}main(){char*s=″*****a*b****″t[80];fun(s,t);puts(t);}程序的运行结果是()。A、a*b****B、a*bC、*****a*bD、ab标准答案:A知识点解析:注意两个while,第一个是判断相等“==”,第二个是赋值“=”,第一个循环终止的条件是指针指向的字符不为“*”,就会在遇到字符“a”时停止,第二个循环把a指针所指的内容依次赋给了b指针指向的内容,直到字符串结束时终止。所以结果就是字符串的后半段,选项A正确。13、有以下程序#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0;for(i=0;i<3;i++)for(j=2;j>=i;j--)t+=b[i][j];printf(’’%d\n’’,t);}程序运行后的输出结果是()。A、4B、3C、8D、9标准答案:C知识点解析:这道题主要考查的是二维数组的有关知识。在两层for循环语句中,累加上三角元素,所以程序执行的过程为“t=-b[0][0]+b[0][1]+b[0][2]+b[1][1]+b[1][2]+b[2][2]=8”。14、执行以下语句段后,xy的值是()。int*pt,xy;xy=200;pt=&xy;xy=*pt+30;A、200B、170C、260D、230标准答案:D知识点解析:本题考查指针的运用。通过pt=&xy,将pt指向xy所占的内存地址,而*pt是指针pt所指向内存单元中的内容,即200,所以最后xy的值为230。15、以下选项中,不合法的C语言用户标识符是()。A、a--bB、AaBcC、a_bD、_1标准答案:A知识点解析:考查用户标识符的命名规则。合法的标识符由字母、数字、下划线组成并且第一个字符不能为数字,由此选项A)不合法。答案选A)。16、若各选项中所用变量已正确定义,函数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,intj)进行了声明,然后进行调用。17、若有定义语句doublex,y,*px,*py;,执行了px=&x;py=&y;之后,正确的输入语句是()。A、searlf("%If%le",px,py);B、seanf("%f%f"&x,&y);C、scard"("%f%f",x,y);D、seanf("%If%If",x,y);标准答案:A知识点解析:因为x和y都是double型数据,所以输入时的格式字符应为%lf,所以B、C选项错误。D选项中的scanf("%lf%lf",x,y);应为scanf("%lf%lf",&x,&y);。18、将数据库的结构划分成多个层次,是为了提高数据库的物理独立性和A、规范程度B、操作独立性C、逻辑独立性D、降低数据冗余标准答案:C知识点解析:物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。即,数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变:逻辑独立性存在于外模式和内模式之间。数据的逻辑独立性是指数据与程序的逻辑独立性。用户的应用程序和数据库中的逻辑结构是相互独立的,当数据的逻辑结构发生改变时应用不需要改变,逻辑独立性存在于外模式和内模式之间。数据的逻辑独立性是指数据与程序的逻辑独立性。19、若有以下程序#includemain(){inti,j=0;chara[]="Howareyou!",b[10];for(i=0;a[i];i++)if(a[i]=’’)b[j++]=a[i+1];bD]=’\0’;printf("%sha",b);}则程序的输出结果是A、HowareyouB、Hay!C、Howareyou!D、ay标准答案:D知识点解析:主函数中利用for循环访问字符串a的每一.个字符,判断当前字符是否为空格,如果是空格则保存该空格后面的一个字符存放到字符数组b中。在字符串"Howareyou!"中,第一个空格后面字符为’a’,第二个空格后面字符为’V’。20、有以下程序yoidfun2(chara,charb){printf(’’%c%c’’,a,b);)chara=’A’,b=’B’;yoidfunl(){a=’C’;b=’D’;)main(){funl();printf(’’%c%c’’a,b);fun2(’E’,’F’);}程序的运行结果是A、ABEFB、CDEFC、abcDD、CDAB3.8变量的作用域和生存期标准答案:B知识点解析:存funl()函数之前定义了全局字符变量a和b。这两个变量的作用域是从其定义处到整个程序结束。在fun1()函数之内定义了两个变量a和b,并且分别初始化为字符’C’和’D’。在C语言中,若全局变量和某个函数中的局部变量同名,则在该函数中此全局变量被屏蔽,在该函数内访问的是局部变量,与同名的全局变量不发生任何关系。所以在主函数中,执行fun1()后,变量a、b的值分别等于’C’、’D’,打印输出CD,接着执行fun2(’E’F’)语句,变量a、b的值变为’E’、’F’并输出。21、以下正确的字符串常量是A、abc’B、OlympicGamesC、""D、"\\\"标准答案:C知识点解析:字符串常量是由双引号括起来的一串字符。在C语言中。以一个反斜线开头后跟一个特定的字符,用来代表一个特定的ASCII字符。利用两个’\\’表示一个反斜杠,因此选项D)的表示无法确认表示几个反斜杠。22、以下叙述中正确的是A、语句inta[4][3]={1,2,4,5};是错误的初始化形式B、语句inta[][3]={1,2,4,5);是错误的初始化形式C、在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵D、语句inta[4][3]={{1,2),{4,5));是错误的初始化形式标准答案:C知识点解析:在理解二维数组的时候,可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组,也就是具有行列的结构,二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。23、以下选项中不属于字符常量的是A、’C’B、CC、’\xCC’D、’\072’标准答案:B知识点解析:本题考查字符型常量。选项A正确,是大小字母C;选项B错误,使用双引号括起来的是字符串,不是字符:选项C正确,使用了转义字符“\”,xCC表示16进制的CC;选项D正确,使用了转义字符“\”,072表示8进制的72。24、在关系A(S,SN,D)和B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则D是A的A、外键(码)B、候选键(码)C、主键(码)D、候选键或主键标准答案:A知识点解析:二维表中的一行称为元组。候选键(码)是二维表中能唯一标识元组的最小属性集。若一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。表M中的某属性集是表N的候选键或者主键,则称该属性集为表M的外键(码)。A中属性集D是B的主关键字,故D是A的外键(码),所以选项A正确。25、设有定义:chars[81];inti=0;以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是A、while((s[i++]=getchar0)!=’\n’);s[i]=’\0’;B、scanf("%s",s);C、gets(s);D、,do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’0\’;标准答案:B知识点解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而scanf()函数接收字符串时的结束标志为回车或者空格。26、有以下程序段charname[20];intnurn;scanf("name=%snurn=%d",name,&nurn);当执行上述程序段,并从键盘输入:name=Lilinurn=1001后,name的值为A、name=LiliB、Lilinurn=C、name=Lilinurn=1001D、Lili标准答案:D知识点解析:在题目中以字符串的形式给字符数组赋值,所以字符数组n锄e的值为Lili。27、以下叙述中正确的是A、if语句只能嵌套一层B、不能在else子句中再嵌套if语句C、if子句和else子句中可以是任意的合法的C语句D、改变if-else语句的缩进格式,会改变程序的执行流程标准答案:C知识点解析:含else子句的if语句的格式为ifr表达式)语句1else语句2其中if和else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句,对于if~fielse语句的嵌套原则是比较自由的。28、关于"while(条件表达式)循环体",以下叙述正确的是()。A、条件表达式的执行次数总是比循环体的执行次数多一次B、循环体的执行次数总是比条件表达式的执行次数多一次C、条件表达式的执行次数与循环体的执行次数一样D、条件表达式的执行次数与循环体的执行次数无关标准答案:A知识点解析:考查while循环的执行过程。先计算括号内表达式的值,若不为0,则执行循环体语句,若为0则跳出while循环,所以条件表达式的执行次数总是比循环体的执行次数多一次,答案选A。29、若变量已正确定义,则以下语句的输出结果是s=32;s^=32;printf("%d",s);A、-1B、1C、32D、0标准答案:D知识点解析:“核位异或”运算的规则是:参与运算的两个运算数中相对应的二制位上,若数相同,则该位的结果为0;若数不同,则该位的结果为1。因为语句s=32;s^=32:相当于s与自身做按位异或运算,所以其结果等于0。30、若有定义语句:doublex,y,*px,*py;执行px=&x;py=&y;正确的输入语句是A、scanf("%f%f"&x,&y);B、scanf("%f%f",x,y);C、scanf("%lf%le",px,py);D、scanf("%lf%lf",x,y);标准答案:C知识点解析:本题考查scanf语句。scanf()函数的一般格式为:scanf("格式字符串",输入项首地址表),对于double类型数据,输入时候要加上1修饰,否则会产生错误的输入信息,同时输入项必须是地址,可以使保存变量地址的指针变量。31、流程图是描述算法的很好的工具,一般的流程图中由几种基本图形组成。其中输入输出框的图形是()。A、平行四边形B、长方形C、椭圆型D、菱形标准答案:A知识点解析:绘制流程图中,习惯用圆角矩形表示"开始"与"结束";用矩形表示行动方案、普通工作环节;用菱形表示问题判断或判定(审核/审批/评审)环节;用平行四边形表示输入输出;箭头代表工作流方向。答案选A。32、有以下程序#include<stdio.h>main(){inti,j;for(i=3;>=1:i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序的运行结果是A、

B、

C、

D、

标准答案:C知识点解析:本题中的外层行变量i从3逐次递减到1,共输出3行。内层列变量i每次从1递增到2,每行输出2个数字。所以当i=3时,第一行输出i+1=4i+2=5,即45;当i=2时,第一行输出i+1=3和i+2=4,即34;当i=1时,第一行输出i+1=2和i+2=3,即23。33、有以下程序#includeintfun(chars[]){char*P=s;while(*P=0)p++;return(p-s);}main(){printf("%d\n",fun("0ABCDEF"));}程序运行后的输出结果是A、6B、7C、1D、0标准答案:B知识点解析:函数fun的主要功能是计算字符串中实际字符的个数,因此主函数中调用fun得到结果为7。34、有以下程序(strcat函数用以连接两个字符串)#include<stdio.h>#include<string.h>main(){chara[201="ABCD\OEFG\0",b[]="IJK";strcat(a,b);printf("%s\n",a);}程序运行后的输出结果是A、ABCDE\0FG\0IJKB、ABCDIJKC、IJKD、EFGIJK标准答案:B知识点解析:在字符串中字符’\0’示字符串的结束标志,所以字符串a和b.相连接的结果为ABCDIJK。35、有以下程序#includemain(){charc1=’A’,c2=’Y’;printf("%d,%d\n",c1,c2);}程序的输出结果是A、输出格式不合法,输出出错信息B、65,89C、65,90D、A,Y标准答案:B知识点解析:本题重点考察字符变量的相关知识。分别给字符型变量a和b分别赋值为’A’和’Y’,即A和Y的ASSCII码,因此输出结果为65,89,因此B选项正确。36、若有定义:intw[3][5];则以下不能正确表示该数组元素的表达式是A、*(*w+3)B、*(*(w+1))C、*(w+1)[4]D、*(&w[0][0]+1)标准答案:C知识点解析:在C语言中,二维数组的名字表示的是二维数组的地址,对于二维数组intw[3][5],可以认为w为一个一维数组,含有3个元素,而每个元素为一个含有5个元素的一维数组。而(w+1)为一个含有两个元素的一维数组,首先和(w+1)[4]结合非法,4超出了二维数组的边界,取值也就是非法的了。37、以下选项中,没有编译错误的是A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’};B、charstr1[5]="pass",str2[6];str2=str1;C、charname[10];name="china";D、charstr4[];str4="helloworld";标准答案:A知识点解析:选项A是定义了字符数组str3[],并对其赋初值。选项B中语句str2=str1非法,字符数组不能直接赋值。选项C,D和选项B一致。38、以下选项中函数形参不是指针的是A、fun(int*a){…}B、fun(inta[10]){…}C、fun(int&p){…}D、fun(intp[]){…}标准答案:C知识点解析:B选项和D选项是将数组作为函数参数;A选项是将指针作为函数参数;因此C选项正确。39、有以下结构体说明、变量定义和赋值语句structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];则以下scanf函数调用语句有错误的是A、scanf("%d",&s[0].age);B、scanf("%c",&(ps->sex));C、scanf("%s",s[0].name);D、scanf("%d",ps->age);标准答案:D知识点解析:程序段定义了结构体变量数组s[5]和指针变量ps,然后ps指向数组s[5]中的第一个元素,因而ps->age引用s[0].age。因为在输入scanf()函数中,第2个参数应该表示为地址变量,而选项A表示的值,而不是一个地址值。40、若有以下程序#includemain(){inti,j=0;chara[]="Howareyou!",b[10];for(i=0;a[i];i++)if(a[i]==’’)b[j++]=a[i+1];b[j]=’\0’;printf("%s\n",b);}则程序的输出结果是A、Howareyou!B、HowareyouC、Hay!D、ay标准答案:D知识点解析:程序首先初始化字符数组a[]为"Howareyou!"。语句if(a[i]==’’)b[j++]=a[i+1];条件是判断字符数组a[]中是否是空格字符,如果是空格的话,将空格后的字符赋给数组b。并将b输出。因此D选项正确。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是()。A、算法的复杂度包括时间复杂度与空间复杂度B、算法的复杂度是指算法控制结构的复杂程度C、算法的复杂度是指算法程序中指令的数量D、算法的复杂度是指算法所处理的数据量标准答案:A知识点解析:算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。算法的复杂度包括时间复杂度与空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度是指算法在执行过程中所需要的内存空间。2、下列叙述中正确的是()。A、非完全二叉树可以采用顺序存储结构B、有两个指针域的链表就是二叉链表C、有的二叉树也能用顺序存储结构表示D、顺序存储结构一定是线性结构标准答案:C知识点解析:在计算机中,二叉树为非线性结构,通常采用链式存储结构,但对于满二叉树和完全二叉树来说,可以按层进行顺序存储。因此A项错误,C项正确。虽然满二叉树和完全二叉树可以采用顺序存储结构,但仍是一种非线性结构,因此D项错误。双向链表也有两个指针域,因此B项错误。3、下列叙述中正确的是A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、栈与队列都是线性结构标准答案:D知识点解析:栈是先进后出,队列是先进先出。栈和队列都是一种线性表,属于线性结构。4、下列定义变量的语句中错误的是A、floatUS$;B、doubleint;C、charFor;D、int_int:标准答案:A知识点解析:C语言规定,变量的标识符只能由字母、数字或下划线3种字符组成,且首字符必须为字母或F划线。在C语言中大写字母和小写字母被认为是两个不同的字符。选项B定义的变量标识符int和选项D定义的变量标识符int与C语言的关键字int是不同的,是正确的变量标识。选项C定义的变量标识符For与C语言中的关键字for是两个不同的标识符,而在选项A包含有特殊字符$,因而其不符合C语言的变量命名规定。5、下列链表中,其逻辑结构属于非线性结构的是A、二叉链表B、循环链表C、双向链表D、带链的栈标准答案:A知识点解析:二叉链表作为树的存储结构。链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。6、下面描述中不属于软件需求分析阶段任务的是()。A、撰写软件需求规格说明书B、软件的总体结构设计C、软件的需求分析D、软件的需求评审标准答案:B知识点解析:软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书和需求评审。软件的总体结构设计属于软件设计阶段的任务。7、数据库设计的根本目标是要解决A、数据共享问题B、数据安全问题C、大量数据存储问题D、简化数据维护标准答案:A知识点解析:数据库应用系统中的一个核心问题就是设计一个能满足用户要求、性能良好的数据库,这就是数据库设计。数据库设计是在一定平台制约下,根据信息需求与处理需求设计出性能良好的数据模式。数据库设计的根本目标是要解决数据共享的问题。8、有以下程序#includevoidmsilq(){intc=0,k;for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;break;csse4:c+=2;bteak;}printf("%d\n",c);}A、9B、7C、5D、3标准答案:D知识点解析:在这段程序中,整型变量c的初始值赋为0,在第一次执行for循环语句时,因为此时变量k的值等于1,所以在switch语句中首先执行default语句,给变量c的值加1,因为在default语句后面没有break语句,所以就会接着执行case2这条语句,再给变量c的值加1,其值变为2,这时退出switch语句块,进入第二次for循环,此时k的值等于2,就会执行switch语句块中的case2这条语句,再给变量c的值加1,这时变量c的值就是3,此时退出switch语句块,循环变量k的值加1,成为3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量c的值在屏幕上输出。9、有以下程序:#includevoidfun(inta,intb){intt;t=a:a=b:b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2)fun(e[i],c[i+1]);for(i=0;i<10;i++)printf(“%d,”,c[i]);printf(“\n”);{程序的运行结果是()。A、1,2,3,4,5,6,7,8,9,0,B、2,1,4,3,6,5,8,7,0,9,C、0,9,8,7,6,5,4,3,2,1,D、0,l,2,3,4,5,6,7,8,9,标准答案:A知识点解析:函数调用中发生的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参的值不会变化,所以数组c中的元素值并没有变化,选择A选项。10、有以下函数定义:intfun(doublea,doubleb){returna*b;}若以下选项中所用变量都已正确定义并赋值,错误的函数调用是()。A、if(fun(x,y)){……}B、z=fun(fun(x,y),fun(x,y));C、z=fun(fun(x,y)x,y);D、fun(x,y);标准答案:C知识点解析:本题考查函数调用时的参数传递。选项C中第一个参数的表达式不正确,因此不能得到正确的结果。11、下列定义变量的语句中错误的是A、int_int;B、doubleint_;C、charFor;D、floatUS$;标准答案:D知识点解析:C语言规定,变量命名必须符合标识符的命名规则。D选项中包含了非法字符"$",所以错误?标识符由字母?数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个不同的字符,所以For不是关键字for。12、有以下程序#includemain(){intsum,pad,pAd;sum=pad=5;pAd=++sum,pAd++,++pad;printf("%d\n",pad);}程序的输出结果是()。A、6B、5C、7D、8标准答案:A知识点解析:C语言对字母大小写敏感,pAd与pad不是同一个变量,表达式"pAd=++sum,pAd++,++pad;"中牵扯到pad的只有最后一个逗号后的表达式,pad=6,所以输出的最后结果为A)。13、有以下程序#include#includemain(){inta=1,b=4,c=2;doublex=10.5,y=4.0,z;z=(a+b)/c+sqrt(y)*1.2/c+x;printf("%f\n",z);}程序运行后的输出结果是()。A、13.700000B、14.000000C、15.400000D、14.900000标准答案:A知识点解析:考查运算符与表达式。表达式(a+b)/c+sqrt(y)*1.2/c+x;先计算(a+b)/c,a、b、c均为整数,所以计算的结果也为整数即2;然后计算sqrt(y)*1.2/c,即2.0*1.2/c,结果为1.2;最后计算2+1.2+x的值,为13.7,输出结果为选项A)。14、以下叙述中正确的是A、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行B、C语言程序将从源程序中第一个函数开始执行C、main的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main等D、C语言规定必须用main作为主函数名,程序将从此开始执行标准答案:D知识点解析:C语言规定必须以main作为主函数名。程序中的main()是主函数的起始行,也是C程序执行的起始行。每一个可执行的C程序都必须有一个且只能有一个主函数。一个C程序中可以包含任意多个不同的函数,但只能有一个主函数。程序要从main()函数开始执行,最后在main()函数中结束。15、下列叙述中正确的是A、两个连续的单引号(")是合法的字符常量B、可以对字符串进行关系运算C、两个连续的双引号("")是合法的字符串常量D、空字符串不占用内存,其内存空间大小是0标准答案:C知识点解析:两个连续的双引号:"",是一个字符串常量,称为“空串”。16、以下选项中非法的C语言字符常量是A、’9’B、’\09’C、’\x09’D、’\x9d’标准答案:B知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来。也可以为转移字符,转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内。其中反斜线后的八进制数可以不用0开头,但是不能有8和9字符出现。反斜线后的十六制数只可由小写字母x开头。17、有以下程序段scanf("%d%d%d",&a,&b,&c);if(aA、输出a的原始值B、输出a、b、c中的最大值C、输出a、b、c中的最小值D、输出a、b、c中值相等的数值标准答案:A知识点解析:该程序中没有赋值运算符"=",也就是说没有变量会被改变,所以a值也不变,答案选A。18、有以下程序#includeinta=1,b=2;voidfun1(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){fun1(5,6);fun2();printf("%d%d\n",a,b);}程序运行后的输出结果是A、3456B、1256C、5612D、5634标准答案:D知识点解析:函数fun1()的作用是输出局部变量a和b的值,在主函数中执行fun1(5,6)的结果是输出5,6;函数fun2()的作用是给变量a和b分别赋值3,4;执行fun2()的作用是输出3,4。19、以下叙述中错误的是A、函数可以返回地址值B、改变函数形参的值,不会改变对应实参的值C、当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULLD、可以给指针变量赋一个整数作为地址值标准答案:D知识点解析:指针变量的值只能是存储单元地址,而不能是一个整数,选项D)的描述是错误,为待选答案。函数可以返回内存空间的地址,同时函数形参和实参分别占用不同的内存单元,改变形参的值不会改变对应实参的值,在头文件stdio.h中,NULL被定义为void型的指针。20、有以下程序#includemain(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);printf("outputn:");ofintf("%d\n".p);}该程序、试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是A、intn,*p=NULL;B、*p=&n;C、scanf("%d.t,&p)D、printf("%d\n",p);标准答案:A知识点解析:选项A表示在程序中,声明定义变量语句“intn,*p=NULL;”定义了整型变量n和指针变量P,并且指针变量P初始化为空。其他的语句都是错误的。其中选项B,&n的地址应存放到指针变量p中,而选项C中数据输入项错误,选项D输出地址信息。21、有以下程序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->成员名。22、以下选项中不合法的标识符是()。A、&aB、FORC、printD、00标准答案:A知识点解析:C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。因为C语言中区分大小写,所以B)选项中的"FOR"可以作为标识符来用。A)选项中含有非法字符&,所以选择A)。23、设有定义:charp[]={’1’,’2’,’3’},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是()。A、sizeof(p)B、sizeof(char)C、sizeof(*q)D、sizeof(p[0])标准答案:A知识点解析:根据题目中的定义可以知道sizeof(p),计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。24、以下叙述中错误的是A、C程序在运行过程中所有计算都以二进制方式进行B

温馨提示

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

评论

0/150

提交评论