2022-2023年浙江省丽水市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第1页
2022-2023年浙江省丽水市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第2页
2022-2023年浙江省丽水市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第3页
2022-2023年浙江省丽水市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第4页
2022-2023年浙江省丽水市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年浙江省丽水市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下叙述中正确的是()。

A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以“#”开头

C.每个C程序必须在开头包含预处理命令行:#include

D.C语言的预处理不能实现宏定义和条件编译的功能

2.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}执行程序时,给变量X输入10,程序的输出结果是()。A.55B.54C.65D.45

3.以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

4.下述程序的输出结果是()。#include<stdio.h>voidmain{intb[6]={2,4,6,8,10,12);int*p=b,**q=&p;printf("%d,",*(p++));printf("%d,",**q);}A.4,4B.2,2C.4,5D.2,4

5.软件详细设计产生的图如图所示。该图是()。A.N—S图B.PAD图C.程序流程图D.E—R图

6.

7.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。

A.控制流B.加工C.数据存储D.源和潭

8.则以下函数调用语句错误的是()。#include<stdio.h>intadd(inta,intb){return(a+b)}main(){intk,(*f)(),a=5,b=10;f=add;...}A.k=f(a,b);B.k=add(a,b);C.k=(*f(a,b);D.k=*f(a,b);

9.下列对队列的叙述正确的是A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据

10.若有定义语句:“intkl一10,k2=20;”,执行表达式(kl=kl>k2)(k2=k2>k1)后,kl和k2的值分别为()。

A.0和1B.0和20C.10和1D.10和20

11.C程序的基本模块为()。

A.表达式B.标识符C.语句D.函数

12.在下列几种排序方法中,空间复杂度最高的是()

A.归并排序B.快速排序C.插入排序D.选择排序

13.如果有n个节点用二叉树来存储,那么二叉树的最小深度为()

A.Log2(n+1)B.Log2(n)C.Log2(n-1)D.n/2

14.在一个C程序中

A.main函数必须出现在所有函数之前

B.main函数可以在任何地方出现

C.main函数必须出现在所有函数之后

D.main函数必须出现在固定位置

15.

16.有以下程序

#include<stdio.h>

main()

{ints;

scanf(“%d”,&s);

while(s>0)

{switch(s)

{case1;printf(“%d”,s+5);

case2:printf(“%d”,s+4);break;

case3:printf(“%d”。s+3);

default:printf(“%d”,s+1);break;

}

seanf(“%d”,&s);

}

}

运行时,若输入12345O<回车>,则输出结果是A.6566456B.66656C.66666D.6666656

17.若有定义intx=3,y=2和floata=2.5,b=3.5,则表达式:(x+y)%2+(int)a/(int)b的值是()。

A.0B.2C.1.5D.1

18.若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是

#include<stdio.h>

main()

{charc;

intv0=1,v1=0,v2=0;

do{switch(c=getchar())

{case′a′:case′A′:

case′e′:case′E′:

case′i′:case′I′:

case′o′:case′O′:

case′u′:case′U′:v1+=1;

default:v0+=1;v2+=1;}}while(c!='\n');

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}

A.v0=7,v1=4,v2=7

B.v0=8,v1=4,v2=8

C.v0=11,v1=4,v2=11

D.v0=13,v1=4,v2=12

19.给定数列(541,132,984,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用冒泡排序时,第一趟扫描结果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

20.

二、2.填空题(20题)21.在面向对象的程序设计方法中,类的实例称为______。

22.下列程序的输出结果是16.00,请填空:

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

23.在E-R图中,矩形表示【】。

24.下列程序的输出结果是______。

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

for(i=1;i<5.i++)

PRINT(a+i);

printf("\n");

}

25.下面程序将二维数a的行和列元素互换后存放另一个二维数组b中。请填空。

main()

{inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2],i,j;

printf("arraya"\n");

for(i=0;i<=1;i++)

{for(j=0;【】;j++)

{printf("%5d",a[i][j]);

【】;}

printf("\n");}

printf("arrayb:\n");

for(i=0;【】;i++)

{for(j=0;j<=1;j++)

printf("%5d",b[i][j]);

printf("\n");}}

