2021-2022年湖南省怀化市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021-2022年湖南省怀化市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021-2022年湖南省怀化市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021-2022年湖南省怀化市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021-2022年湖南省怀化市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年湖南省怀化市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.算术运算符和圆括号有不同的运算优先级,对于表达式“a+b+c*(d+e)”,关于执行顺序,以下说法正确的是()。

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”得r4,最后执行“a+r4”得表达式最后结果

D.先执行“a+b”得r1,再执行“r1+c”得r5,再执行“(d+e)”得r2,最后执行“r5*r2”得表达式最后结果

2.下列不属于过程设计工具中图形工具的是()。

A.N—SB.PADC.程序流程图D.PDL

3.恢复系统默认菜单的命令是()。

A.SETMENUTODEFAULT

B.SETSYSMENUTODEFAULT

C.SETSYSTEMMENUTODEFAULT

D.SETSYSTEMTODEFAULT

4.程序运行后的输出结果是()。A.10B.30C.0D.64

5.下述程序向文件输出的结果是______。#include<stdio.h>voidmain(){FILE*fp=fopen("TESY","wb");fprintf(fp,"%d%5.0f%c%d",58,76273.0,'-',2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件为二进制文件而不可读

6.以下叙述中正确的是()。

A.结构体变量中的成员可以是简单变量、数组或指针变量

B.不同结构体的成员名不能相同

C.结构体定义时,其成员的数据类型可以是本结构体类型

D.结构体定义时,类型不同的成员项之间可以用逗号隔开

7.下述程序的运行结果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正数B.负数C.零D.不确定的值

8.若有定义语句:“intyear=2009,*p=&year;”,以下不能使变量year中的值增至2010的语句是()。

A.*p+=1;B.(*p)++;C.++(*p);D.*++P

9.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A.10B.8C.6D.4

10.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。A.log2+1

B.log2(n-1)

C.log2n

D.log2(n+1)

11.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储()。

A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法

12.设”inta=12;”,则执行完语句”a+=a*a;”后,a的值是()。

A.12B.144C.156D.288

13.若有以下定义:floatx;inta,b,c=2;,则正确的switch语句是()

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch(int(x)){case1:printf("*\n");case2:printf("**\n");}

C.switch(a+b){case1:printf("*\n");case1+2:printf("**\n");}

D.switch(a+B){case1:printf("*\n");casec:printf("**\n");}

14.利用fseek函数可实现的操作是()。

A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确

15.

16.在位运算中,操作数左移一位,其结果相当于A.A.操作数乘以2

B.操作数除以2

C.操作数除以4

D.操作数乘以4

17.有以下程序:#include<stdio.h>main(){inta=10,b=11;if(++a==b++) printf(“T”);else printf(“F”);printf(“a=%d,b=%d\n”,a,b);}程序运行后的输出结果是()。

A.Fa=11,b=11B.Fa=10,b=12C.Ta=10,b=11D.Ta=11,b=12

18.下列条件语句中,功能与其他语句不同的是()。

A.if(a)printf("%d\n",x);elseprintf("%d\n",y);

B.if(a==O)printf("%d\n",y);elseprintf("%d\n",x);

C.if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);

D.if(a==0)printf("%d\n",x);elseprintf("%d\n",y);

19.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是()。A.p->next=s;s->next=p->next;

B.s->next=p->next;p->next=s;

C.p->next=s;p->next=s->next;

D.p->next=s->next;p->next=s;

20.递归式的先序遍历一个n节点,深度为d的二叉树,则需要栈空间的大小为()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

二、2.填空题(20题)21.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

22.在面向对象程序设计中,从外面看只能看到对象有外部特征,而不知道也无须知道数据的具体结构以及实现操作的算法,这称为对象的______。

23.若有定义:inta=4,b=5,c=6;然后顺序执行下列语句后,变量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);

24.假定变量x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式【】。

25.在对文件进行操作的过程中,若要是文件位置的指针回到文件的开头,应使用的函数是【】。

26.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为【】。

27.表达式pow(2.8,sqrt(float(x)))值的数据类型为______型。

28.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。

29.\13'在内存中占1个字节,"\12"在内存中占______个字节。

30.[]的任务是诊断和改正程序中的错误。

31.请用位运算实现下述目标(设16位二进制数的最低位为零位):

(1)输出无符号正整数m的第i个二进制位的数值。

(2)将m的第i个二进制位置1,其余的位不变,然后输出m。

#include"stdio.h"

【】

main()

{

unsignedk,i,m=0;

scanf("%d%d",&m,&i);

k=【】;

printf("%d\n",k);

k=pow(2,i);

m=【】;

printf("%d\n",m);

}

32.若从键盘输入58,则以下程序输出的结果是______。

main{)

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

33.以下程序通过函数SunFun求这里f(x)=x2+1,由F函数实现。请填空。

main()

{printf("Thesum=%d\n",SunFun(10));}

