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

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷30(共9套)(共285题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、软件生存周期中,解决软件“做什么”的阶段是()。A、需求分析B、软件设计C、软件实现D、可行性研究标准答案:A知识点解析:软工生命周期可细化为可行性研究和计划制定、需求分析、软件设计(总体设计和详细设计)、编码、软件测试、运行和维护等阶段。需求分析是对待开发软件提出的需求进行分析并给出详细定义,是解决软件“做什么”的阶段。软件设计是解决软件“怎么做”的阶段。2、有以下程序:#include<stdio.h>main(){inti,j,x=0;for(i=0;i<2;i++){x++:for(j=0;j<=3;j++){if(j%2==0)continue;x++;}x++:}printf(″x=%d\n″,x);程序的运行结果是()。A、x=4B、x=6C、x=8D、x=12标准答案:C知识点解析:第一次循环:i=0,执行x++后x=1,执行内层循环j=0,由于j%2!=0时才执行x++,即只有j取1和3时,执行x++,此时x=1+1+1=3,跳出内层循环,执行下一条语句x++,x=4,第二次循环:x=1时,重复上述循环,共执行两次循环,故x最终结果是4*2=8。3、以下不能输出字符A的语句是(注:字符A的ASCⅡ码值为65,字符a的ASCⅡ码值为97)A、printf(’’%c\n’’,’a’-32);B、printf(’’%d\n’’,’A’);C、printf(’’%c\11’’,65);D、printf(’’%cin’’,’B’-1);标准答案:B知识点解析:在选项B的输出函数中,大写字符’A’以整型数据的形式输出。4、下面不属于软件工程过程的4种基本活动A、软件规格说明B、软件开发C、软件演进D、软件测试标准答案:D知识点解析:软件工程过程的4种基本活动是:软件规格说明、软件开发、软件确认、软件演进。5、下面不属于软件工程过程的4种基本活动A、软件规格说明B、软件开发C、软件演进D、软件测试标准答案:D知识点解析:软件工程过程的4种基本活动是:软件规格说明、软件开发、软件确认、软件演进。6、下面描述中错误的是A、系统总体结构图支持软件系统的详细设计B、软件设计是将软件需求转换为软件表示的过程C、数据结构与数据库设计是软件设计的任务之一D、PAD图是软件详细设计的表示工具标准答案:A知识点解析:软件设计是将软件需求转换为软件表示的过程;数据结构与数据库设计是软件设计的任务之一;PAD图,即问题分析图,是一种主要用于描述软件详细设计的图形工具。7、有以下程序:#includemain(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}}程序的运行结果是()。A、1,1,2,0B、0,0,0,3C、编译有错D、0,1,2,0标准答案:C知识点解析:本题中if(a=1)b=1;与elsed=3;之间多了语句c=2;,所以会出现else语句的位置错误的编译失败提示。8、表达式:(int)((double)9/2)一9%2的值是()。A、5B、4C、3D、2标准答案:C知识点解析:C语言的计算过程与常规相似,这个表达式的计算过程为,首先求出9除以2的商等于4,再把其强制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等于3。9、对于一个正常运行的C程序,以下叙述中正确的是A、程序的执行总是从程序的第一个函数开始,在main函数结束B、程序的执行总是从main函数开始,在程序的最后一个函数中结束C、程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束D、程序的执行总是从main函数开始标准答案:D知识点解析:一个C语言源程序无论包括了多少函数,在正常情况下总是从main函数开始执行,从main函数结束。10、有以下程序段doublex=5.16894;printf("%f\n",(int)(x*1000+0.5)/(double)1000);则程序段的输出结果是A、5.175000B、5.169000C、5.170000D、5.168000标准答案:B知识点解析:(jnt)(x*1000+0.5)/(double)1000表达式功能,保存数据x的后三位小数,把第四位四舍五入。11、下面属于应用软件的是A、学生成绩管理系统B、UNIX操作系统C、汇编程序D、编译程序标准答案:A知识点解析:学生成绩管理系统为应用软件;UNIX操作系统属于系统软件;编译程序和汇编程序属于支撑软件。12、有以下定义和语句:struetworkers{intnum;charname[20];charc;struet{intday;intmonth;intyear;}s;};struetworkersw,*pw;pw=&w:能给w中year成员赋1980的语句是()。A、pw->year=1980;B、w.year=1980;C、w.s.year=1980;D、*pw.year=1980;标准答案:C知识点解析:本题考查结构体变量的引用。题目中定义了一个结构体,其中结构体中的变量又是一个结构体,w为外层结构体,如果给内层结构体赋值,先要得到内层结构体变量,即w.s,若要给year赋值,表示为w.s.year即可,选项C正确。13、表达式a+=a=a=9的值是A、-9B、0C、18D、9标准答案:B知识点解析:第一步a=9,然后计算a-a的值,并将此值赋给a,因此此时a=0,最后计算a+a,并将此值赋给a,因此最终结果为0。14、有以下程序#includemain(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf("m=%d\n",m);}程序运行后的输出结果是()。A、m=6B、m=2C、m=4D、m=5标准答案:A知识点解析:考查for循环语句的嵌套。该程序的执行流程就是i从1加到2,j从3减到1,然后把i*j的值小于3的值累乘并存在变量m中,即1*3、1*2、1*1,所以m最终的值为6,答案选A。15、以下关于函数的叙述中正确的是A、每个函数都可以被其他函数调用(包括main函数)B、每个函数都可以被单独编译C、每个函数都可以单独运行D、在一个函数内部可以定义另一个函数标准答案:B知识点解析:本题主要考查函数的定义和使用。选项A)错误,main函数可以调用其他函数,但是其他函数不能调用main函数;选项B)正确;选项C)错误,只有main函数可以单独运行,其他函数只能被调用;选项D)错误,C语言中不能在函数内部定义函数。16、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。A、课号,成绩B、学号,成绩C、学号,课号D、学号,姓名,成绩标准答案:C知识点解析:学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C)。17、有以下程序structS{intn;inta[20];);voidf(structS*p){intij,t;for(i=0;i<p->n-1;i++)for(j=i+l;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(&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[j]实现一维数组中相邻元素两两比较,大的元素向后移,小的元素向前移。在主函数中语句f(&s);的功能实现对结构体变量s中一维数组的元素从小到大的排序,所以循环语句的输出结果为1,2,3,4,5,6,7,8,9,10。18、有下列程序,程序的运行结果是#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}A、127B、1212C、1111D、117标准答案:D知识点解析:在本题中,定义了3个宏定义语句,分别是:#defineN5、#defineMN+5和#definef(x)(x*M),所以根据C语言的宏替换规则,我们可知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。19、若有以下程序,则程序的输出结果是#defineS(x)x*x#defineT(x)S(x)*S(x)main(){intk=5,j=2;printf("%d,%d\n",S(k+j),T(k+j));}A、17,37B、49,2401C、17,289D、49,289标准答案:A知识点解析:本题考查了宏替换,宏替换就是简单的字符替换,不会进行语法错误检查也不会进行运算。S(k+j)宏展开以后为k+j*k+j,值为17,T(k+j)宏展开以后为k+j*k+j*k+j*k+j,值为37。20、以下叙述中正确的是A、break语句不能用于提前结束for语句的本层循环B、continue语句使得整个循环终止C、使用break语句可以使流程跳出switch语句体D、在for语句中,continue与break的效果是一样的,可以互换标准答案:C知识点解析:用break语句可以使程序流程跳出switch语句体,也可用break语句在循环结构中终止循环体,从而提前结束循环,而continue语句的作用是结束本次循环,即跳过本次循环体中continue语句后面的语句,立刻进行下一次的循环条件判断,可以理解为仅结束本次循环。21、有下列程序:voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(a);for(i=0;i<5;i++)printf("%d,",a[i]);}程序运行后的输出结果是A、2,2,3,4,5,B、6,2,3,4,5,C、1,2,3,4,5,D、2,3,4,5,6,标准答案:B知识点解析:voidf(int*q)函数的功能是对(*q)的值连续5次自加1。在main()函数中f(a)语句把一维数组a[5]的首地址作为实参,传递给函数f(int*q)的形参q,然后在函数f(int*q)内,a[0]连续5次自加1后,a[0]的值就变成6。所以输出为6,2,3,4,5。22、设有定义语句:char*aa[2]={"abcd","ABCD"};则以下叙述正确的是A、aa[0]存放了字符串"abcd"的首地址B、aa数组的两个元素只能存放含有4个字符的一维数组的首地址C、aa数组的值分别是字符串"abcd"和"ABCD"D、aa是指针变量,它指向含有两个元素的字符型数组标准答案:A知识点解析:本题中定义了一个指针数组,数组中存放的是字符指针,aa数组的两个元素分别包含了5个字符,所以可以存放5个字符的一维数组的首地址,所以B选项错误。aa数组的值是指向那两个字符串的字符指针,而不是那两个字符串,所以C选项错误。aa本身是一个指向两个字符指针的指针,所以D选项错误。23、有以下程序main(){inti=1;i=i^i;printf("%d\n",i);}程序运行后的输出结果是A、-1B、0C、1D、7标准答案:B知识点解析:按位异或(^)的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为0;若数不同,该位的结果为1。本题中表达式i^i的值必为0,因为i的各个位置的二进制值相同。24、若有以下程序段intr=8;printf("%d\n",r>>1);输出结果是()。A、4B、8C、16D、2标准答案:A知识点解析:右移运算符">>"的运算规则是把左边运算数的各二进制位全部右移n位,n取决于">>"右边的数值。整型数据r的十进制值为8,对应二进制数值为0100,右移1位的运算结果为0010,十进制数值为4,答案选A。25、设有宏定义:#defineIsDIV(k,n)((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是A、判断m是否能被5和7整除B、判断m被5和7整除是否都余1C、判断m被5或者7整除是否余1D、判断m是否能被5或者7整除标准答案:B知识点解析:本题考查逻辑运算符的相关概念,逻辑与若要为真,那么两边都要为真,所需要m都能被5和7整除都余1,所以选项B正确。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、有以下程序#includemain(){ints,t,A=10;doubleB=6:s=sizeof(A);t=sizeof(B);printf("%d,%d\n",s,t);}在VC6平台上编译运行,程序运行后的输出结果是A、4,4B、2,4C、4,8D、10,6标准答案:C知识点解析:关键字sizeof用于测试不同类型变量所占的内存空间,返回所占的字节数。在VC编译系统中,整型变量占用4个字节的内存空间,而双精度型变量占用8个字节的内存空间。2、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA标准答案:B知识点解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是EDCBA54321。3、在最坏情况下()。A、快速排序的时间复杂度比冒泡排序的时间复杂度要小B、快速排序的时间复杂度比希尔排序的时间复杂度要小C、希尔排序的时间复杂度比直接插入排序的时间复杂度要小D、快速排序的时间复杂度与希尔排序的时间复杂度是一样的标准答案:C知识点解析:在最坏情况下,快速排序、冒泡排序和直接插入排序所需要的比较次数为O(n2),希尔排序所需要的比较次数为O(n1.5),所以答案选C。4、某系统结构图如下图所示(图中n≥5)该系统结构图的宽度是()。A、nB、3C、2D、1标准答案:A知识点解析:宽度指整体控制跨度(横向最大模块数)的表示。本题中第1层有1个模块,第二层有n个模块(注意n≥5),第3层有5个模块,故宽度为n。5、在希尔排序法中,每经过一次数据交换后A、能消除多个逆序B、只能消除一个逆序C、不会产生新的逆序D、消除的逆序个数一定比新产生的逆序个数多标准答案:A知识点解析:希尔排序法(缩小增量法)属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序的方法。插入排序能够消除多个逆序,也会产生新的逆序。消除的逆序与新产生的逆序有多有少。6、对长度为n的线性表作快速排序,在最坏情况下,比较次数为()。A、nB、n—1C、n(n—1)D、n(n—1)/2标准答案:D知识点解析:快速排序最坏情况就是每次选的基准数都和其他数做过比较,共需比较(n—1)+(n—2)+…+1=n(n—1)/2,故D项正确。7、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。8、层次型、网状型和关系型数据库划分原则是()。A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。9、有如下嵌套的if语句if(a<b)if(a<c)k=a;elsek=c;elseif(b<c)k=b;elsek=c;以下选项中与上述if语句等价的语句是A、k=(a<b)?((bc)?b:c);B、k=(a<c)?b:c;C、k=(a<c)?a:c;D、k=(a<b)?((a<c)?a:c):((b<c)?b:c);标准答案:D知识点解析:嵌套的ifelse语句的禽义是,在变最a的值小于变量b的值,同时,变量a的值小于变量c的值时,把变量a的值赋给变量k。在变量a的值小于变量b的值,同时,变量a的值大于等于变量c的值时,把变量c的值赋给变量k。在变量a的值大于等于变量b的值,同时,变量b的值小于变量c的值时,把变量b的值赋给变量k。在变量a的值人于等于变量b的值,同时,变量b的值大于等于变量c的值时,把变量c的值赋给变量k。10、下列选项中,当x为大于1的奇数时,值为0的表达式是()。A、x%2==0B、x/2C、x%21=0D、x%2==1标准答案:A知识点解析:算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。C选项的值为真,即1。D选项的值为真,即1。11、以下程序段中的变量已正确定义:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");程序的运行结果是()。A、**B、****C、*D、********标准答案:C知识点解析:由于内层循环for(k=1;k<3;k++)后面直接跟了空语句“;”,所以在循环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个“*”,选择C选项。12、在数据管理技术发展的三个阶段中,数据共享最好的是A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据管理技术的发展经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段无共享,冗余度大;文件管理阶段共享性差,冗余度大;数据库系统管理阶段共享性大,冗余度小。13、有以下程序#include<stdio.h>main(){intx=8:for(;x>0;x-){if(x%3){printf(’’%d,’’,x一);continue;}printf(’’%d,’’,-x);}}程序的运行结果是A、8,7,5,2,B、9,7,6,4,C、7,4,2,D、8,5,4,2标准答案:D知识点解析:”x-”表示先执行程序,再令x的值减1;而”-x”表示令x的值减1,再执行程序。x=8时,x%3为非0值,执行语句{printf(’’%d,’’,x-);continue;),输出”8,”,此时经过x-,x的值变为7,跳出此次循环;执行x-,x=6,x%3=0,后面语句不执行,执行语句printfi(“%d,”,-x);,输出”5,”:执行for语句中的x-得到x=4,判断x%3,输出”4,”,执行两次x-后,x=2,执行{printf(“%d,”,x-);continue;}后,输出”2,“;然后执行两次x-后,x=0,不符合”x>0”,循环全部结束。14、以下不合法的数值常最是A、1e1B、011C、0xabcdD、8.0E0.5标准答案:D知识点解析:实型常量又称为实数或浮点数。在C语言中,可以用两种形式表示一个实型常量。①小数形式是由数字和小数点组成的一种实数表示形式,这种表示形式的常量必须要有小数点。②指数形式用以“e”或“E”后跟一个整数来表示以10为底的幂数。C语言的语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。因为选项D)中字母E后面的指数为小数形式,所以选项D)这种表示方法不合法。15、以下选项中合法的标识符是A、1-1B、1_1C、_11D、1__标准答案:C知识点解析:本题考查标识符定义。合法标识符的要求是由下划线、英文大小写字母和数字组成的字符串,且第一个字符必须是字母或下划线。16、有以下程序#includemain(){inta=3;printf("%d\n",(a+=a-=a*a));}程序运行后的输出结果是()。A、-12B、9C、0D、3标准答案:A知识点解析:表达式"(a+=a-=a*a)",先计算表达式"a-=a*a",即"a=a-a*a",结果为"a=-6"然后计算"a+=a"即"a=a+a",得a=-12,所以输出结果为A)。17、以下程序的输出结果是()。#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(’’%4.1f\n’’,S(a+b));}A、14.0B、7.5C、程序有错无输出结果D、31.5标准答案:C知识点解析:C语言规定预处理语句后面不能加分号,因此程序有错。如果没加分号的话S(a+b)=PT*a+b*a+b=3.5*1+2*1+2=7.5。18、关于预处理命令的叙述中错误的是()。A、预处理命令行的最后不能以分号表示结束B、C程序对预处理命令行的处理是在程序执行的过程中进行的C、#defineMAX是合法的宏定义命令行D、在程序中凡是以“#”开始的语句行都是预处理命令行标准答案:B知识点解析:C语言中预处理命令行是以“#”开始的语句,预处理命令行的最后不能以分号表示结束。其中宏定义的字符替换的定义格式为:#define标识符字符串,预处理命令行是在系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。19、设有关系表学生S(学号,姓名,性别,年龄,身份证号),每个学生学号唯一。除属性学号外,也可以作为键的是A、姓名B、身份证号C、姓名,性别,年龄D、学号,姓名标准答案:B知识点解析:候选键是是二维表中能唯一标识元组的最小属性集。一个二维表有多个候选码,则选定其中一个作为主键供用户使用,学生学号与身份证号均是唯一的,都可以作为主键,B选项正确。20、有以下程序voidfun(intn,int*s){intf;if(n==1)*s=n+1;else{fun(n-1,&f);}s=f;}}main(){intx=0;fun(4,&x);printf("%d\n",x);}程序运行后的输出结果是A、1B、3C、4D、2标准答案:D知识点解析:函数fun为递归调用函数,如果n的值为1,那么后面形参指向的空间存放n+1,否则继续计算fun(n-1)的值。调用分析过程:fun(4,&x)-→fun(3,&x)-→fun(2,&x)-→fun(1,&x)在回归的过程中,对于x内的数据并没有改动。21、以下语句中存在语法错误的是A、charss[][20]={"right?"};B、char*ss[6];ss[1]="right?";C、char*ss[]={"right?");D、charss[6][20];ss[1]="right?";标准答案:A知识点解析:选项A)中定义了二维数组ss,可以用于存储字符串,但是字符串的存储不能通过赋值,仅可以初始化或者输入得到,而选项C)和A)不同,选项C)为指针数组,对于指针变量可以保存常量字符串的地址。22、有以下程序#includeintf(intx);main(){inta,b=0;for(a=0;a<3;a+=1){b+=f(a);putchar(’A’+b);}}intf(intx){returnx*x+1;}程序运行后输出结果是()。A、BDIB、BCDC、ABED、BCF标准答案:A知识点解析:考查函数的返回值。三次a的值分别为0、1、2,对应的函数返回值为1、2、5,b累加后为1、3、8字符参与运算时等同于让其对应的ASCII码参与计算,然后对应输出字符或其ASCII码值,?A?+b后分别为?B?、?D?、?I?,答案选A。23、有以下程序#include<stdio.h>voidmain(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是A、2050B、3344C、3040D、0304标准答案:C知识点解析:在主函数的for循环语句中,当循环变量i的值等于0,2时,执行switch中的case0语句,分别对数组元素a[0]和a[2]加1和减1,所以a[0]的值等于3,a[2]等于4。当循环变量i的值等于1,3时,执行switch中的case1语句,把数组元素a[1]和a[3]的值赋为0。所以输出数组a的元素,其结果为3040。24、有以下程序#includemain(){inta[]={2,4,6,8,10},x,*p,y=1;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf("%d\n",y);}程序的输出结果是A、13B、19C、11D、15标准答案:B知识点解析:本题通过语句"p=&a[1]"将指针变量p指向了存储单元a[1],即使得p[0]的值为4,y的初始值为1,然后通过3次for循环,使得y的值分别加上p[0]、p[1]和p[2],那么y=1+4+6+8,所以输出的y的值为19。25、以下关于宏的叙述中正确的是A、宏替换没有数据类型限制B、宏定义必须位于源程序中所有语句之前C、宏名必须用大写字母表示D、宏调用比函数调用耗费时间标准答案:A知识点解析:宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头,所以B)选项中宏定义必须位于源程序中所有语句之前是错误的。宏名一般用大写,但不是必须用大写,所以C选项错误。宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值),所以D选项错误。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、有以下程序:#include<stdio.h>voidmain(){unsignedchara=8,c;c=a>>3:printf(″%d\n″,c);}程序运行后的输出结果是()。A.32B.16C.1D.0A、32B、16C、1D、0标准答案:C知识点解析:字符常量与其ASCⅡ码值一一对应,在计算的时候,可以使用该字符的ASCⅡ码参与运算,输出时会根据格式控制符输出对应的字符或者ASCⅡ码。右移运算符“>>”的运算规则是把左边运算数的各二进制位全部右移n位,n取决于“>>”右边的数值。字符a的ASCⅡ码值为8,对应二进制为1000,所以a>>3=1,输出的字符c的ASCⅡ码值为1,答案选C。2、下面对软件描述错误的是()。A、文档是不可执行的B、程序和数据是可执行的C、软件文档是与程序开发、维护和应用无关的资料D、软件是程序、数据及相关文档的集合标准答案:C知识点解析:软件是程序、数据及相关文档的集合。程序、数据和相关文档又称为软件的三要素。其中,程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。可见,软件有两部分组成:一是机器可执行的程序和数据;二是机器不可执行的文档。3、数据流图(DFD)中的有向箭头(→)表示()。A、控制流B、数据流C、输入流D、输出流标准答案:B知识点解析:数据流图中的主要图形元素与说明如下:加工(转换):输入数据经加工变换产生输出。→数据流:沿箭头方向传送数据的通道,一般在旁边标注数据流名。存储文件:表示处理过程中存放各种数据的文件。数据的原点和终点:表示系统和环境的接口,属系统之外的实体。4、下面函数调用语句含有实参的个数为()。func((exp1,exp2),(exp3,exp4,exp5));A、1B、2C、3D、5标准答案:B知识点解析:本题考查函数调用时的实参形式。这里有一个逗号运算的考查,(a,b)的运算结果为b,因而只有一个值,结合func的调用形式,可以知道实参的个数只有2个。5、设有定义:inta=1,b=2,c=3;以下语句中执行效果与其它三个不同的是A、if(a>b)c=a;a=b;b=c;B、if(a>b){c=a,a=b,b=c;}C、if(a>b)c=a,a=b,b=c;D、if(a>b){c=a;a=b;b=c;}标准答案:A知识点解析:在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项B、C、D表示的功能相同,而选项A表示的是一条if语句,两条赋值语句。6、有以下程序#includemain(){inta=7;while(a-);printf(’’%dkn’’,a);}程序运行后的输出结果是A、0B、1C、.1D、7标准答案:C知识点解析:在while语句中,先判断while后面的表达式是否为0,如果为0,则退出循环,否则执行循环体。在本题中,当变量a的值经过几次循环后,其值等于0时,退出while循环语句,变量a再执行自减运算,所以其值等于-1。7、数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和A、编码设计B、测试阶段C、运行阶段D、物理设计标准答案:D知识点解析:数据库设计目前一般采用生命周期法,即把整个数据库应用系统的开发分解成目标独立的四个阶段。它们分别是需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶殷。8、有以下程序#includeintflintx,inty){return((y-x)*x);}main()finta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf("%d\n",d);}程序运行后的输出结果是A、10B、8C、9D、7标准答案:C知识点解析:本题考查函数的嵌套调用。首先计算f(a,b)与f(a,c),f(a,b)=(b—a)*a=3,f(a,c)=(c-a)*a=6,然后计算f(3,6)=(6—3)*3=9。9、若函数调用时的实参为变量,下列关于函数形参和实参的叙述中正确的是()。A、函数的形参和实参分别占用不同的存储单元B、形参只是形式上的存在,不占用具体存储单元C、同名的实参和形参占同一存储单元D、函数的实参和其对应的形参共占同一存储单元标准答案:A知识点解析:本题重点考查的是函数的形参和实参。在定义函数时,函数名后面括弧中的变量名称为“形式参数”(简称形参),在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称实参)。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元,因此A选项正确。10、设有定义:intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是()。A、k++B、k+=1C、++kD、k+1标准答案:A知识点解析:表达式"k++"表示先取得变量k的值作为整个表达式的值,然后变量k再自加。所以除了选项A)的表达式的值为0外,其他几个选项的表达式的值均为1,故而答案选A)。11、有以下程序#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。12、下列叙述中正确的是()。A、在C语言中,预处理命令行都以“#”开头B、预处理命令行必须位于C源程序的起始位置C、#include必须放在C程序的开头D、C语言的预处理不能实现宏定义和条件编译的功能标准答案:A知识点解析:预处理命令是以“#”号开头的命令,它们不是C语言的可执行命令,这些命令应该在函数之外书写,一般在源文件的最前面书写,但不是必须在起始位置书写,所以B、C选项错误。C语言的预处理能够实现宏定义和条件编译等功能,所以D选项错误。13、以下叙述中正确的是A、字符变量在定义时不能赋初值B、同一英文字母的大写和小写形式代表的是同一个字符常量C、字符常量可以参与任何整数运算D、转义字符用符号开头标准答案:C知识点解析:一个字符常量代表ASCⅡ字符集中的一个字符,在C程序中,字符常量可参与任何整数运算,转义字符以一个反斜线开头后跟一个特定的字符。14、有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fpr4ntf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);}程序的运行结果是()。A、321B、12300C、1D、123标准答案:D知识点解析:程序首先将数组a[10]中的元素1、2、3分别写入了文件d1.dat文件中,然后又将d1.dat文件中的数据123整体写到变量n的空间中,所以打印n时输出的数据为123。15、有三个关系R,S和T如下图所示:则由关系R和S得到关系T的操作是A、选择B、差C、交D、并标准答案:B知识点解析:由关系T中的数据可以看出,其数据由属于关系R但是不属于关系S的数据组成。所以关系T是由关系R和S通过差运算得到的。16、有以下程序#includemain(){inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;for(i=0;i<3;i++)for(k=i+1;k<4;k++)if(a[i][i]<a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++)printf("%d,",a[0][i]);}程序运行后的输出结果是A、1,1,2,6,B、6,2,1,1,C、6,4,3,2,D、2,3,4,6,标准答案:C知识点解析:首先对二维数组进行赋值操作,a[0][0]、a[0][1]、…、a[3][2]、a[3][3]的值为1、4、…、6、1。通过for嵌套循环语句和if条件语句,对二维数组对角线元素进行由大到小的排序操作,程序最后通过for语句输出二维数组第1行的4个元素。因此C选项正确。17、以下选项中非法的C语言字符常量是A、’9’B、’\09’C、’\x09’D、’\x9d’标准答案:B知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来。也可以为转移字符,转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内。其中反斜线后的八进制数可以不用0开头,但是不能有8和9字符出现。反斜线后的十六制数只可由小写字母x开头。18、有以下程序#include<stdio.h>main(){inty=10;while(y--);printf("y=%d\n",y);}程序执行后的输出结果是A、y=0B、y=-1C、y=1D、while构成无限循环标准答案:B知识点解析:在while循环中每次变量y的值减1,直到其值等于0时退出循环,这时y的再减1变为-1。19、若fp已定义为指向某文件的指针,且没有读到该文件的末尾,则C语言函数feof(fp)的函数返回值是A、0B、非0C、-1D、EOF标准答案:A知识点解析:feof用来判断文件是否结束。如果遇到文件结束,函数feof(fp)的值为1,否则为0。20、若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是A、#definen5inta[2*n];B、inta[5+5];C、#defineN10inta[N];D、intn=10,a[n];标准答案:D知识点解析:在C语言中,定义一维数组的语句形式为:类型名数组名[整型常量表达式]。在选项D)中,n是一个整型的变量。21、有以下程序#includevoidfun(intx,inty,int*z){*z=y-x;}main(){inta,b,c;fun(10,5,&a);fun(7,a,&b);fun(a,b,&c);printf("%d,%d,%d\n",a,b,c);}程序运行后的输出结果是()。A、-5,-12,-7B、5,2,3C、-5,-12,-17D、5,-2,-7标准答案:A知识点解析:函数fun()返回的是y-x的值并存放在指针变量z指向的变量中。所以函数fun(10,5,&a);调用结束后,a=-5;函数fun(7,a,&b);调用结束后,b=-5-7=-12;函数fun(a,b,&c);调用结束后,c=-12-(-5)=-7,答案选A。22、以下函数不能用于向文件中写入数据的是A、fwriteB、fputcC、ftellD、fprintf标准答案:C知识点解析:本题考查文件操作。ftell函数返回文件指针的当前位置,其他的都写文件函数。23、下面结构体的定义语句中,错误的是()。A、structord{intx;inty;intz;}structorda;B、structord{intx;inty;intz;};structorda;C、structord{intx;inty;intz;}a;D、struct{intx;inty;intz;}a;标准答案:A知识点解析:分号代表该结构体定义语句的结束,选项A)的结构体没有定义完全就用该结构体另外定义变量,用法有误,所以答案选A)。24、有以下程序#includestructSTU{charname[9];charsex;intscore[2];};voidf(structSTUa[]){structSTUb={"Zhao",’m’,85,90};a[1]=b;}main(){structSTUc[2]={{"Qian",’f’,95,92},{"Sun",’m’,98,99}};f(C);printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0].score[1]);printf("%s,%c,%d,%d\n",c[1].name,c[1].sex,c[1].score[0],c[1].score[1]);}程序运行后输出结果是A、Qian,f,95,92,Sun,m,98,99B、Qian,f,95,92,Zhao,m,85,90C、Zhao,m,85,90,Sun,m,98,99D、Zhao,m,85,90,Qian,f,95,92标准答案:B知识点解析:本题考查把数组名作为函数参数,执行f函数后,结构体数组c的第二个元素被改写,c[1].name为Zhao,选项B正确。25、以下对软件描述错误的是()。A、文档是不可执行的B、程序和数据是可执行的C、软件文档是与程序开发、维护和应用无关的资料D、软件是程序、数据及相关文档的集合标准答案:C知识点解析:软件是程序、数据及相关文档的集合。程序、数据和相关文档又称为软件的三要素。其中,程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。可见,软件有两部分组成:一是机器可执行的程序和数据;二是机器不可执行的文档。故本题答案为C选项。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是A、有一个以上根结点的数据结构不一定是非线性结构B、只有一个根结点的数据结构不一定是线性结构C、循环链表是非线性结构D、双向链表是非线性结构标准答案:B知识点解析:在数据结构中,树这类的数据结构只有一个根结点,但它不是线性结构。2、算法的有穷性是指()。A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法的有穷性是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。3、下列叙述中正确的是A、对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)标准答案:A知识点解析:本题主要考查的知识点为查找技术。顺序查找的使用情况:①线性表为无序表;②表采用链式存储结构。二分法查找只适用于顺序存储的有序表,并不适用于线性链表。4、以下选项中,合法的一组C语言数值常量是A、12.0Xa234.5e0B、028.5e-3-0xfC、.1774e1.50abcD、0x8A10.0003.e5标准答案:A知识点解析:八进制数其开头必须是数字“0”,其数字包括0~7,而在选项B中,028是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整数,而选项C中4e1.5是错误的。在选项D中,整型数据10,000的表示形式是错误的。5、下列描述中,不符合良好程序设计风格要求的是A、程序的效率第一,清晰第二B、程序的可读性好C、程序中要有必要的注释D、输入数据前要有提示信息标准答案:A知识点解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。6、开发大型软件时,产生困难的根本原因是()。A、大型系统的复杂性B、人员知识不足C、客观世界千变万化D、时间紧、任务重标准答案:A知识点解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了人们难以控制软件发展的局面,即所谓的“软件危机”。7、在C语言中,以下说法不正确的是()。A、在C程序中,整数和实数都能被准确无误地表示出来B、在C程序中,任何一个变量名都代表存储器中的一个位置C、静态变量的生存期与整个程序的运行期相同D、C语言中,任何变量都必须先声明才能进行引用标准答案:A知识点解析:此题考查C语言的基本概念。变量的实质就是在内存中占据一定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改;整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。8、在学校里,教师可以讲授不同的课程,同一课程也可由不同教师讲授,则实体教师与实体课程间的联系是()。A、一对多B、一对一C、多对一D、多对多标准答案:D知识点解析:一个教师可以讲授不同的课程,同一课程也可由不同教师讲授,则实体教师与实体课程间的联系是多对多。9、若有以下程序:#includemain(){inta=0,b=0,c=0;c=(a一=++a),(a+=b,b+=4);printf(“%d,%d,%d\n”,a,b,c);}则程序的输出结果是()。A、0,4,0B、0,4,4C、1,4,1D、1,4,4标准答案:A知识点解析:逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算。另外逗号运算符的优先级最低,所以先计算c=(a一=++a)这部分。其中,赋值运算符从右往左计算,先执行++a,a自增1后再赋值,所以a的值为1,执行a=a一1,即a=1—1,a的值为0,并将0赋给变量c。第二部分(a+=b,b+=4),先执行a=a+b,a=0+0,即a的值为0,然后执行b+=4,b=0+4,即bl的值为4。所以输出结果为0,4,0,故选项A正确。10、下列选项中属于面向对象设计方法主要特征的是A、继承B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:面向对象设计方法的主要特征有封装性、继承性和多态性。而结构化程序设计方法的主要原则有自顶向下,逐步求精,模块化,限制使用goto语句。11、有以下程序main(){inta=2,c=5;printf("a=%%d,b=%%d\n",a,c);}程序的输出结果是A、a=%2,b=%5B、a=%d,b=%dC、a=2,b=5D、a=%%d,b=%%d标准答案:B知识点解析:输出“%”,可以在格式控制中用“%%”表示,将输出一个“%”,而没有%表示格式符的开始,%%d不能表示格式符,因此仅输出:a=%d,b=%d。12、若有定义语句: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修饰,否则会产牛错误的输入信息,同时输入项必须是地址,可以使保存变量地址的指针变量。13、有两个关系R和T如下:则由关系R得到关系T的操作是A、选择B、投影C、交D、并标准答案:A知识点解析:由关系R和T所包含的元素可知,关系R经过选择操作就可以得到关系T。14、下面不属于结构化程序设计风格的是A、程序结构良好B、程序的易读性C、不滥用Goto语句D、程序的执行效率标准答案:D知识点解析:结构化程序设计(stmcturedprogramming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。15、结构化程序设计的3种结构是()。A、顺序结构,分支结构,跳转结构B、顺序结构,选择结构,循环结构C、分支结构,选择结构,循环结构D、分支结构,跳转结构,循环结构标准答案:B知识点解析:程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。16、已定义以下函数intfun(int*p){return*p;}fun函数返回值是A、一个整数B、不确定的值C、形参p中存放的值D、形参p的地址值标准答案:A知识点解析:返回值为指针变量指向的数据,该数据已被定义为整型。因此A选项正确。17、若有定义语句:intm[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是A、m[--i]B、m[2*2]C、m[m[0]]D、m[m[i]]标准答案:C知识点解析:本题考查数组的使用。m是一个一维数组,长度为5,因此下标范围是0-4。选项A中一是先自减,然后使用i,因此访问的是元素m[3]:选项B访问的是元素m[4]:选项C中内部的m[0]值是5,因此实际访问是的m[5],下标超出范围:选项D中m[i]的值是1,访问元素m[1]。18、若有以下程序#include<stdio.h>main(){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!=1不成立,执行else分支,r=1;第二条if表达式b==2成立,执行r+=2,r=3;第三条if语句c!=3不成立,执行else分支,分支为空语句:第四条if分支d==4成立,执行该if分支语句,r+=4,r=7。19、设有定义doublea[10],*s=a;以下能够代表数组元素a[3]的是A、(*s)[3]B、*s[3]C、*s+3D、*(s+3)标准答案:D知识点解析:语句*s:a,使用指针变量s指向一维数组a的首地址,所以*(s+3)表示的是引用数组a[3]。20、以下选项中非法的C语言字符常量是A、’9’B、’\09’C、’\x09’D、’\x9d’标准答案:B知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来。也可以为转移字符,转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内。其中反斜线后的八进制数可以不用0开头,但是不能有8和9字符出现。反斜线后的十六制数只可由小写字母x开头。21、有以下程序#include#includevoidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;while(p1<p2){s=*p1;*p1=*p2;*p2=s;p1++;p2--;}}main(){chara[]="123456";fun(a,strlen(a));puts(a);}A、116611B、161616C、654321D、123456标准答案:C知识点解析:函数fun的功能是将字符串w中的元素从大到小进行排列,所以在主函数中调用函数fun后,字符串a的元素从大到小进行了排列。22、下面不属于软件需求分析阶段主要工作的是A、需求变更申请B、需求分析C、需求评审D、需求获取标准答案:A知识点解析:需求分析阶段的工作可概括为4个方面:①需求获取。②需求分析。③编写需求规格说明书。④需求审评。23、若有以下程序structstu{char*name,gender;intscore;};main(){structstua={NULL,’m’,290},b;a.name=(char*)malloc(10);strcpy(a.name,"Zhao");b=a;b.gender=’f’;b.score=350;strcpy(b.name,"Qian");printf("%s,%c,%d,",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,f,350,Qian,f,350C、Zhao,m,290,Zhao,f,350D、Qian,m,290,Qian,f,350标准答案:D知识点解析:主函数中定义结构体类型structstu,有三个成员,第一个成员为字符指针变量。主函数中为stu类型变量a赋值,首先为a.name成员分配存储空间,存入数据。b=a;语句执行完毕以后,a和b的各个成员值相同,需要注意的是b.name和a.name成员都保存了同一段内存的地址,因此当为变量b赋值的时候,同样更改了的name成员,而其他成员由于有单独的存储空间而不会发生改变。24、若有以下程序#include<stdio.h>voidsp(int*a){intb=2;*a=*a*2;printf("%d,",*a);a=&b;*a=*a*2;printf("%d,",*a);}main(){intk=3;sp(&k);printf("%d\n",k);}则程序的输出结果是A、6,4,6B、6,4,3C、6,12,12D、9,4,9标准答案:A知识点解析:本题考查了指针作为函数的参数,可以接收实参变量的地址,改变实参的值。主函数调用sp(&k),执行sp函数a指向向k,执行语句*a=*a*2后a指向空间的值k的值为6,改变a的指向以后,此时a指向b,则执行*a=*a*2以后,a指向空间b的值为4。调用结束返回主函数,输出k的值为6。25、若有以下程序#includemain(){ints=0,n;for(n=0;n<4;n++){switch(n){default:s+=4;case1:s+=1;case2:s+=2;case3:s+=3;}}printf("%d\n",s);}则程序的输出结果是A、6B、18C、10D、24标准答案:D知识点解析:第一次for循环,n的值为0,所以从default后面的语句开始执行,s+=4,s+=1,s+=2,s+=3,s的值为10。在进入第二次for循环,n的值为1,所以执行s+=1,s+=2,s+=3,s的值为16。在进入第三次for循环,n的值为2,所以执行s+=2,s+=3,s的值为21。在进入第四次for循环,n的值为3,所以执行s+=3,s的值为24。国家二级C语言机试(选择题)模拟试卷第5套一、选择题(本题共40题,每题1.0分,共40分。)1、以下叙述中正确的是A、程序的算法只能使用流程图来描述B、N—S流程图只能描述简单的顺序结构的程序C、计算机可以直接处理C语言程序,不必进行任何转换D、结构化程序的三种基本结构是循环结构、选择结构、顺序结构标准答案:D知识点解析:结构化程序有三种基本结构循环结构、选择结构、顺序结构,描述算法常见的有文字描述,流程图,盒图,伪代码等。N-S图为盒图,可以描述比较复杂的程序结构,而计算机不能直接处理C程序,只能处理二进制代码。2、在一个C源程序文件中所定义的全局变量,其作用域为()。A、所在文件的全部范围B、所在程序的全部范围C、所在函数的全部范围D、由具体定义位置和extern说明来决定范围标准答案:D知识点解析:全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。3、下列关于线性链表的叙述中,正确的是A、各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B、各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C、进行插入与删除时,不需要移动表中的元素D、以上都不正确标准答案:C知识点解析:线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。4、以下选项中关于C语言常量的叙述错误的是A、常量分为整型常量、实型常量、字符常量和字符串常量B、经常被使用的变量可以定义成常量C、常量可分为数值型常量和非数值型常量D、所谓常量,是指在程序运行过程中,其值不能被改变的量标准答案:B知识点解析:常量指在程序运行过程中,其值不能被改变的量。常量分为整型常量(即整常数)、实型常量、字符型常量和字符串常量。常量也可以按数据类型分为为数据常量和非数据常量。变量是指在程序运行过程中,其值能被改变的量。5、下面程序的输出是()。main(){inti=9;for(;i>0;i--){if(i%3==0){printf("%d",--i);continue;}}}A、741B、852C、963D、875421标准答案:B知识点解析:本题考查continue的应用。程序中for循环体内有一个continue语句,它的功能是提前结束本次循环体(即循环体的后半部分不执行了),直接来到下一次循环的条件判断。本题中,当i值为3的倍数(9,6,3)时,表达式i%3值为0,输出--i(8,5,2),否则无输出。第6次循环结束后,i--使i得0,此时i>0为假,循环结束。6、下列描述中正确的是A、软件交付使用后还需要再进行维护B、软件工具交付使用就不需要再进行维护C、软件交付使用后其生命周期就结束D、软件维护是指修复程序中被破坏的指令标准答案:A知识点解析:通常将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。已交付的软件投入运行后,应在运行使用中不断地维护,根据新提出的需要进行必要而且可能的扩充和删改。7、定义部门关系模式如下:部门(部门号,部门名,部门成员,部门总经理),使它不满足第一范式的属性是()。使它不满足第一范式的属性是()。A、部门名B、部门成员C、部门总经理D、部门号标准答案:B知识点解析:对于关系模式,若其中的每个属性都已不能再分为简单项,则它属于第一范式。本题中“部门成员”可进一步分解(成员编号、姓名等),因此不满足第一范式。8、定义学生、教师和课程的关系模式S(S#,Sn,Sd,Dc,Sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);C(C#,Cn,P#)(其属性分别为课程号、课程名、先修课);SC(S#,C#,G)(其属性分别为学号、课程号和成绩)。包含对非主属性部分依赖的关系是()。A、S(S#.Sn,Sd,Dc,Sa)B、C(C#,Cn,P#)C、SC(S#,C#,G)D、不存在标准答案:A知识点解析:关系S的主键是S#(学号),S#是主属性,但非主属性Sd(所在系)也可决定Dc(所在系的系主任),所以包含对非主属性部分依赖的关系是S。9、已知下列函数定义:fun(int*b,intc,intn,intdata){intk;for(k=0;kA、fun(*a,4,5,1);B、fun(&a,4,5,1);C、fun((int*)a,4,5,1);D、fun(a,4,5,1);标准答案:D知识点解析:本题考查函数调用时的参数传递。fun函数的调用形式为“fun(int*b,intm,intn,intdata)”,而调用数组时,用数组名表示一个指向数组第一个元素的指针,因此,调用时的形式为:fun(a,4,5,1)。10、由以下while构成的循环,循环体执行的次数是intk=0;while(k=1)k++;A、一次也不执行B、执行一次C、无限次D、有语法错,不能执行标准答案:C知识点解析:循环条件表达式为赋值表达式k=1,因此循环执行无限次。11、下列一维数组说明中,不正确的是()。A、intN;scanf("%d",&N);intb[N];B、floata[]={1,6,6,0,2};C、#defineS10inta[S];D、#defineS10inta[S+5];标准答案:A知识点解析:本题考查一维数组的赋值。一维数组的一般定义格式为:类型说明符数组名[常量表达式]。其中,“[]”中的内容可以是整型常量,也可以是整型表达式。选项A)中的N是一个变量,所以错误。12、下列条件语句中,输出结果与其他语句不同的是()。A、if(a!=0)printf(’’%d\n’’,x);elseprintf(’’%d\n’’,y);B、if(a==0)printf(’’%d\n’’,y);elseprintf(’’%d\n’’,x);C、if(a==0)printf(’’%d\n’’,x);elseprintf(’’%d\n’’,y);D、if(a)printf(’’%d\n’’,x);elseprintf(’’%d\n’’,y);标准答案:C知识点解析:A、B、D选项的含义均为:a的值如果为0,打印y的值,否则打印x的值。而C选项的含义是:a的值为0时打印x的值,不为0时打印y的值,与其他选项正好相反。13、以下叙述中错误的是A、算法正确的程序最终一定会结束B、算法正确的程序可以有零个输入C、算法正确的程序可以有零个输出D、算法正确的程序对于相同的输入一定有相同的结果标准答案:C知识点解析:算法是指为解决某个特定问题而采取的确定且有限的步骤。一个算法应该具有以下5个特征:①有穷性。一个算法包含的操作步骤应该是有限的。也就是说,在执行若干个操作步骤之后,算法将结束,而且每一步都在合理的时间内完成。②确定性。算法中的每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。③可行性。算法中指定的操作,都可以通过已经验证过可以实现的基本运算执行有限次后实现。④有零个或多个输入。在计算机上实现的算法是用来处理数据对象的,在大多数情况下这些对象需要通过输入来得到。⑤有一个或多个输出。算法的目的是为了求“解”,这些“解”只有通过输出才能得到。14、有以下程序段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)这条语句,结束程序的运行。15、设有下面的定义:structst{inta;floatb;}d;int*p;要使p指向结构变量d中的a成员,正确的赋值语句是()。A、*p=d.a;B、p=&a;C、p=d.a;D、p=&d.a;标准答案:D知识点解析:本题主要考查按结构数组元素方式引用结构成员。结构体变量的成员引用方法有3

温馨提示

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

评论

0/150

提交评论