26.以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件中,形成文本文件,并将字符的个数写到文件的尾部。请填空。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[32];intcount=0;

printf(”Inputthefilename:");

scanf("%s",fname);

if((fp=fopen(【】,"w+"))==NULL)

{printf("Can'topenfile:%s\n",fname);exit(0);}

printf("Enterdata:\n");

while((ch=getchar())!='#')

{fputc(ch,fp);count++;}

fprintf(【】,"\n%d\n",count);

fclose(fp);

}

27.阅读下面语句,则程序的执行结果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

28.有以下程序:

fun(inta,intb)

{if(a>b)return(a);

elsereturn(b);

}

main()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

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

}

程序运行后的输出的结果是【】。

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

#include<stdio.h>

main()

{inta[4][4]={{1,2,3,4},{5'6'7'8},{11'12'13'14},{15'16'17'18}};

inti=0,j=0,s=0;

while(i++<4)

if(i==2[[i==4)continue;

j=0;

do{s+=a[i][j];j++;}while(j<4);

}

pdnff("%d'\n",s);

}

30.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

for(m=0;m<n;m++)

{if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;}

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[p1];x[p1]=【】;【】=t;

}

main()

{inta[10],u;

for(u=0;u<10;u++)scanf("%d",&a[u]);

f(a,10);

for(u=0;u<10;u++)printf("%d",a[u]);

printf("\n");

}

31.实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中(相当于copy命令),假定文件在当前目录下。请补全程序。

#include<stdio.h>

voidmain(intargc,char*argv[])

{FILE*f1,*f2;

if(argc<【】)

{printf("parametererror!\n");exit(0);}

f1=fopen(argv[1],"r");

f2=fopen(argv[2],"w");

while(【】)fputc(fgetc(f1),f2);

fclose(f1);

fclose(f2);

}

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

main()

{chara[]="Language",b[]="Programe";

char*p1,*p2;

intk;

p1=a;p2=b;

for(k=0;k<=7;k++)

if(*(p1+k)==*(p2+k))printf("%c,*(p1+k));

}

33.有以下程序

intfa(intx){returnx*x;}

intfb(intx){retumx*x*x;}

intf(int(*fl)int(*12)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

程序运行后,输出结果是【】

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

main()

{

chara[]="Language",b[]="Programe";

char*p1,*p2;

intk;

p1=a;p2=b;

for(k=0;k<=7;k++)

if(*p1+k)==*{p2+k))

printf("%c",*(p1+k));

}

35.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{inti,j,【】;charstr[]={"1234567"};

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

printf("%s\n",str);}

36.数据流图的类型有【】和事务型。

37.下列程序的运行结果是______。

main()

{ints=0,i=1;

while(s<=10)

{s=s+i*i;

i++;

}

printf("%d",-i);

}

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

#include<stdio.h>

structNODE

{intnum;structNODE*next;

main()

{struetNODEs[3]={{.'\0'},{2,'\0'},{3,'\O'}},*p,*q,*r;

intsum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=s;q=p->next;r=q->next:

sum+=q->next->num;sum+=r->next->next->num;

prinff("%d\n",sum);

}

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

40.在程序设计阶段应该采取______和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。

三、1.选择题(20题)41.在结构化程序设计中,模块划分的原则是()。

A.各模块应包括尽量多的功能

B.各模块的规模应尽量大

C.各模块之间的联系应尽量紧密

D.模块内具有高内聚度,模块间具有低耦合度

42.软盘处于写保护状态时,其中记录的信息______。

A.不可能丢失

B.不能被擦除,但能追加新的信息

C.不能通过写磁盘操作被更新

D.不能以常规方式擦除,但可以通过操作系统的格式化功能擦除

43.定义如下变量:intn=10;则下列循环的输出结果是()。while(n>7){-n;printf("%d\n",n);}

A.1098B.987C.10987D.9876

44.以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)printf(“%d”,aa[i]);pfintf(“\n”);}程序运行后的输出结果是

A.1,2,3,4,5,6,7,8,9,10

B.10,9,8:7,6,5,4,3,2,1

C.1,2,3,8,7,6,5,4,9,10

D.1,2,10,9,8,7,6,5,4,3

45.下列叙述中,不属于软件需求规格说明书的作用的是()

A.便于用户,开发人员进行理解和交流

B.反映出用户问题的结构,可以作为软件开发工作的基础和依据

C.作为确认测试和验收的依据

D.便于开发人员进行需求分析

46.若要用下面的程序片段使指针变量p指向—个存储整型变量的动态存储单元int*p;p=______malloc(sizeof(int));则应填入______。

A.intB.int*C.(*int)D.(int*)

47.设有输入语句scanf("a=%d,b=%d,c=%d",&a,&b,&C),为使变量a的值为2,b的值为4,c的值为8,则从键盘输入数据的正确形式是()。

A.1,3,2<回车>B.a=1b=3c=2<同车>C.132<回车>D.a=2,b=4,c=8<回车>

48.若变量已正确定义,下列正确的程序段是()。

A.while(ch=getchar()=='\NN')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

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

A.函数名是属于用户标识符,需符合C语言对标识符的规定

B.形参只能是变量

C.为保证程序的正常运行,函数中定义的变量不能与其他函数中的变量同名

D.函数中定义的变量可以与其他函数中的变量同名

50.以下程序的输出结果是_______。main(){charst[20]="hello\0\t\\";printf(%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

51.有以下程序:#include<stdio.h>main()inti;for(i=0;i<3;i++)switch(i)case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);程序运行后的输出结果是()。

A.22111B.21021C.122D.12

52.下列选项中不属于软件生命周期开发阶段任务的是()。

A.软件测试B.概要设计C.软件维护D.详细设计

53.以下叙述中正确的是

A.全局变量的作用域一定比局部变量的作用域范围大

B.静态(static)类型变量的生存期贯穿于整个程序的运行期间

C.函数的形参都属于全局变量

D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值

54.以下叙述中错误的是

A.在程序中凡是以"#"开始的语句行都是预处理命令行

B.预处理命令行的最后不能以分号表示结束

C.#defineMAX是合法的宏定义命令行

D.C程序对预处理命令行的处理是在程序执行的过程中进行的

55.设整型数i=5,则printf("%d",i+++++i);的输出为______。

A.10B.11C.12D.语法错误

56.以下非法的赋值语句是

A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;

57.以下4个选项中,不能看作一条语句的是

A.{;}B.a=0,b=0,c=0;C.if(a>0);D.if(b==0)m=1;n=2;

58.数据流图用于抽象地描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。

A.控制流B.加工C.数据存储D.源和潭

59.下列选项中均属于C语言合法的标识符的是()

A.Int#subbreak

B._3abFORLong

C.3aprintfa_b

D.WORDautoinclude

60.下列程序是用来判断数组中特定元素的位置所在的。

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

for(i=0;i<t;i++)

if(s[*k]<s[i])*k=i;

returns[*k];}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

如果输入如下整数:876675896101301401980431451777

则输出结果为

A.7,431B.6C.980D.6,980

四、选择题(20题)61.关于以下程序段的描述,正确的是

x=-1;

do

{x=x*x-1;}while(!x);

A.是死循环B.循环执行两次

C.循环执行一次D.有语法错误

62.有三个关系R、S和T如下:

由关系R和S通过运算得到关系T,则所使用的运算为()。

A.笛卡尔积B.交C.并D.自然连接

63.对表达式for(表达式1;;表达式3)可理解为()。

A.for(表达式1;0;表达式3)

B.for(表达式1;1;表达式3)

C.for(表达式1;表达式1;表达式3)

D.for(表达式1;表达式3;表达式3)

64.

65.有以下程序段:

当执行上述程序段,从键盘上输入555667777abc后,y的值为()。

A.566.0B.55566.0C.7777.0D.566777.0

66.有以下程序:

程序运行后的输出结果是()。

A.1,2B.1,0C.3,2D.0,0

67.

68.有以下程序段:

程序运行后的输出结果是()。

A.a=10b=50C=30

B.a=10b=50c=10

C.a=10b=30c=10

D.a=50b=30c:50

69.以下选项中,不合法的c语言用户标识符是()。

A.a_bB.AaBcC.f1一一bD.一1

70.下列链表中,其逻辑结构属于非线性结构的是()0、

A.双向链表

B.带链的栈

C.二叉链表

D.循环链表

71.有以下程序:

程序运行后的输出结果是()。

A.aegiB.dfhkC.abedD.abedefghijk

72.有以下程序:

程序运行后的输出结果是()。

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,1,2,3,4,5,6,7,8,9,

73.有以下程序

structst

{intx;

int*y;

}*p;

intdt[4]={1,2,3,4};

structstaa[4]={10,&dt[0],20,&dt[1],30,&dt[2],40,&dt[3]};

main()

{p=aa;

printf("%d\n",++p->x);

printf("%d\n",(++p)->x);

printf("%d\n",++(*p->y));

程序的运行结果是

74.

75.

76.

77.有以下程序:

程序的运行结果是()。

A.1,2,3,4,B.1,0,7,0,C.1,4,5,9,D.3,4,8,10,

78.若函数中有定义语句:inta;,则()。

A.系统将自动给a赋初值为0B.系统将自动给a赋初值一lC.这时a中的值无意义D.这时a中无任何值

79.

80.若有定义语句:"inta[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是()。

A.D=aB.q[i]=a[i]C.p=a[l]D.P=&a[2][1]

五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若nmnl和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输也的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或硼行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.编写函数proc(),它的功能是:根据公式求p的值,结果由函数值带回。m与n为两个正数且要求m>;n。p=m!/(n!(m-n)!),例如,m=20,n=10时,运行结果为184756.000000。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B本题是对基本知识点的理解,预处理命令行的位置没有规定,只是习惯写在起始位置而已,当需要时才用#include<stdio.h>头文件,预处理的作用就是实现宏定义和条件编译。

2.A函数intfun(intn)的功能是求1+2+…+n的值并返回。所以执行程序时,给变量x输入10后,执行语句“x=fun(x);”,X的值将变为1到10中10个整数的累加和,即55。

3.D解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:

#define宏名(形参表)字符串

本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。

4.D首先定义了一个指向一维数组b的指针P,一个指向指针P的指针变量q;输出*(p++)是先输出*p,即b[O]的值,再将指针P指向数组的下一个元素b[1];输出**q是输出指针P所指单元的内容。

5.CN-S图(也被称为盒图或CHAPIN图)、PAD(问题分析图)及PFD(程序流程图)是详细设计阶段的常用工具。E—R图即实体一联系图,是数据库设计的常用工具。从题中图可以看出该图属于程序流程图。

6.D

7.A解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

8.DD选项中*f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。

9.D解析:本题考查数据结构中队列的基本知识。队列是一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出的特性。在队列中,允许插入元素的一端叫做队尾,允许删除的一端则称为队头。这与日常生活中的排队是一致的,最早进入队列的人最早离开,新来的人总是加入到队尾。因此,本题中只有选项D的说法是正确的。

10.B

11.D

12.A

13.A

14.B解析:一个完整的C语言程序有且仅有一个主函数(main()函数)。程序总从main()函数的第一条语句开始执行,到main()函数的最后一条语句结束,其他函数都是在执行main()函数时,通过函数调用或嵌套调用而得以执行的。C语言规定,main()函数在程序中的位置是任意的,故选项A、选项C和选项D均不正确。所以,B选项为所选。

15.A

16.A

17.D

18.D解析:本题考查switch语句的掌握。必须撑握以下内容:首先应该明白switch语句的语法格式:

switch语句的语法格式为:

switch(表达式)

{

case常量表达式1:语句组1;

case常量表达式2:语句组2;

case常量表达式n:语句组n;

default:语句组n+1;

}

另外,以下几点关于switch语句的重点:

①系统在执行时计算开关表达式的值;②根据所得的值在各个case标号表达式中寻找匹配,直到发现与表达式匹配的标号(本例中匹配的是case\'B\':);\ue008③找\ue009到匹配后执行后面相应的语句表,顺序往下执行;④如果无相匹配的标号,若存在default标号,则执行该语句标号后面的语句表n+1;当不存在default标号时,不执行switch中的任何一个语句表。

一般而言,在多分支结构中总会出现'意外'的情况,这时均可归入default程序段,作统一的处理。default标号是可选性的,不必每次都有,视需要而定。switch语句中还可以包含switch语句,形成switch的嵌套。

19.D

20.C

21.对象对象解析:在面向对象的程序设计方法中,类是具有相同的属性或方法的对象的抽象,对象是类的实例。

解析:本题,已知结果z=16.00,即16.0=a/2+b*x/y+1/2,分别把a、b,代入,得到16.0=9/2+2*x/1.1+1/2。因为a=9,a是整型,所以9/2的值在没有进行类型转换时,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

23.实体实体解析:E-R模型中,有3个基本的抽象概念:实体、联系和属性。在E-R图中,用矩形框表示实体,菱形框表示联系,椭圆形框表示属性。

24.1234theend1,2,3,4,theend解析:本题考查带参数的宏的定义。第1次循环,i=1时,调用PRINT(1),P(1)输出1;第2次循环,i=2时,调用PRINT(2),P(2)输出2:第3次循环,i=3时,调用PRINT(3),P(3)输出3:第4次循环,i=4时,调用PRINT(4),P(4)输出4,theend。

25.j<2b[j][i]=a[i][j]i<=2j<2\r\nb[j][i]=a[i][j]\r\ni<=2解析:本题考查了二维数组元素的引用。a[i][j]表示的是二维数组a的第i+1,第j+1列的元素。

26.fnamefpfname\r\nfp解析:fopen()函数实现打开文件的功能,通常的调用方式为:FILE*fp;fp=fopen(文件名,使用文件方式),因此,第一个横线处要求填写要打开文件的名字fname。fprintf()函数的—般调用方式为:fprintf(文件指针,格式字符串,输出表列),所以第二个横线处应填写fp。

27.101,0解析:与运算两边的语句必须同时为真时,结果才为真。当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。

28.1212解析:函数fun的功能是求两个数当中的最大值。语句r=fun(fun(x,y),2*z)的执行过程为:首先计算fun(x,y),因x=3、y=8,所以结果为8;然后计算fun(8,2,*z),即计算fun(8,12),所以r=12。

29.9292解析:本题考查循环的嵌套。

①当i=0时执行while语句,i++<4成立,这时i=1,不执行continue语句,继续执行j=0;然后执行do-while语句,共循环4次:

a)j=0时,s=0+a[1][0]=5,j=j+1=1。

b)j=1时,s=5+a[1][1]=5+6=11,j=j+1=2。

c)j=2时,s=11+a[1][2]=11+7=18,j=j+1=3。

d)j=3时,s=18+a[1][3]=18+8=26,j=j+1=4。终止循环。

②当i=1时执行while语句,i++<4成立,这时i=2,执行continue语句,结束本次循环。

③当i=2时执行while语句,i++<4成立,这时i=3,不执行continue语句,继续执行j=0;然后执行do-while语句,共循环4次:

a)s=26+a[3][0]=26+15=41,j+1=1。