SunFun(intn)

{intx,s=0;

for(x=0;x<=n;x++)s+=F(【】);

returns;

}

F(intx)

{return(【】);}

34.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统一管理与控制。

35.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

printf("a=%db=%dmax=%d\n",a,b,c);

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y;

【】;

}

36.对数据元素之间的逻辑关系的描述是()。

37.下面程序的功能是根据公式e=1+1/1!+1/2!+1/3!+1/4!+...计算e的近似值,精度要求为10-5。请填空。

main()

{intn;

doublee=1.0,t=1.0;

for(n=1;【】n++);

{【】e+=t;}

printf("%f\n",e);}

38.以下程序运行后的输出结果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b+*;break;

}

printf("%d%d\n",a,b);

}

39.以下程序运行后的输出结果是______。

structNODE

{intk;

structNODE*link;

};

main()

structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q)

{p->k-++i;p++;

q->k-i++;q--;

}

q->k=i;

for(i-0;i<5;i++)

printf("%d",m[i].k);

printf("\n");

40.下面程序的运行结果是______。

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]]='A'+i+321;

sub(s,7,SLZE-1);

for(i=0;i<SIZE;i++)printf("%c",s[i]);

printf("\n");}

sub(char*a,inttl,intt2)

{charCh;

while(t1<t2)

{ch=*(a+t

三、1.选择题(20题)41.下面程序段的输出为#nclude"stdio.h"main(){printf("%d\n",12<<2);}

A.0B.47C.48D.24

42.下列是用户自定义标识符的是

A._w1B.3_xyC.intD.LINE-3

43.设x,y均是int类型变量,则以下不正确的函数调用为______。

A.getchar();

B.putchar('\108');

C.scanf("%d%*2d%d",&x,&y);

D.putchar('\'');

44.若要“为读/写建立―个新的文本文件”,在fopen函数中应使用的文件方式是()

A.wB.wbC.w+D.wb+

45.有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i;fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行

A.2030B.2050C.3050D.3020

46.有以下程序intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;seanf("%d",&x);x=fun(x);printf("%d\n",x);}执行程序时,给变量x输入10,程序的输出结果是

A.55B.54C.65D.45

47.阅读如下程序段#include"stdio.h"main(){intx,a,b;scanf("%d",&x);a=b=x;for(;x!=0;){if(x<b)b=x;if(x>a)a=x;scanf("%d",&x);}printf("a=%d,b=%d\n",a,b);}

输入后输出结果是

A.a=7569,b=789B.a=5,b=365C.a=7,b=789D.a=7569,b=5

48.下列二维数组初始化语句中,不正确的是()。

A.intb[][2]={1,2,3,4,5,6,7};

B.intb[3][5]={0,0,0};

C.intb[][4]={{1,2},{3,4,5},{6}};

D.intb[3][2]={(1,2),(3,4),(5,6)};

49.以下程序的输出结果是longfun(intn){longs;if(n==1‖n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%1d\n",fun(3));}

A.1B.2C.3D.4

50.在printf的格式字符中,e格式字符的作用是()。

A.以十六进制无符号形式输出整数

B.以带符号的十进制形式输出整数

C.以指数形式输出实数

D.以字符形式输出,且只输出一个字符

51.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序运行后的输出结果是______。

A.8B.10C.7D.11

52.有以下函数fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}该函数的功能是______。

A.计算a和b所指字符串的长度之差

B.将b所指字符串连接到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小

53.为了避免嵌套的if-else的二义性,C语言钡定:else与______配对。

A.缩排位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if

54.设有如下程序#include<stdio.h>main(){int**k,*j,i=100;j=&i;k=&j;printf("%d\n",**k);}上述程序的输出结果是_______。

A.运行错误B.100C.i的地址D.j的地址

55.整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达是______。

A.X||YB.X|YC.X&YD.XY

56.有下列函数定义:fun(floath){printf("%f,%f\n",h,h*h);}该函数的类型是()。

A.int类型B.float类型C.void类型D.函数无类型说明,定义有错

57.以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:#include<stdio.h>findmax(int*s,intt,int*k){intp;for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])________;}main(){inta[10],i,k;for(i=0;i<10;i++)scanf("%d",&a[i]);findmax(a,10,&k);printf("%d,%d\n",k,a[k]);}

A.k=pB.*k=p-sC.k=p-sD.*k=p

58.对线性表进行二分法检索,其前提条件是()。

A.线性表以顺序方式存储,并按关键码值排好序

B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

59.字符串"\\\"ABCDEF\"\\"的长度是()。

A.15B.10C.7D.8

60.在计算机中,算法是指()。

A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法

四、选择题(20题)61.

62.以下定义语句中正确的是()。

A.

B.

C.

D.

63.

64.开发大型软件时,产生困难的根本原因是()

A.大系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重

65.

66.

67.

68.在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序只看做是

A.路径的集合B.循环的集合C.目标的集合D.地址的集合

69.若有定义:doublea=22;inti=0,k=18;,则不符合c语言规定的赋值语句是()。A.i=a%ll;B.i=(a+k)《=(i+k);C.a=a++,i++;D.i=!a;

70.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是()。

A.

B.

C.ab

D.a<<b

71.软件详细设计的主要任务是确定每个模块的()。

A.算法和使用的数据结构B.外部接口C.功能D.编程

72.

73.设有如下说明

typedefstruct

{intn;

charc;

doublex;

}STD;

则以下选项中,能正确定义结构体数组并赋初值的语句是

A.STDtt[2]={{1,’A’,62},{2,’B’,75}};B.STDtt[2]={1,"A",62,2,"B",75};

C.structtt[2]={{1,’A’},{2,’B’}};D.structtt[2]={{1,"A",62.5},{2,"B",75.0}};

74.(55)在设计程序时,应采纳的原则之一是()

A.程序结构应有助于读者理解

B.不限制goto语句的使用

C.减少或取消注解行

D.程序越短越好

75.有以下程序

#include<stdio.h>

main()

{charb=2;

printf("%d\n",b=b<<3);

}

程序的运行结果是

A.4B.8

C.16D.2000

76.下列叙述中错误的是()。

A.一个C语言程序只能实现一种算法

B.c程序可以由多个程序文件组成

C.C程序可以由一个或多个函数组成

D.一个c函数可以单独作为一个C程序文件存在

77.软件测试的目的是()。

A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误

78.

79.语句:“printf("%d",(a=)&&(b=-2));”的输出结果是()。

A.无输出B.结果是不确定C.-1D.1

80.

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(Z转换A,z转换a),其他字符不变。

请修改函数fun()中的错误,得出正确的结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。例如,若二维数组中的数据为:132333431424344415253545则一维数组中的内容应该是132333431424344415253545。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B题干表达式中,圆括号的优先级最高,乘法运算符次之,加法运算符最低。同优先级中,加法运算符的结合性从左向右结合,所以题干中的表达式执行顺序是:先执行“a+b”得r1,再执行“(d+e)”得r2,再执行“c*r2”得r3,最后执行“r1+r3”得表达式最后结果。故本题答案为B选项。

2.D\n常用的过程设计工具有图形工具(程序流程图、N-S图、PAD图、HIPO)、表格工具(判定表)、语言工具(PDL)。

\n

3.BB。【解析】考查菜单。在菜单中恢复系统菜单用的是SETSYSMENUTODEFAULT。所以答案选择B。

4.D[解析]本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2.第二次循环中,返回的x的值为4.所以s的值为8.第三次循环,返回的x的值为8.所以s的值为64.

5.C解析:fprintf函数工作时,多个数据间不会自珈口分隔符,选项A错误;浮点数的输出格式是“%5.0f”表明其小数部分输出0位,即没有输出,所以选项B也是错误的。

6.A结构体变量中的成员可以是简单变量、数组、指针变量或者结构体变量,选项A正确;不同结构体成员名可以相同,选项B错误;结构体定义时,其成员的数据类型不能是本结构体类型,选项C错误;结构体定义时,类型不同的成员项之间使用分号隔开,选项D错误。本题答案为A选项。

7.A本题考查符符串比较函数和两个字符串比较的原则这两个知识点。

(1)两字符串比较的原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大(2)strcmp(s1,s2)的返回值,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数。

8.D

9.C根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。

10.A

11.C

12.C

13.C

14.D解析:改变文件位置指针函数fseek()的功能:①改变文件的位置指针;②辅助实现文件的顺序读写;③辅助实现文件的随机读写。

15.A

16.A左移运算符“<<”是双目运算符,其功能是把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如,a<<4是把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

17.D自增运算符是将运算对象的值增1,它有前缀形式“++a”和后缀形式“b++”。其中“++a”表示首先将a的值自增1,然后表达式“++a”的值就是自增后a的值;而“b++”表示首先将b的值作为表达式的值,然后再将b的值自增1。本题中,a的初值为10,b的初值为11,则表达式“++a==b++”,等价于“11==11”,条件为真,所以输出“T”。if语句执行完后,a的值为11,b的值为12,输出“a=11,b=12”。故本题答案为D选项。

18.D解析:选项A、选项B和选项C都是在a的值为0的时候输出y,a不为0的时候输出x,而选项D是在a为0的时候输出x,a不为0的时候输出y。所以,4个选项中选项D符合题意。

19.B

20.D

21.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

22.封装性封装性解析:对象具有下列5个基本特点:①标识惟一性;②分类性:③多态性;④封装性;⑤模块独立性好。其中,封装性是指从外面看只能看到对象的外部特征,对象的内部特征即处理能力的实行和内部状态,对外是不可见的,对象的内部状态只能由其自身改变。

23.11解析:本题考查的是基本赋值运算符和赋值表达式。a-=(b-5)等价于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1确定为1。

24.x==0

25.rewind函数rewind函数解析:rewind函数的功能是使文件的位置指针回到文件的开头。

26.n(n-1)/2

27.floatfloat解析:在此表达式中x是float类型的变量,经过开方所得到的结果仍是float类型,再和2.8进行运算时,应该先将2.8转换成float类型再运算,最后结果仍是float型。

28.33解析:本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。

29.22解析:'\\13':表示八进制数13表示的ASCII字符,是一个字符,占一个字节;而”\\12”是个字符串,除了八进制数12表示的ASCII字符占一个字节外,还有在字符串的末尾加上串结束标志“'\\0'”,所以共有2个字节。

30.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试工具去找出软件错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。

31.#include"math.h"m>>i&1m|k

32.585858585858解析:在程序中,执行scanf()语句后,a被赋值为58。接着执行第一个if语句,因为,a=58>50,执行第一个订语句后面的输出语句,输出58;接着执行第二个if语句,因为,a=58>4O,执行第二个if语句后面的输出语句,输出58;接着执行第三个if语句,因为,a=58>30,执行第三个if语句后面的输出语句,输出58,所以最后的输出为585858。

33.xx*x+1或1+x*xx\r\nx*x+1或1+x*x解析:题目中要求从x=0开始将f(x)的值累加起来,直到x=10。在SunFun()函数中用了一个for循环,每循环一次将f(x)累加到s中,所以在本题的第一个空格处我们应该填x,然后x+1,共循环10次。F()函数的功能应该是求数学表达式f(x)的值,所以其返回值应该为x*x+1。

34.共享性共享性解析:数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共享性与低冗余性,数据的独立性,数据统一管理与控制。

35.&a&bmaxintxyreturn(z)

36.数据的逻辑结构数据的逻辑结构解析:数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。

37.t>=le-5;t=t/n;

38.2121解析:本题考查switch语句。首先x=1,执行switch(y),因为y=0,所以执行case0:a++;break;此时a=1执行case2:a++;b++;这时a=2,b=1;最后输出结果是21。

39.1343113431解析:本题看似考查链表的知识,其实只是考查了结构体数组。程序首先定义了一个结构体NODE,在主函数中声明了一个该结构体的数组m[5]和两个结构体指针p和q,并分别初始化p指向m(指向数组的第一个元素);q指向m+4(指向数组的最后一个元素)。接下来定义并初始化一个整型变量i为0。然后用一个while循环。在p和q不相等的时候执行循环体:让p所指结构体的成员k等于++i的值,然后让p指向下一个结构体;让q所指结构体的成员k等于i++的值,然后让q指向前一个结构体。i从0开始交替调用++i和i++,两个表达式的值依次分别为1和1、3和3……。所以当p叫循环结束时,实际循环了两次,p和q都指向m数组的中间位置m[2],i自增了4次,所以q->k=i;就是让m[2]k=4。所以程序最后输出为:13431。

40.本题主要考查了字符变量可参与的运算。因为字符在计算机中是以ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的ASCII码值比它对应的小写字母ASCII码值小32。\r\n\r\n

41.C

42.A本题主要考查标识符的定义。对标识符的定义是考试中常考的内容之一。标识符主要由数字、下画线和字母组成,其中数字不能放在首位,另外,用户自定义标识符时,不能将标识符定义为C语言中已定义的关键字,如int、while等。

根据上面对标识符的分析,我们不难看出本题的正确答案是A。在选项B中,3_xy以数字开头,不符合标识符定义的规定;在选项C中,int是C语言系统中已经定义了的关键字;在选项D中,LINE-3使用的数字、下画线和字母以外的字符,因此不正确。

43.B解析:八进制中的基本数为0~7,不可能出现8。

44.D

45.A

46.A解析:本程序考查的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10=55。

47.D解析:本题的功能是求出输入序列的最大值和最小值,并打印输出。

48.D解析:在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0;C语言规定,对于二维数组,只可以省略第1个方括号中的常量表达式,而不能省略第2个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。

在选项D)赋值表达式中,对每一维的元素赋初值应用{},而不是()。

49.A解析:该题考查的是递归函数的调用,题中读fun函数进行了递归调用,第1次调用:fun(3)n=3s=3-fun(2);第二次调用时:fun(2)n=2s=2返回第一次调用后,s=3-2=1。

50.C本题考查printf函数的格式。格式字符“e”或者“E”都表示以指数形式输出单精度或双精度数。

51.A解析:本题中定义一个全局变量a和一个局部变量a。局部变量和全局变量的不同在于,局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失,而全局变量是在函数外部任意位置上定义的变量,它的作用域从变量定义的位置开始,到整个源文件结束为止。若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,起作用的将是局部变量,与同名的全局变量不发生任何关系。在程序中首先定义了变量s并赋值为0,接着在嵌套的复合语句{}中定义了变量a并赋初值为5,接着执行语句s+=a+a;在这条语句中a加1,但表达式a++还是原来的值,故s=s+5,s为5,程序执行到外层,此时{}内定义的变量a不再有效,此时的变量a为{}之前定义的且初值为3,接着执行{}后面的语句s+=a++;相当于执行语句s=s+(++);即s=5+3,最后值为8,所以最后输出的s值为8。所以4个选项中A正确。

52.D解析:本题的函数fun的最后一个语句是“return(*a-*b);”,也就是返回指针a所指单元的值与指针b所指单元的值的差。显然这不可能是计算a和b所指字符串的长度之差,因此选项A的说法是错误的。由于函数中并没有出现。a=*b的赋值操作,所以选项B的连接字符串的说法也是错误的。同理,由于没有*a现*a=*b的赋值操作,所以选项C的复制字符串的说法也是错误的。排除了三个选项后,就可以断定正确选项是D。

53.B解析:在if语句中又包含一个或多个if语句称为if语句的嵌套。应当注意if与else的配对关系,在C语言中,从量内层开始,else总是与它上面最近的(未曾配对的)if配对。

54.B解析:j=&i,j的值就是i的地址,*j=100,将j的地址赋给k,这时*k=j,那么,**k=*j,而*j=100,所以**k=100,最后的打印结果应当为100。

55.D解析:“||”为或运算符,当其左右表达式中只要一个为非零则整个表达式的值1。是按位或,&是按位与,^是按位异或,这三位运算符是按值的二进制位来比较的。

56.A解析:本题考查默认函数的函数值的类型。在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型处理,因此,函数的类型为int类型。

57.D解析:k是—个指针,它的值是—个地址,要通过它为主函数的变量改变数据,必须使用*p,边样就可以把—个下标数赋给p指针指向的那个内存单元,所以横线处应填入*k=p。

58.A解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。

59.B解析:本题涉及字符串最基本的两个概念:①字符串的长度是指字符串中字符的个数,但不包括字符串结束符;②以反斜杠“\\”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“\\”连同后面的字符为一个长度。

60.CC。【解析】计算机算法是指解题方案的准确而完整的描述,它的基本特征分别是:可行性、确定性、有穷性和拥有足够的情报。

61.A

62.C解析:选项A中两个变量的定义应当以逗号隔开;选项B中a和b应当分开赋值;选项D中变量类型不相匹配,b应当是指针型变量。

63.D

64.A开发大型软件时,产生困难的原因有很多,如需求难以捕捉、员工水平有限、工作安排不太合理、进度控制难以把握、系统开发时间有限等元素,但这些都不是根本的原因,根本的原因是大系统的复杂性。

65.D

66.D

67.C

68.A本题考查软件的测试方法。

测试任何产品都有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。前一个方法称为黑盒测试,后一个方法称为白盒测试。

对于软件测试而言,黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试又称为功能测试。

与黑盒测试法相反,白盒测试法的前提是可以把程序看成装在一个透明的白盒里,也就是完全了解程序的结构和处理过程。测试人员依据程序内部逻辑结构的相关信息,设计或选择测试用例,对程序所有的逻辑路径进行穷举测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

69.A取模运算符“%”为二元运算符,具有左结合性,参与运算的量应均为整型,选项A)中的变量a是double型,所以选项A)不符合规定。

