1、国家二级(C 语言)机试模拟试卷 144 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.设数据结构 B=(D,R),其中 D:a,b,c,d,e,fR=(f,a),(d,b),(e,d),(c,e),(a,c)该数据结构为( )。(分数:2.00)A.线性结构B.循环队列C.循环链表D.非线性结构2.下列叙述中错误的是( )。(分数:2.00)A.循环队列空的条件是队头指针与队尾指针相同B.若二叉树没有叶子结点,则为空二叉树C.带链栈的栈底指针是随栈的操作而动态变化的D.若带链队列中只有一个元素,则队头指针与队尾指针必定相同3.某带链栈的初
2、始状态为 top=bottom=NuLL,经过一系列正常的入栈与退栈操作后,top=bottom=20。该栈中的元素个数为( )。(分数:2.00)A.1B.0C.20D.不确定4.设一棵度为 3 的树,其中度为 2,1,0 的结点数分别为 3,1,6。该树中度为 3 的结点数为( )。(分数:2.00)A.1B.2C.3D.不可能有这样的树5.下面描述错误的是( )。(分数:2.00)A.模块的独立性与模块的信息隐蔽和局部化无关B.内聚性和耦合性是模块独立程度的定性度量标准C.一个模块的内聚性越高则该模块的独立性越强D.一个模块的耦合性越高则该模块的独立性越弱6.下面属于黑盒测试方法的是(
3、)。(分数:2.00)A.错误推测法B.基本路径测试C.判定覆盖D.条件覆盖7.下面模型中为概念模型的是( )。(分数:2.00)A.实体一联系模型B.层次模型C.关系模型D.网状模型8.学生关系模式中有 D(D#,Dn,D1,DAddr。)(其属性分别为系编号、系名称、系主任和系地址)和S(S#,Sn,SG,Date,Maj,D#)(其属性分别为学号、姓名、性别、入学日期、专业和系编号)两个关系,关系 S 的主键(码)是 S#,关系 S 的外键(码)是( )。(分数:2.00)A.D#B.MajC.D1D.Dn9.关系的实体完整性要求关系中不能为空的属性是( )。(分数:2.00)A.主键属
4、性B.外键属性C.全部属性D.候选键属性10.学生选修课程的关系模式为 SC(S#,Sn,Sd,Sa,C#,G)(其属性分别为学号、姓名、所在系、年龄、课程号和成绩);C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课)。关系模式中包含对主属性部分依赖的是( )。(分数:2.00)A.S#SdB.(S#,C#)CC.C#CnD.C#P#11.以下叙述中错误的是( )。(分数:2.00)A.main()是 C 语言主函数的起始B.main()作为主函数必须位于源程序的起始位置行C.main()是 C 程序执行的起始行D.main 是不可替代的主函数名12.以下叙述中错误的是( )。(分数
5、:2.00)A.在一个程序中,每个模块均可以独立编译运行B.程序“模块化”有利于任务的分解简化C.允许对函数单独进行编译,是 C 语言实现“模块化”的基础D.采用模块化结构,可以提高编程效率13.以下关于注释的叙述中错误的是( )。(分数:2.00)A.注释的边界符号“”和“*”之间不允许加入空格B.C 语言允许注释出现在程序中任意合适的地方C.注释的内容仅用于阅读,对程序的运行不起作用D.注释的边界符号“*”和“*”必须成对出现且可以嵌套14.以下是正确 C 语言标识符的是( )。(分数:2.00)A._8_B.8C.8D.-8-15.算术运算符和圆括号有不同的运算优先级,对于表达式:a+b
6、+c*(d+e),关于执行顺序,以下说法正确的是( )。(分数:2.00)A.先执行(d+e)得 r2,再执行 c*r2 得 r3,再执行 a+b 得 r1,最后执行 r1+r3 得表达式最后结果B.先执行 a+b 得 r1,再执行(d+e)得 r2,再执行 c*r2 得 r3,最后执行 r1+r3 得表达式最后结果C.先执行(d+e)得 r2,再执行 c 木 r2 得 r3,再执行 b+r3 得 14,最后执行 a+14 得表达式最后结果D.先执行 a+b 得 r1,再执行 r1+c 得 r5,再执行(d+e)得 r2,最后执行 r5*r2 得表达式最后结果16.设有定义语句:double
7、x=123456:则语句 printf(“62f,30fn“,x,x);的输出结果是( )。(分数:2.00)A.12346,1230B.12345,123C.12346,123D.12345,12317.有如下程序#includestdiohmain()int x=072:printf(“dn“,x+1);程序运行后的输出结果是( )。(分数:2.00)A.073B.73C.142D.5918.有以下程序#includestdi0hvoid main()double x=314159:printf(“fn“,(int)(x*1000+05)(dfuble)1000);程序运行后的输出结果是(
8、 )。(分数:2.00)A.3142000B.3141000C.3143000D.314000019.以下选项中错误的是( )。(分数:2.00)A.printf(“sn“,s);B.printf(“dcn“,s,s);C.printf(“cn“,s-32);D.pfinff(“cn“,65);20.若有定义:int a,b,c;,想通过语句:scanf(“d,dd“,&a,&b,&(分数:2.00)A.;把 1、2、3 分别输入给变量 a、b、c,则正确的键盘输入是()。B.1,2,3回车C.1,2tab3回车D.1回车tab2tab3E.D21.有以下程序#includestdiohmai
9、n()int a=1,b=2,c=3,d=4,r=0;if(a!=1)r=1;if(b=2)r=2;else if(c!=3)r=3;else if(d=4)r=4;pfinff(“dn“,r);执行后的输出结果是( )。(分数:2.00)A.0B.4C.1D.222.若有如下形式的函数 int fun(int a,int*p,int n)调用函数之前需要对函数进行声明,则以下选项中错误的是( )。(分数:2.00)A.int fun(int,int,int);B.int fun(int a,int*p,int n);C.int fun(int a,int*,int);D.int fun(in
10、t,int*,int);23.有以下程序#includestdiohmain()int i,j=0;char a=“abl23c4d56efTgh89“;for(i=0;ai;i+)if(ai=0&ai=9)aj+j=ai;aj=0;pfinff(“s“,a);程序执行后的输出结果是( )。(分数:2.00)A.123456789abcdefghB.abcdefghC.123456789D.1234567896effgh8924.有以下程序#includestdiohmain()int a=-2,b=2;for(;,+a&-b;)printf(“d,d,“,a,b);程序执行后的输出结果是(
11、)。(分数:2.00)A.0,1,B.-1,1,0,1,C.-1,1,0,0,D.-1,1,25.若有以下程序#includestdiohint fun(int x)int y;y=x+:return y;main()int k;for(k=0;k3;k+)pfinff(“d,“,fun(k)+k);k+;执行后的输出结果是( )。(分数:2.00)A.1,5,B.0,6,C.0,4,D.1,7,26.有以下程序#includestdiohint*f(int*s)s+=2;s1+=6;*s=7;return s;main()int a5=1,2,3,4,5,*p=a;p=f(p);pfinff
12、(“d,d,d,d“,a0,a1,*p,P1);程序执行后的输出结果是( )。(分数:2.00)A.1,2,7,10B.7,8,7,8C.1,2,1,2D.7,10,7,1027.有以下程序#includestdiohmain()int a=6,i;for(i=1;i=3;i+)if(a=5)break;if(a2)a+=2;continue;a=(a-3,a+4);pfinff(“d,d“,i,a);程序执行后的输出结果是( )。(分数:2.00)A.0,6B.1,6C.8,6D.4,228.以下表达式中,其值不等于数值 3 的是( )。(分数:2.00)A.o+3B.D-AC.3-0D.d
13、-a29.有以下程序#includestdiohvoid fun(int a,int n,int flag)int i=0,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(flag)if(aiaJ)t=ai;ai=aj;aj=t;elseif(aiaj)t=ai;ai=aj;aj=t;main()int c10=7,9,10,8,3,5,1,6,2,4,i;fun(c,10,0);fun(c,5,1);for(i=0;i10;i+)printf(“d,“,Ci);程序运行结果正确的是( )。(分数:2.00)A.6,7,8,9,10,5,4,3,2,1,B.5,4
14、,3,2,1,6,7,8,9,10,C.6,7,8,9,10,1,2,3,4,5,D.1,2,3,4,5,6,7,8,9,10,30.下面关于编译预处理的命令行中,正确的是( )。(分数:2.00)A.#define int INTB.#define eps0001C.#DEFINE TRUED.#define E28831.有如下程序#includestdiohmain()int i,data;scanf(“d“,&data);for(i=0;i5;i+)if(idata&i2)|(idata&i3=0)continue;printf(“d,“,i);程序运行时,从键盘输入:13回车后,程序
15、输出结果为( )。(分数:2.00)A.0,24,B.1,3,5,C.0,1,23,4,5,D.0,1,2,3,32.设变量 n 已正确定义并赋值,以下不能实现自然数 1 到 n 累加求和的程序段是( )。(分数:2.00)A.int sum=1,i=0; while(i=n) i+;sum+=i;B.int sum=0,i=1; while(i=n) sum+=i;i+;C.int sum=0,i=0; while(in) i+;sum+=i;D.int sum=1,i=1; while(in) i+;sum+=i;33.关于数组和指针,以下说法错误的是( )。(分数:2.00)A.数组名本
16、身就是一个指针,指向数组内存的起始位置B.既可以读人数据到数组中,也可以读入数据到未赋初值的指针中C.可以让一个指针指向一个同类型的数组D.指针可以指向同类型的数组中的任意一个元素34.有下列程序#includestdiohint*f(int*s)s+=1;s1+=6;*s+=7;return s;main()int a5=1,2,3,4,5,*p;p=f(&a1);printf(“d,d,d,d“,a1,a2,*p,P1);程序执行后的输出结果是( )。(分数:2.00)A.3,9,10,5B.2,16,4,5C.2,10,10,5D.10,9,4,535.有以下程序#includestdi
17、ohdouble fun1(double a,int n)int i;double sum=00;for(i=0;in;i+)sum+=ain;return sum;void fun2(double a,in tn,double*p,double*q)int i;*p=*q=a0;for(i=1;in;i+)if(ai*p)*p=ai;else if(ai*q)术 q=ai;voicmain()double a=1,2,3,4,5;double mx,mn,av;av=fun1(a,5);fun2(a,5,&mx,&mn);printf(“fffn“,av,mx,mn);程序的运行结果是( )
18、。(分数:2.00)A.500000030000001000000B.300000050000001000000C.100000050000003000000D.30000001000000500000036.设有函数说明语句:int fun(int,int);以及函数指针定义语句:int(*f)(int,int);若要使函数指针指向函数 fun 的入口地址,以下选项中正确的是( )。(分数:2.00)A.f=fun();B.*f=fun;C.f=fun;D.*f=fun();37.有如下程序#includestdiohstruet groupint first,second,third;st
19、ruet group get_rain_maxsum(int*array,int len)int i;struet group re$;resfirst=array0;ressecond=array0;resthird=array0;for(i=1;ilen;i+)if(arrayiresfirst)resfirst=arrayi;if(arrayiressecond)ressecond=arrayi;resthird+=arrayi;return res;main()int array5=9,1,3,4;struet group res=get_min_max_sum(array,5);pr
20、intf(“main=d,max=d,sum=dn“,resfirst,ressecond,resthird);程序运行后的输出结果是( )。(分数:2.00)A.min=0,max=9,sum=17B.min=1,max=9,sum=16C.min=1,max=4,sum=15D.min=0,max=4,sum=1638.若有语句:void*p=malloc(80);,则以下叙述错误的是( )。(分数:2.00)A.可以通过指针 p 直接访问用 malloc 开辟的这块内存B.P 所指内存可以通过强制类型转换当作具有 20 个 int 型元素的一维数组来使用C.P 所指内存可以通过强制类型转
21、换当作具有 10 个 double 型元素的一维数组来使用D.P 所指内存可以通过强制类型转换当作具有 80 个 char 型元素的一维数组来使用39.设有如下类型说明语句 typedef struetint num;struetint y,m,d;date;PER;则以下定义结构体数组并赋初值的语句中错误的是( )。(分数:2.00)A.PER st2=1001,2008,8,1,1002,2006,5,20;B.PER st2=1001,2008,8,1,1002,2006,5,20;C.PER st2=1001,2008,8,1,1002,2006,5,20;D.PER st2=1001
22、,2008,8,1,1002,2006,5,20;40.C 语言中标准库函数 fputs(str,fp)的功能是( )。(分数:2.00)A.从 str 指向的文件中读一个字符串存入 fp 指向的内存B.把 str 所指的字符串输出到 fp 所指的文件中C.从 fp 指向的文件中读一个字符串存人 str 指向的内存D.把 fp 指向的内存中的一个字符串输出到 str 指向的文件二、程序填空题(总题数:1,分数:2.00)41.函数 fun 的功能是:将一副扑克牌编号为 1,2,3,53,54,以某种特定的方式洗牌,这种方式是将这副牌分成两半,然后将它们交叉,并始终保持编号为 1 的牌在最上方,
23、如第一次这样洗牌后的结果为:1,28,2,29,53,27,54。两次洗牌后的结果为:1,41,28,15,2,42,53,40,27,14,54 程序的功能是:输出经过 n 次这样洗牌后的结果。请在程序的下画线处填入正确的内容,并把下画线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!试题程序:#includestdiohvoid fun(int a55,int n)int i,k;*found*int【1】55;for(i=0;in;i+)for(k=1;k=27;k+)b2*k-1=ak;*found*b【2】*k=
24、ak+27;for(k=1;k=54;k+)*found*ak=【3】;main()int m,a55,i;for(i=1;i55;i+)ai=i;pfinff(“请输入洗牌次数:“);scanf(“d“,&m);fun(a,m);for(i=1;i55;i+)printf(“d,“,ai);printf(“n“);(分数:2.00)_三、程序修改题(总题数:1,分数:2.00)42.下列给定程序中函数 fun 的功能是:逐个比较 p、q 所指两个字符串对应位置上的字符,并把 ASCII 值大或相等的字符依次存放到 c 所指的数组中,形成一个新的字符串。例如,若主函数中 a 字符串为“aBCD
25、eFgH”,b 字符串为“Abcd”,则 c 中的字符串应为“aBcdeFgH”。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1C 中,不得增行或删行,也不得更改程序的结构!#includestdioh#includestringhvoid fun(char*p,char*q,char*c)*found*int k=1:*found*while(*p!=*q)if(*p*q)ck=*q;else ek=*p;if(*p)p+;if(*q)q+;k+;main()char a10=“aBCDeFgH“,b10=“ABcd“,c80=0;fun(a,b,c);prin
26、tf(“The string a:“);puts(a);printf(“The string b:“);puts(b);printf(“The result:“);puts(c);(分数:2.00)_四、程序设计题(总题数:1,分数:2.00)43.编写函数 fun,其功能是:求 ss 所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符为 1,则输出 3。注意:部分源程序在文件 PROG1C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。#ineludestdioh#includestringh#de
27、fineM81int fun(char*ss,char c)main()char aM,ch;void NONO();printf(“nPlease enter a string:“);gets(a);printf(“nPlease enter a char:“);ch=getehar();printf(“nThe number of the char is:dn“,fun(a,ch);NONO();void NONO()*本函数用于打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。*int i;FILE*rf,*wf;char aM,bM,ch;rf=fopen(“indat“
28、,“r“);wf=fopen(“outdat“,“w“);for(i=0;i10;i+)facnf(rf,“s“,a);fscanf(rf,“s“,b);ch=*b;fprintf(wf,“c=dn“,ch,fun(a,ch);felose(rf);fclose(wf);(分数:2.00)_国家二级(C 语言)机试模拟试卷 144 答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.设数据结构 B=(D,R),其中 D:a,b,c,d,e,fR=(f,a),(d,b),(e,d),(c,e),(a,c)该数据结构为( )。(分数:2.00)A.线性
29、结构 B.循环队列C.循环链表D.非线性结构解析:解析:数据的逻辑结构有两个要素:一是数据元素的集合,通常记为 D;二是 D 上的关系,它反映了 D 中各数据元素之间的前后件关系,通常记为 R。即一个数据结构可以表示成 B=(D,R)。其中 B 表示数据结构。为了反映 D 中各数据元素之间的前后件关系,一般用二元组来表示。例如,假设 a 与 b 是 D 中的两个数据,则二元组(a,b)表示 a 是 b 的前件,b 是 a 的后件。如果一个非空的数据结构满足下列两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。如果一个数据结构不是线性结构,则称之
30、为非线性结构。根据上述理论,本题中 f 为根结点,每个结点有一个前件和一个后件,符合线性结构的定义。故本题答案为 A 选项。2.下列叙述中错误的是( )。(分数:2.00)A.循环队列空的条件是队头指针与队尾指针相同 B.若二叉树没有叶子结点,则为空二叉树C.带链栈的栈底指针是随栈的操作而动态变化的D.若带链队列中只有一个元素,则队头指针与队尾指针必定相同解析:解析:在循环队列中,当 front=rear 时,不能确定是队列满还是队列空。在实际使用循环队列时,为了能区分队列满还是队列空,通常还需要增加一个标志 s。当 s=0 时表示队列空,当 s=1 且 front=rear时表示队列满。故本
31、题答案为 A 选项。3.某带链栈的初始状态为 top=bottom=NuLL,经过一系列正常的入栈与退栈操作后,top=bottom=20。该栈中的元素个数为( )。(分数:2.00)A.1 B.0C.20D.不确定解析:解析:带链的栈是具有栈属性的链表。线性链表的存储单元是不连续的,为把存储空间中一些离散的空闲存储结点利用起来,把所有空闲的结点组织成一个带链的栈,称为可利用栈。线性链表执行删除操作运算时,被删除的结点可以“回收”到可利用栈,对应于可利用栈的入栈运算,线性链表执行插入运算时,需要一个新的结点,可以在可利用栈中取栈顶结点,对应于可利用栈的退栈运算。可利用栈的入栈运算和退栈运算只需
32、要改动 top 指针即可。当 top=bottom=20 时链栈中的元素个数为 1。故本题答案为 A 选项。4.设一棵度为 3 的树,其中度为 2,1,0 的结点数分别为 3,1,6。该树中度为 3 的结点数为( )。(分数:2.00)A.1 B.2C.3D.不可能有这样的树解析:解析:根据题目有 6 个度为 0 的结点:1 个度为 1 的结点: 3 个度为 2 的结点:因此最后度为 3 的结点有 1 个:5.下面描述错误的是( )。(分数:2.00)A.模块的独立性与模块的信息隐蔽和局部化无关 B.内聚性和耦合性是模块独立程度的定性度量标准C.一个模块的内聚性越高则该模块的独立性越强D.一个
33、模块的耦合性越高则该模块的独立性越弱解析:解析:模块独立性的概念是抽象、模块化、信息隐蔽和局部化的直接结果。模块的独立性是指软件模块的编写和修改应使其具有独立功能,且与其他模块的关联尽可能少。故本题答案为 A 选项。6.下面属于黑盒测试方法的是( )。(分数:2.00)A.错误推测法 B.基本路径测试C.判定覆盖D.条件覆盖解析:解析:黑盒测试方法也称为功能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。白盒测试方法主要有逻辑覆盖测试(语句覆盖、路径覆盖、判断覆盖、条件覆盖)、基本路径测试等。故本
34、题答案为 A 选项。7.下面模型中为概念模型的是( )。(分数:2.00)A.实体一联系模型 B.层次模型C.关系模型D.网状模型解析:解析:数据模型按照不同的应用层次分为 3 种类型:概念数据模型、逻辑数据模型、物理数据模型。概念数据模型有实体联系模型(ER 模型)、面向对象模型及谓词模型;逻辑数据模型有层次模型、网状模型、关系模型和面向对象模型。故本题答案为 A 选项。8.学生关系模式中有 D(D#,Dn,D1,DAddr。)(其属性分别为系编号、系名称、系主任和系地址)和S(S#,Sn,SG,Date,Maj,D#)(其属性分别为学号、姓名、性别、入学日期、专业和系编号)两个关系,关系
35、S 的主键(码)是 S#,关系 S 的外键(码)是( )。(分数:2.00)A.D# B.MajC.D1D.Dn解析:解析:在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。表 A 中的某属性集是某表 B的键,则称该属性集为 A 的外键或外码。故本题答案为 A 选项。9.关系的实体完整性要求关系中不能为空的属性是( )。(分数:2.00)A.主键属性 B.外键属性C.全部属性D.候选键属性解析:解析:关系模型中可以有 3 类完整性约束:实体完整性约束、参照完整性约束和用户定义的完整性约束。实体完整性约束是指若属性 M 是关系的主键,则属性 M 中的属性值不能为空值。故本题答案为 A 选项
36、。10.学生选修课程的关系模式为 SC(S#,Sn,Sd,Sa,C#,G)(其属性分别为学号、姓名、所在系、年龄、课程号和成绩);C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课)。关系模式中包含对主属性部分依赖的是( )。(分数:2.00)A.S#Sd B.(S#,C#)CC.C#CnD.C#P#解析:解析:若 XY,但 Y 不完全函数依赖于 X,则称 Y 对 X 部分依赖。关系模式 Sc 中,主键为(S#,C#),但显然有 S#Sd,S#Sa,存在非主属性对主属性的部分依赖。故本题答案为 A 选项。11.以下叙述中错误的是( )。(分数:2.00)A.main()是 C 语言主函
37、数的起始B.main()作为主函数必须位于源程序的起始位置行 C.main()是 C 程序执行的起始行D.main 是不可替代的主函数名解析:解析:C 语言规定必须用 main 作为主函数名,选项 D 正确;main()是 C 语言中主函数的起始行,也是 C 程序执行的起始行,选项 A、C 正确;main()作为主函数可以在源程序的任意位置,但是程序执行必须从 main()函数开始,选项 B 错误,本题答案为 B12.以下叙述中错误的是( )。(分数:2.00)A.在一个程序中,每个模块均可以独立编译运行 B.程序“模块化”有利于任务的分解简化C.允许对函数单独进行编译,是 C 语言实现“模块
38、化”的基础D.采用模块化结构,可以提高编程效率解析:解析:在程序设计时,用一个个小模块来实现不同的功能,每个程序设计人员分别完成一个或多个小模块,称这样的程序设计方法为“模块化”。由一个个功能模块构成的程序结构称为模块化结构,使用模块化结构程序设计,有利于任务的分解简化,选项 B 正确;C 语言允许对函数单独进行编译,从而可以实现模块化,选项 C 正确;采用模块化结构,可以使不同模块的程序员分别编写和调试,大大提高了编程效率,选项 D 正确;在 C 语言程序中,每个模块并不一定能够单独编译运行,选项 A 错误,本题答案 A。13.以下关于注释的叙述中错误的是( )。(分数:2.00)A.注释的
39、边界符号“”和“*”之间不允许加入空格B.C 语言允许注释出现在程序中任意合适的地方C.注释的内容仅用于阅读,对程序的运行不起作用D.注释的边界符号“*”和“*”必须成对出现且可以嵌套 解析:解析:在编写程序时可以在程序中加入注释,以说明变量的含义,在添加注释时,注释内容必须放在符号“*”和“*”之间,“*”和“*”必须成对出现,“”与“*”之间不可以有空格,选项 A 正确;注释可以用英文,可以用中文,可以出现在程序中任意合适的地方,选项 B 正确;注释部分只是用于阅读,对程序的运行不起作用,选项 C 正确;使用“*”和“*”的注释之间不可再嵌套“*”和“*”,选项 D 错误,本题答案为 D。
40、14.以下是正确 C 语言标识符的是( )。(分数:2.00)A._8_ B.8C.8D.-8-解析:解析:合法 C 语言的标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,选项 A 正确;符号不合法,选项 B 错误;符号不合法,选项 C 错误;一符号不合法,选项 D 错误;本题答案为 A。15.算术运算符和圆括号有不同的运算优先级,对于表达式:a+b+c*(d+e),关于执行顺序,以下说法正确的是( )。(分数:2.00)A.先执行(d+e)得 r2,再执行 c*r2 得 r3,再执行 a+b 得 r1,最后执行 r1+r3 得表达式最后结果B.先执行
41、 a+b 得 r1,再执行(d+e)得 r2,再执行 c*r2 得 r3,最后执行 r1+r3 得表达式最后结果 C.先执行(d+e)得 r2,再执行 c 木 r2 得 r3,再执行 b+r3 得 14,最后执行 a+14 得表达式最后结果D.先执行 a+b 得 r1,再执行 r1+c 得 r5,再执行(d+e)得 r2,最后执行 r5*r2 得表达式最后结果解析:解析:题意表达式中,圆括号的优先级最高,乘法运算符次之,加法运算符最低,同优先级中,加法运算符的结合性从左向右结合,所以题意中的表达式执行顺序是:先执行 a+b 得 r1,再执行(d+e)得r2,再执行 c*r2 得 r3,最后执行
42、 r1+r3 得表达式最后结果,本题答案为 B。16.设有定义语句:double x=123456:则语句 printf(“62f,30fn“,x,x);的输出结果是( )。(分数:2.00)A.12346,1230B.12345,123C.12346,123 D.12345,123解析:解析:对于 double 类型的实数,可以在 printf()函数的格式化字符串中使用“n 1 n 2 ”的形式来指定输出宽度(n 1 和 n 2 分别代表一个整常数),其中 n 1 指定输出数据的宽度(包括小数点),n 2 指定小数点后小数位的位数,n 2 也称为精度;对于格式字符f,当输出数据的小数位多余
43、 n 2 位时,截取右边多余的小数,并对截取部分的第一位小数做四舍五入处理;当输出数据小数位少于 n 2 时,在小数的最右边补 0,使得输出数据的小数部分宽度为 n 2 ;如果指定“n 1 0”格式,则不输出小数点和小数部分;题意中,62f 表示输出 6 位宽度,2 位小数,所以被截取的小数位:0006 四舍五入,结果为 12346:30f 表示输出 3 位宽度,0 位小数,结果为 123,本题答案为 C17.有如下程序#includestdiohmain()int x=072:printf(“dn“,x+1);程序运行后的输出结果是( )。(分数:2.00)A.073B.73C.142D.5
44、9 解析:解析:题意中 x 是一个整型变量,赋值为 072,以 0 开头的整数是八进制的表示形式,printf()函数中,格式字符d 表示以十进制形式输出 x+1,所以需要将 072 转换成十进制数:7*8+2=58,输出 x+1为 59,所以本题答案为 D。18.有以下程序#includestdi0hvoid main()double x=314159:printf(“fn“,(int)(x*1000+05)(dfuble)1000);程序运行后的输出结果是( )。(分数:2.00)A.3142000 B.3141000C.3143000D.3140000解析:解析:根据算术表达式和运算符的
45、优先级与结合性,对于题意表达式:int(x*1000+05)(double)1000,首先计算 x*1000,由于 x 是 double 类型,1000 是整型,所以 x*1000 的结果默认是double 类型:314159;再加 05 后执行 int 的强制转换,结果为 3142;分母(double)1000 强制转换为 double 类型,此时 3142(double)1000 中,3142 需要转换成 double 类型,然后除以 1000,结果为3142000,保留小数点后 6 位,本题答案为 A。19.以下选项中错误的是( )。(分数:2.00)A.printf(“sn“,s);
46、B.printf(“dcn“,s,s);C.printf(“cn“,s-32);D.pfinff(“cn“,65);解析:解析:单引号括起来的单个字符,属于字符常量,对应的格式字符是c,双引号括起来的若干字符,属于字符串常量,对应的格式字符是s,选项 A 错误;d 是整型数据的格式字符,由于字符常量或变量也可以作为整型数,也可以作为整数参与算术运算,所以选项 B、C 正确;同理,整数也可以作为字符常量,选项 D 正确;本题答案为 A。20.若有定义:int a,b,c;,想通过语句:scanf(“d,dd“,&a,&b,&(分数:2.00)A.;把 1、2、3 分别输入给变量 a、b、c,则正确的键盘输入是()。B.1,2,3回车 C.1,2tab3回车D.1回车tab2tab3E.D解析:解析:题意中,输入语句 scanf()的格式控制字符串中,第
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1