b)s=41+a[3][1]=41+16=57,j+1=2。

c)s=57+a[3][2]=57+17=74,j+1=3。

d)s=74+a[3][3]=74+18=92,j+1=4。终止循环。

④i=3时,执行while语句,i++<4成立,这时i=4,执行continue语句,结束本次循环。

⑤当i=4时,执行while语句,i++<4不成立,结束while循环。输出s的结果92。

30.x[0]x[0]x[0],x[0]解析:函数f()通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1]交换位置,再将最小值x[p1]和第一个元素(x[0])进行交换,所以空白处应该填入x[0]。

31.3!feof(f1)3\r\n!feof(f1)解析:要实现文件复制,需要指定源文件及目的文件,因此在命令行下执行程序时至少要指定两个参数,加上程序名本身,故argc的值至少为3,因此第一空应填3。while循环中语句fputc(fgetc(f1),f2);的目的是将f1中的字符依次读出并写入到f2对应的文件中去,直至文件f1结束为止,因此第二空为!feof(f1)。

32.gae

33.44解析:在主函数中调用函数f,函数f有三个参数,形参n与C分别是两个指向函数的指针。在f中执行nf2(x),实际上是执行了fo(2)-fa(2),故执行i=(fa,fb,2)后i的值为2^3-2^2=4。