70.A本题考查的是位运算的知识,对于任何二进制数,和l进行异或运算会让其取反,而和0进行异或运算不会产生任何变化。

71.A解析:从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。详细设计的任务就是要决定各个模块的实现算法,并精确表达出这些算法。本题正确答案为选项A。

72.C

73.C本题主要考查关键字typedef的作用和结构体的初始化。C语言不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说明符,也就是说,允许由用户为已存在的数据类型名定义一个“别名”。类型定义符typedef即可用来完成此功能。说明新类型名的语句一般形式为:

typedef类型名标识符;

这里的“类型名”必须是在此语句之前已有定义的类型标识符,可以是任何基本类型、结构或联合类型符号。

在本题中,通过题目中程序的定义可以知道,STD为该结构体的类型,而不是结构体变量,因此,STDtt[2]的声明是正确的。

由于结构体的第三个成员变量为双精度型,而在选项A中,输入与其对应的值是整型,数据类型不匹配,因此不正确。

由于结构体的第二个成员变量为字符型,而在选项B和选项D中,用双引号引起,表示字符串,而不是单个字符,因此不正确。

在选项C中,虽然缺少一个元素,但系统提供了一个默认的值0。因此,这个赋值语句是正确的。

74.A注:和设计风格有关

75.C本题考查左移运算符(<<)的使用。左移运算符是将一个数的各二进制位全部左移若干位,右补0,题目中是将b的二进制数左移3位,右补0,初始时b的值为十进制数2,用二进制可以表示为00000010,左移3位,得到二进制数00010000,转换为十进制数为16。