34.gaegae解析:主函数中定义了字符数组a和b,其初值分别为Language和Programe,然后定义了两个指针变量p1和p2,并让它们指向a和b。通过分析可知下面的for循环中,每循环一次就将pl+k和p2+k所指向的字符进行比较,如果相等,输出该字符,循环共执行8次,显然Language和Programe中只有字符gae相等,所以最后输出为gae。

35.k-1k,-1解析:颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]位于str[j]的前面,即i<j。字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中一起定义,所以在第一个空框处应填入k。

36.变换型典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。

37.33解析:分析程序运行过程,第1次循环:s=s+i*i=0+1*1=1,i=2;第2次循环:s=s+i*i=1+2*2=5,i=3;第3次循环:s=s+i*i=5+3*3=14,i=4;循环条件不成立输出i,--i使i的值减1,轴出结果为3。

38.55解析:程序通过语句s[0].next=s+1;s[1].next=s+2;s[2].next=s;将结构体变量s中各结点连接成了一个循环链表,即最后一个结点的指针域指向了头结点(s[2].next=s),整个链表形成一个环,并通过语句p=s;q=p->next;r=q->next;将结构体指针变量p,q,r指向了各结点,具体结构如下图:

故本题输出的sum为3+2=5。

39.252137252137解析:本题中先定义了整型变量a、b和c,然后分别给赋值a为25,b为八进制的025,c为十六进制0x25。然后调用pruntf()函数将a、b和c分别用十进制输出,且中间用空格隔开,八进制025转换为十进制的值为21,十六进制的0x25转换为十进制的值为37,故最后的输出结果为252137。

40.自顶向下自顶向下解析:在程序设计时,应先考虑总体,后考虑细节,逐步使问题具体化,对复杂的问题,应该设计一些子目标作为过渡,上述方法概括为:自顶向下,逐步细化。

41.D解析:本题考查软件工程中软件设计的概念和原理。人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得到如下的启发式规则:

(1)改进软件结构,提高模块独立性;通过模块的分解或合并,力求降低耦合提高内聚。低耦合也就是降低不同模块间相互依赖的紧密程度,高内聚是提高一个模块内各元素彼此结合的紧密程度。

(2)模块的规模应适中。一个模块的规模不应过大,过大的模块往往是由于分解不够充分:过小的模块开销大于有益操作,而且模块过多将使系统接口复杂。因此过小的模块有时不值得单独存在。

(3)模块的功能应该可以预测,但也要防止模块功能过分局限。如果模块包含的功能太多,则不能体现模块化设计的特点:如果模块的功能过分的局限,使用范围就过分狭窄。

经过上述分析,本题的正确答案是选项D。

42.C

43.B解析:第1次循环,10>7,--n=9,输出9。第2次循环,9>7,--n=8,输出8。第3次循环,8>7,--n=7,输出7。

44.C解析:本题中首先定义一个长度为10的一个整型数组,并初始化为“l,2,3,4,5,6,7,8,9,10”,然后调用排序函数sort(),通过分析不难看出,sort()函数是对具有n个元素的a数组进行从大到小排序。由于函数的第一个参数是数组名,其对应的实参可以是函数名或地址。本题在调用该函数时,实参是&aa[3]的地址,即把aa[3]的地址传给了形参数组名a,函数也就是对aa[3]开始的5个元素进行从大到小的排序,aa[0]、aa[1]、aa[2]、aa[8]、aa[9]并没有变化。sort()执行完毕后,接着执行后面的for语句输出数组aa中各个元素的值,由于函数sort()只是对aa[3]开始的5个元素进行从大到小的排序,aa[0]、aa[1]、aa[2]、aa[8]、aa[9]并没有变化,所以输出为“1,2,3,8,7,6,5,4,9,10”。