76.A答案A

解析:一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法。

77.D软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能,也不是为了评估软件或改正错误,因此本题答案为D)。

78.A

79.D因为在逻辑表达式中,两边的赋值表达式都成立,即值为1,故选择D选项。

80.B81.(1)错误:while(*str!=ˊ@ˊ)

正确:while(*str)或while(*str!=ˊ\0ˊ)或while(*str!=0)

(2)错误:(*str++);

正确:str++

【解析】首先判断字母是否为小写字母,如果是小写字母则进行转换。

第一个标识下“while(*str!=ˊ@ˊ)”语句原意是str不指向字符串尾就进入下面的循环,所以对于指针判断不为结束符的语句应该是循环为真,所以应为“while(*str)”或“while(*str!=ˊ\Oˊ)”或“while(*str!=0)”。

第二个标识下“(*str)++;”是对字符内容加1,而原题是对字符位置加1,所以将其改为“str++;”。

82.

【解析】要将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,可以首先通过行循环,然后列循环取出二维数组中的每一个元素,并将其放入一维数组中,最后将一维数组的长度通过形参返回到主函数当中。

2021-2022年湖南省怀化市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.算术运算符和圆括号有不同的运算优先级,对于表达式“a+b+c*(d+e)”,关于执行顺序,以下说法正确的是()。

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”得r4,最后执行“a+r4”得表达式最后结果