45.D解析:软件需求规格说明书SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用,①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。

46.D解析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之为在型一致,强制类型转换的格式为(数据类型*)。

47.D解析:本题考查scanf函数的基本格式。若在scanf函数的格式控制字符串中插入了其他的字符,则在输入时要求按一一对应的位置原样输入这些字符,我们必须把“a=”、“b=”、“c=”也输入。

48.D解析:本题考查两个知识点:①C语言用'n\\'这个字符常量表示换行;②函数getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。

49.C解析:本题考查函数调用时参数的作用域。在函数调用时,函数体内定义的变量的作用域连函数体内,因而在不同函数体内定义的变量可以相同,不影响各个变量的使用。

50.B解析:C语言中字符串是以'\\0'字符结束的,且strlen()函数计算的是'\\0'字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。

51.C解析:程序中没有使用break终止switch语句的执行。当i:0时,执行第一个case语句,因为它后面没有break,所以一直到执行完default语句结束,输出3个0,再执行下一循环。所以只有选项C)正确。

52.C解析:软件生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分为若干个阶段。软件定义时期的基本任务是确定软件系统的工程需求。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。即当软件在使用过程中发现错误时应加以改正;当环境改变时应该修改软件,以适应新的环境;当用户有新要求时应该及时改进软件,以满足用户的新要求。根据上述对软件生命周期的介绍,可知选项C中的软件维护不是软件生命周期开发阶段的任务。因此,本题的正确答案是C。

53.B解析:若在函数中定义与全局变量名字相同局部变量,则全局变量在该函数中将不起作用,因此全局变量的作用域并不一定比局部变量的作用域大;静态变量一旦定义,将在整个程序的运行期间都存在;函数的形参只在函数调用的时候分配存储空间,在退出函数时收回存储空间,因此是局部的;没有赋值的auto型变量的初值是随机的,没有赋值的static型变量的初值是0。

54.D解析:C语言中的预处理命令以符号#开头,这些命令是在程序编译之前进行处理的,选项D)的描述错误。

55.D解析:C语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(++、-),在C语言解析表达式时,它总是进行贪婪咀嚼,这佯,该表达式就被解析为i+++++i,显然该表达式不合C语言语法。

56.C解析:本题考查的知识点是赋值语句的基本知识。在表达式的运算中,双目赋值运算符的格式为“变量二表达式”,单目运算符一般形式为“运算符表达式”或“表达式运算符”。常量和表达式是不能被赋值的。选项A为复合表达式,首先计算(i=2,++i)的值,然后赋值给n,故选项A正确;选项B为简单自加运算,故选项B正确;选项C在表达式++(i+1);中,(i+1)不是变量,该表达式的值为常量,而在++运算中,其运算对象必须为变量,故选项C错误;选项D中为复合赋值表达式,正确.所以应当选择C。

57.D解析:C语言的语句都用“;”结束。如果只有一个分号,称为“空语句”。用一对花括号把若干语句括起来构成一个语句组,称为“复合语句”,在语法上视为一条语句。因此选项A是一条语句。选项B是逗号表达式加分号构成的语句。选项C是一条if语句,该语句的if子句是一条空语句。选项D中“if(b==0)m=1;n=2;”是两个表达式语句。所以,4个选项中选项D符合题意。

58.A解析:数据流图包括四个方面,即加工(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体),不包括选项中的控制流。

59.B

60.D解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外

温馨提示

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

评论

0/150

提交评论