D.先执行“a+b”得r1,再执行“r1+c”得r5,再执行“(d+e)”得r2,最后执行“r5*r2”得表达式最后结果

2.下列不属于过程设计工具中图形工具的是()。

A.N—SB.PADC.程序流程图D.PDL

3.恢复系统默认菜单的命令是()。

A.SETMENUTODEFAULT

B.SETSYSMENUTODEFAULT

C.SETSYSTEMMENUTODEFAULT

D.SETSYSTEMTODEFAULT

4.程序运行后的输出结果是()。A.10B.30C.0D.64

5.下述程序向文件输出的结果是______。#include<stdio.h>voidmain(){FILE*fp=fopen("TESY","wb");fprintf(fp,"%d%5.0f%c%d",58,76273.0,'-',2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件为二进制文件而不可读

6.以下叙述中正确的是()。

A.结构体变量中的成员可以是简单变量、数组或指针变量

B.不同结构体的成员名不能相同

C.结构体定义时,其成员的数据类型可以是本结构体类型

D.结构体定义时,类型不同的成员项之间可以用逗号隔开

7.下述程序的运行结果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正数B.负数C.零D.不确定的值

8.若有定义语句:“intyear=2009,*p=&year;”,以下不能使变量year中的值增至2010的语句是()。

A.*p+=1;B.(*p)++;C.++(*p);D.*++P

9.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A.10B.8C.6D.4

10.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。A.log2+1

B.log2(n-1)

C.log2n

D.log2(n+1)

11.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储()。

A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法

12.设”inta=12;”,则执行完语句”a+=a*a;”后,a的值是()。

A.12B.144C.156D.288

13.若有以下定义:floatx;inta,b,c=2;,则正确的switch语句是()

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch(int(x)){case1:printf("*\n");case2:printf("**\n");}

C.switch(a+b){case1:printf("*\n");case1+2:printf("**\n");}

D.switch(a+B){case1:printf("*\n");casec:printf("**\n");}

14.利用fseek函数可实现的操作是()。

A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确

15.

16.在位运算中,操作数左移一位,其结果相当于A.A.操作数乘以2

B.操作数除以2

C.操作数除以4

D.操作数乘以4

17.有以下程序:#include<stdio.h>main(){inta=10,b=11;if(++a==b++) printf(“T”);else printf(“F”);printf(“a=%d,b=%d\n”,a,b);}程序运行后的输出结果是()。

A.Fa=11,b=11B.Fa=10,b=12C.Ta=10,b=11D.Ta=11,b=12

18.下列条件语句中,功能与其他语句不同的是()。

A.if(a)printf("%d\n",x);elseprintf("%d\n",y);

B.if(a==O)printf("%d\n",y);elseprintf("%d\n",x);

C.if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);

D.if(a==0)printf("%d\n",x);elseprintf("%d\n",y);

19.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是()。A.p->next=s;s->next=p->next;

B.s->next=p->next;p->next=s;

C.p->next=s;p->next=s->next;

D.p->next=s->next;p->next=s;

20.递归式的先序遍历一个n节点,深度为d的二叉树,则需要栈空间的大小为()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

二、2.填空题(20题)21.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

22.在面向对象程序设计中,从外面看只能看到对象有外部特征,而不知道也无须知道数据的具体结构以及实现操作的算法,这称为对象的______。

23.若有定义:inta=4,b=5,c=6;然后顺序执行下列语句后,变量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);

24.假定变量x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式【】。

25.在对文件进行操作的过程中,若要是文件位置的指针回到文件的开头,应使用的函数是【】。

26.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为【】。

27.表达式pow(2.8,sqrt(float(x)))值的数据类型为______型。

28.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。

29.\13'在内存中占1个字节,"\12"在内存中占______个字节。

30.[]的任务是诊断和改正程序中的错误。

31.请用位运算实现下述目标(设16位二进制数的最低位为零位):

(1)输出无符号正整数m的第i个二进制位的数值。

(2)将m的第i个二进制位置1,其余的位不变,然后输出m。

#include"stdio.h"

【】

main()

{

unsignedk,i,m=0;

scanf("%d%d",&m,&i);

k=【】;

printf("%d\n",k);

k=pow(2,i);

m=【】;

printf("%d\n",m);

}

32.若从键盘输入58,则以下程序输出的结果是______。

main{)

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

33.以下程序通过函数SunFun求这里f(x)=x2+1,由F函数实现。请填空。

main()

{printf("Thesum=%d\n",SunFun(10));}

SunFun(intn)

{intx,s=0;

for(x=0;x<=n;x++)s+=F(【】);

returns;

}

F(intx)

{return(【】);}

34.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统一管理与控制。

35.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

printf("a=%db=%dmax=%d\n",a,b,c);

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y;

【】;

}

36.对数据元素之间的逻辑关系的描述是()。

37.下面程序的功能是根据公式e=1+1/1!+1/2!+1/3!+1/4!+...计算e的近似值,精度要求为10-5。请填空。

main()

{intn;

doublee=1.0,t=1.0;

for(n=1;【】n++);

{【】e+=t;}

printf("%f\n",e);}

38.以下程序运行后的输出结果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b+*;break;

}

printf("%d%d\n",a,b);

}

39.以下程序运行后的输出结果是______。

structNODE

{intk;

structNODE*link;

};

main()

structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q)

{p->k-++i;p++;

q->k-i++;q--;

}

q->k=i;

for(i-0;i<5;i++)

printf("%d",m[i].k);

printf("\n");

40.下面程序的运行结果是______。

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]]='A'+i+321;

sub(s,7,SLZE-1);

for(i=0;i<SIZE;i++)printf("%c",s[i]);

printf("\n");}

sub(char*a,inttl,intt2)

{charCh;

while(t1<t2)

{ch=*(a+t

三、1.选择题(20题)41.下面程序段的输出为#nclude"stdio.h"main(){printf("%d\n",12<<2);}

A.0B.47C.48D.24

42.下列是用户自定义标识符的是

A._w1B.3_xyC.intD.LINE-3

43.设x,y均是int类型变量,则以下不正确的函数调用为______。

A.getchar();

B.putchar('\108');

C.scanf("%d%*2d%d",&x,&y);

D.putchar('\'');

44.若要“为读/写建立―个新的文本文件”,在fopen函数中应使用的文件方式是()

A.wB.wbC.w+D.wb+

45.有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i;fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行

A.2030B.2050C.3050D.3020

46.有以下程序intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;seanf("%d",&x);x=fun(x);printf("%d\n",x);}执行程序时,给变量x输入10,程序的输出结果是

A.55B.54C.65D.45

47.阅读如下程序段#include"stdio.h"main(){intx,a,b;scanf("%d",&x);a=b=x;for(;x!=0;){if(x<b)b=x;if(x>a)a=x;scanf("%d",&x);}printf("a=%d,b=%d\n",a,b);}

输入后输出结果是

A.a=7569,b=789B.a=5,b=365C.a=7,b=789D.a=7569,b=5

48.下列二维数组初始化语句中,不正确的是()。

A.intb[][2]={1,2,3,4,5,6,7};

B.intb[3][5]={0,0,0};

C.intb[][4]={{1,2},{3,4,5},{6}};

D.intb[3][2]={(1,2),(3,4),(5,6)};

49.以下程序的输出结果是longfun(intn){longs;if(n==1‖n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%1d\n",fun(3));}

A.1B.2C.3D.4

50.在printf的格式字符中,e格式字符的作用是()。

A.以十六进制无符号形式输出整数

B.以带符号的十进制形式输出整数

C.以指数形式输出实数

D.以字符形式输出,且只输出一个字符

51.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序运行后的输出结果是______。

A.8B.10C.7D.11

52.有以下函数fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}该函数的功能是______。

A.计算a和b所指字符串的长度之差

B.将b所指字符串连接到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小

53.为了避免嵌套的if-else的二义性,C语言钡定:else与______配对。

A.缩排位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if

54.设有如下程序#include<stdio.h>main(){int**k,*j,i=100;j=&i;k=&j;printf("%d\n",**k);}上述程序的输出结果是_______。

A.运行错误B.100C.i的地址D.j的地址

55.整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达是______。

A.X||YB.X|YC.X&YD.XY

56.有下列函数定义:fun(floath){printf("%f,%f\n",h,h*h);}该函数的类型是()。

A.int类型B.float类型C.void类型D.函数无类型说明,定义有错

57.以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:#include<stdio.h>findmax(int*s,intt,int*k){intp;for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])________;}main(){inta[10],i,k;for(i=0;i<10;i++)scanf("%d",&a[i]);findmax(a,10,&k);printf("%d,%d\n",k,a[k]);}

A.k=pB.*k=p-sC.k=p-sD.*k=p

58.对线性表进行二分法检索,其前提条件是()。

A.线性表以顺序方式存储,并按关键码值排好序

B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

59.字符串"\\\"ABCDEF\"\\"的长度是()。

A.15B.10C.7D.8

60.在计算机中,算法是指()。

A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法

四、选择题(20题)61.

62.以下定义语句中正确的是()。

A.

B.

C.

D.

63.

64.开发大型软件时,产生困难的根本原因是()

A.大系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重

65.

66.

67.

68.在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序只看做是

A.路径的集合B.循环的集合C.目标的集合D.地址的集合

69.若有定义:doublea=22;inti=0,k=18;,则不符合c语言规定的赋值语句是()。A.i=a%ll;B.i=(a+k)《=(i+k);C.a=a++,i++;D.i=!a;

70.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是()。

A.

B.

C.ab

D.a<<b

71.软件详细设计的主要任务是确定每个模块的()。

A.算法和使用的数据结构B.外部接口C.功能D.编程

72.

73.设有如下说明

typedefstruct

{intn;

charc;

doublex;

}STD;

则以下选项中,能正确定义结构体数组并赋初值的语句是

A.STDtt[2]={{1,’A’,62},{2,’B’,75}};B.STDtt[2]={1,"A",62,2,"B",75};

C.structtt[2]={{1,’A’},{2,’B’}};D.structtt[2]={{1,"A",62.5},{2,"B",75.0}};

74.(55)在设计程序时,应采纳的原则之一是()

A.程序结构应有助于读者理解

B.不限制goto语句的使用

C.减少或取消注解行

D.程序越短越好

75.有以下程序

#include<stdio.h>

main()

{charb=2;

printf("%d\n",b=b<<3);

}

程序的运行结果是

A.4B.8

C.16D.2000

76.下列叙述中错误的是()。

A.一个C语言程序只能实现一种算法

B.c程序可以由多个程序文件组成

C.C程序可以由一个或多个函数组成

D.一个c函数可以单独作为一个C程序文件存在

77.软件测试的目的是()。

A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误

78.

79.语句:“printf("%d",(a=)&&(b=-2));”的输出结果是()。

A.无输出B.结果是不确定C.-1D.1

80.

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(Z转换A,z转换a),其他字符不变。

请修改函数fun()中的错误,得出正确的结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。例如,若二维数组中的数据为:132333431424344415253545则一维数组中的内容应该是132333431424344415253545。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B题干表达式中,圆括号的优先级最高,乘法运算符次之,加法运算符最低。同优先级中,加法运算符的结合性从左向右结合,所以题干中的表达式执行顺序是:先执行“a+b”得r1,再执行“(d+e)”得r2,再执行“c*r2”得r3,最后执行“r1+r3”得表达式最后结果。故本题答案为B选项。

2.D\n常用的过程设计工具有图形工具(程序流程图、N-S图、PAD图、HIPO)、表格工具(判定表)、语言工具(PDL)。

\n

3.BB。【解析】考查菜单。在菜单中恢复系统菜单用的是SETSYSMENUTODEFAULT。所以答案选择B。

4.D[解析]本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2.第二次循环中,返回的x的值为4.所以s的值为8.第三次循环,返回的x的值为8.所以s的值为64.

5.C解析:fprintf函数工作时,多个数据间不会自珈口分隔符,选项A错误;浮点数的输出格式是“%5.0f”表明其小数部分输出0位,即没有输出,所以选项B也是错误的。

6.A结构体变量中的成员可以是简单变量、数组、指针变量或者结构体变量,选项A正确;不同结构体成员名可以相同,选项B错误;结构体定义时,其成员的数据类型不能是本结构体类型,选项C错误;结构体定义时,类型不同的成员项之间使用分号隔开,选项D错误。本题答案为A选项。

7.A本题考查符符串比较函数和两个字符串比较的原则这两个知识点。

(1)两字符串比较的原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大(2)strcmp(s1,s2)的返回值,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数。

8.D

9.C根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。

10.A

11.C

12.C

13.C

14.D解析:改变文件位置指针函数fseek()的功能:①改变文件的位置指针;②辅助实现文件的顺序读写;③辅助实现文件的随机读写。

15.A

16.A左移运算符“<<”是双目运算符,其功能是把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如,a<<4是把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

17.D自增运算符是将运算对象的值增1,它有前缀形式“++a”和后缀形式“b++”。其中“++a”表示首先将a的值自增1,然后表达式“++a”的值就是自增后a的值;而“b++”表示首先将b的值作为表达式的值,

温馨提示

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

评论

0/150

提交评论