国家二级(C语言)机试模拟试卷185_第1页
国家二级(C语言)机试模拟试卷185_第2页
国家二级(C语言)机试模拟试卷185_第3页
国家二级(C语言)机试模拟试卷185_第4页
国家二级(C语言)机试模拟试卷185_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

国家二级(C语言)机试模拟试卷185

一、选择题(本题共40题,每题1.0分,共40分。)

1、下列哪一条不属于数据库设计的任务?()

A、设计数据库应用结构

B、设计数据库概论结构

C、设计数据库逻辑结构

D、设计数据库物理结构

标准答案:A

知识点解析:数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞

大的软件工程。考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个

阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数

据库的运行和维护。

2、设有定义:doublea[10],*s=a:以下能够代表数组元素a[3]的是()。

A、(*s)[3]

B、*(s+3)

C、*s[3]

D、*s+3

标准答案:B

知识点解析:语句*s=a;表示指针变量s指向一维数组a的首地址。a[3]表示引用

数组a的第4个元素,*(s+i)表示引用指针s所指数组a的第i+1个元素,选项A、

C、D的表示方法错误,只有B选项正确。

3、下面函数的功能是()。SSS(S,t)charts,*t;{while(*s);while(*t)

*(s++)=*(t++);returnS;}

A、将字符串S复制到字符串l中

B、比较两个字符串的大小

C、求字符串的长度

D、将字符串t续接到字符串S中

标准答案:D

知识点解析:本题考查韦针变量的运用。本题中的函数实质上是将字符串t续接到

字符串S44。

4、下列程序的运行结果是()。#include<stdio.h>voidfun(int*s,int*p)(static

intt=3;*p=s[t];t-;)voidmain(){inta[]={2,3,4,5),k,x;for(k=0;k<

4;k++){fun(a,&x);printR''%d,x);)}

A、5,4,3,2,

B、2,3,4,5,

C、2,2,2,2,

D、5,5,5,5,

标准答案:A

知识点解析:分析fun函数程序段,可知fun函数要实现的功能是将s中第(t+1)个

元素以前的元素逆置赋给数组P。由于「un函数定义了静态变量1=3,因此,在主

函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数组x,最

后输出x数组。

5、下列队列的描述中,正确的是()。

A、队列属于非线性表

B、队列在队尾删除数据

C、队列按“先进后出”进行数据操作

D、队列按“先进先出”进行数据操作

标准答案:D

知识点解析:队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端

叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行

的。因此队列亦称作先进先出的线性表,或后进后出的线性表。

6、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个

共有的()。

A、记录

B、行

C、属性

D、元组

标准答案:C

知识点解析:自然连接是一种特殊的等值连接,它满足下面的条件:①两关系间

有公共域;②通过公共域的等值进行连接,故C选项正确。

7、下列说法正确的是

A、int(**def)[10];--def指向一个指针,该指针指向10个整型变量构成的数组

B、int*(*gh[10J);…gh指向一个指针,该指针指向10个整型变量构成的数组

C、int*(*gh[10]);—gh是一个指针,指向由10个指向整型变量的指针构成的数组

D^A,C均正确

标准答案:D

知识点解析:int*(*gh[10]):-gh是一个指针,指应由10个指向整型变量的指针构

成的数组,int(**del)[10]--def指向一个指针,该指针指向10个整型变量构成的数

组。

8、下列说法正确的是

A、int(**def)[10];---def指向一个指针,该指针指向10个整型变量构成的数组

B、int*(*gh[10D;…gh指向一个指针,该指针指向10个整型变量构成的数组

C、—gh是一个指针,指向由10个指向整型变量的指针构成的数组

D、A,C均正确

标准答案:D

知识点解析:int*(*gh[10]);—gh是一个指针,指向由10个指向整型变量的指针

构成的数组,int(*ef)[10];—def指向一个指针,该指针指向10个整型变量构成的

数组。

9、在C语言中,变量的隐含存储类别是()。

A、auto

B、static

C、extern

D、无存储类别

标准答案:A

知识点解析:C语言中,变量的隐含存储类型为auto。

10、下列叙述中正确的是()。

A、栈是“先进先出”的线性表

B、队列是“先进后出”的线性表

C、循环队列是非线性结构

D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

标准答案:D

知识点解析:栈是先进后出的线性表,所以A错误;队列是先进先出的线性表,

所以B错误;循环队列是线性结构的线性表,所以C错误。

11、软件开发中,需求分析阶段可以使用的工具是()。

A、N-S图

B、DFD图

C、PAD图

D、程序流程图

标准答案:B

知识点解析:结构化分析方法是结构化程序设计理论在软件需求解析阶段的运用,

数据流图(DataFlowDiagram,DFD)是结构化分析常用的工具之一,数据字典、判

定树和判定表也是常用的结构化分析工具。程序流程图、NS图、PAD图等图形工

具用于详细设计的过程中。

12、以下选项中,能用作用户标识符的是()。

A、0

B、88

C、void

D、unsigned

标准答案:A

知识点解析:C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下

划线。另外,关键字不能作为标识符。B)中以数字8开头,所以错误。C)与D)中

用的是关键字void与unsigned,所以错误。

13、以下叙述中正确的是()。

A、C语言比其他语言高级

B、C语言可以不用编译就能被计算机识别执行

C、C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D、C语言出现的最晚,具有其他语言的一切优点

标准答案:C

知识点解析:此题考查的是C语言的基本特点。C语言是一种高级编程语言,但并

不是比其他语言高级;C语言源程序必须经过编译生成目标文件才能被计算机识别

执行;C语言出现比较晚,它既有优点也有缺点,而并不是具有其他一切语言的优

点。

14、有以下程序:#include<stdio.h>main()(inti,j;for(i=l;i<4;i++)

{for(j=i;j<4;j++)printf(”%d*%d=%d”,i,j,i*j);pfinff(H\n");}}程序运

行后的输出结果是()。

A.B.C,D.

1«l>1I*2-21・3=3I»i«l1»2«21・3・3I•!«l

2・1=22.2=42«2>42«3>61»2«22・2・42・l・22»2-4

3*1=33«3«91・3・32«3«63»3«93"・33*2«63*3-9

A、

B、

C、

D、

标准答案:B

知识点解析:考查for循环及其嵌套。第一个for循环用来控制输出行数,第二个

for循环用来控制每行输出的表达式个数。当i=l,j=l时,第一行输出3个表达

式:1*1=11东2=21*3=3当i=2,j=2时二第二行输出2个表达式:2*2=42*3=6当

i=3,尸3时,第三行输出1个表达式:3*3=9当i=4时,第一个for循环中4<4条

件不成立,循环结束,整个程序执行完毕。因此答案选B。

I5N若变量已正确定义,有以下程序段:i=0;doprintf("%d,",i);while(i++);

printfC%d\n",i);其输出结果是()。

A、0,0

B、0,1

C、1,1

D、程序进入无限循环

标准答案:B

知识点解析:do…while循环的执行过程如下:①执行do后面的循环体中的语

句。②计算while后一对圆括号中表达式的值。当值为非。时,转去执行步骤

①;当值为0时,执行步骤③。③退出do…while循环。对于本题变量i的初始值

等于“0”,接着执行do后面的循环体中的语句,输出变量i的值0。再判断wh加后

面括号中表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加己

经变为1,所以再次输Hi的值力”。

16、在C涪言程序中,以下说法正确的足()。

A、函数的定义和函数的调用均不可以嵌套

B、函数的定义不可嵌套,但函数的调用可以嵌套

C、函数的定义可以嵌套,但函数的调用不可以嵌套

D、函数的定义和函数的调用均可以嵌套

标准答案:B

知识点解析:本题考查函数调用的基本概念。因为函数的结果是一个未知量,而函

数定义时不能使用未知量,所以函数定义不可以嵌套,但是函数调用可以嵌套。

17、在下列叙述中,错误的是()。

A、C语言中,二维数组或多维数组是按行存放的

B、赋值表达式b[l][2]=a⑵⑶是正确的

C、chara[l];a[0]=,A,与inta[l];a[0]=,A,等价

D、数组名后的方括号内可以为常量表达式,也可以为变量

标准答案:D

知识点解析:本题考查数组的4个知识点:①C语言中,二维数组或多维数组元

素排列的顺序是按行存放:②不同数组的元素之间可以相互赋值;③字符型数组

中存放的是字符,加型数组中存放的是字符对应的ASCH码值,虽然在计算机内

部字符常量都是作为整型量来处理的,其对应的整数值就足ASCH码值,但两者

并不完全等价;④数组名后的方括号内可以为常量,也可以为常量表达式,但不

可以为变量。

18、若有定义,inta=3,*p=&a,**q=&p;,则以下叙述中错误的是()。

A、q是指针变量,*4就是变量a

B、P是指针变量,p指向变量a

C、q指向变量p,所以*q指向变量a

D、*p与**q都代表变量a

标准答案:A

知识点解析:由题意可知:指针变量p指向变量a,p的值是a的地址;指针变量q

指向变量p,q的值是p的地址,所以q是指针变量,q指向p,*q是变量p,选项

A错误;p也是指针变量,p指向a,选项B正确:由于q指向p,所以*q子旨向a,

选项C正确;*p和**q都是代表变量a,选项D正确,本题答案为A。

19、算法的空间复杂度是指()。

A、算法在执行过程中所需要的计算机存储空间

B、算法所处理的数据量

C、算法程序中的语句或指令条数

D、算法在执行过程中所需要的临时工作单元数

标准答案:A

知识点解析:算法的空间复杂度是指算法在执行过程中所需要的计算机存储空间。

20>有以下程序:#include<stdio.h>main()(FILE*fp;intk,n,a[6]=(1,2,

3,4,5,6);fp=fopen("d2.dat“,"w");fprintf(fp,"%d%d%d\n",a|0],

a[l],a[2]);fprintf(fp,”%d%d%d\n",a[3],a[4].a[5]);fclose(fp);

fp=fi)pen(H(d2.dat",T);fscanf(fp,&k,&n);printf("%d%d\n",

k,n);fclose(fp);}程序运行后的输出结果是()。

A、12

B、14

C、1234

D、123456

标准答案:D

知识点解析:fprinlf()函数向文本文件输出数据,将输出的内容按格式输出到硬盘

的文本文件中。执行两次fprintf后,文件中的内容为“123456”,所以D选项正

确。

21、下列选项中可作为C语言合法常量的是()。

A、-80

B、-080

C、-8el.0

D、-80.0e

标准答案:A

知识点解析:所谓常量是指在程序运行的过程中,其值不能被改变的量。在C语

言中,有整型常量、实型常量、字符常量和字符串常量等类型。选项B中是以0

开头,表示一个八进制数,而八进制数的取值范围是。〜7,所以“-080”错误;在C

语言中e后面的指数必须是整数,因此选项C和D也不正确。

22、以下叙述中错误的是()。

A、C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

B、C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文

C、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

D、C语言源程序经编译后生成后缀为.obj的目标程序

标准答案:A

知识点解析:C语言程序编译时将每条可执行语句转换为二进制的机器指令,但非

执行语句(如注释语句)不被编译。所以选项A)错误。

23、以下选项中叙述正确的是()。

A、charcl,c2,*c3,c4[40];是合法的变量定义语句

B、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

C、数组下标的下限可以是负值

D、若有数组定义floatarray[4J;则语句prinlf("%口array[3.12]);是合法的

标准答案:A

知识点解析:暂无解析

24、有以下程序:#includevoidfun(int*s»intnl»intn2){inti,j»t;i=nl;

j=n2;while(i

A、4321098765

B、5678901234

C0987654321

D、0987651234

标准答案:B

知识点解析:该程序首先给一维数组赋值,然后三次调用。fun函数,其中fun(a,

0,3);功能是将一维数组中第1个元素和第4个元素互换,第2个元素和第3个

元素互换;其中fun(a,4,9);功能是将一维数组中第5个元素和第10个元素互

换,第6个和第9个元素互换,第7个元素和第8个元素互换;其中fun(a,0,

9);功能是将将一维数组中第1个元素和第10个元素互换,第2个元素和第9个

元素互换……依此类推。因此B选项正确。

25、以下选项中正确的定义语句是()。

A、double,a,b;

B、doublea=b=7;

C、doublea:b:

D、doublea=7,b=7;

标准答案:D

知识点解析:A选项中变量类型符double后面不能有逗号。B选项中变量b不能先

使用再定义,应该写成选项D中的格式。C选项中变量a后面应该是逗号而不是分

号。

26、以下能正确定义字符串的语句是()。

A^charstr="\x43";

B、charstr[]="\OM;

C、charstr='':

D、charstr[]={,\064'}:

标准答案:B

知识点解析:C语言中,字符串是用一对双引号括起来的字符序列,并用字符型数

组来存放,故C选项和D选项不属于字符串,A选项定义的是一个字符变量sir,

却用来存放字符串,显然也不正确,因此B选项正确。

27、有以下程序段:FILE*fp:if((fp=fopen("test.txt“,"W"))==NULL){primf(”不

能打开文件!");exit(O);}elseprintf("成功打开文件!");若指定文件test.【xt

不存在,且无其他异常,则以下叙述错误的是()。

A、输出“不能打开文件!”

B、输出“成功打开文件!”

C、系统将按指定文件名新建文件

D、系统将为写操作建立文本文件

标准答案:A

知识点解析:fopen函数以一定方式打开指定文件,返回一个指向文件的文件指

针,如果不能实现打开韦定文件的操作,则返回一个空指针NULL。如果指定文件

不存在则创建一个文件名为指定文件名的新文件,然后打开它。程序中,文件

test.txt不存在,但无其他异常,表示可以建立新文件,命名为test.txt,C项正

确,并以只写方式打开它,D项正确,返回指向文件的指针,if条件不成立,输出

“成功打开文件!”,B项正确。

28、数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是(:)。

A、DB包括DBS和DBMS

B、DBMS包括DB和DBS

C、DBS包括DB和DBMS

D、DBS、DB和DBMS相互独立

标准答案:C

知识点解析:数据库(DB)是指长期存储在计算机内的、有组织的、可共享的数据

集合。数据库管理系统(DBMS)是数据库的机构,它是一个系统软件,负责数据库

中的数据组织、数据操纵、数据维护、数据控制及保护和数据服务等。数据库系统

(DBS}由如下儿部分组成:数据库、数据库管理系统、数据库管理员、硬件平台、

软件平台,这些构成了一个以数据库管理系统为核心的完整的运行实体。数据库系

统包括数据库与数据库管理系统,故C选项正确。

29、下面选项中关于“文件指针”概念的叙述正确的是()。

A、文件指针是程序中用FILE定义的指针变量

B、文件指针就是文件位置指针,表示当前读/写数据的位置

C、文件指针指向文件在计算机中的存储位置

D、把文件指针传给fscanf函数,就可以向文本文件中写入任意的字符

标准答案:A

知识点解析:在C语言中用一个指针变量指向一个文件,这个指针称为文件指

针。通过文件指针就可对它所指的文件进行各种操作。文件指针不是文件位力指

针,所以B、c选项错误,D选项中不可以写入任意的字符。

30、有以下程序:#include<stdio.h>nlain(){FILE*fp;inti,a[6]={l,2,3,

4,5,6},k;fp=fopen("datadatM,"w+b");fwite(&a[0]»sizeof(int),4fp);

for(i=l;i<6;i++){fseek(fp,0L,0);fwrite(&a[i],sizeof(int),1,fp);)

fseek(fp,0L,0);fread(&k»sizeof(int),1,fp);felose(fp);printf("%d\nn.

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

A、123456

B、21

C、6

D、654321

标准答案:C

知识点解析:首先使用fopen函数以只写方式打开文件datAdat,返回文件指针fp

然后通过调用Wrile函数,将起始地址为&a[0]、单位长度为sizeof(im)的一个元素

写入文件,即写入a[0];接着for循环从数组a的第二个元素起,每次首先使用

fseek()函数将指针fp定位到文件datAtdat的开始位置,写入起始地址&a[i]、单位

长度为sizeof(inl)的一个元素,即写入a[i];此时数组元素按照逆序写入文件:

654321,盾环结束后,使用fseek()函数再将指针fp定位到文件开始位置,调用

fread。函数,从fp所指位置读取单化长度为sizeo(int)的一个元素到变量k中,即

k=6,最后调用fclose()函数关闭文件,输出k的值6,故答案为C。

31、设有定义:intk=O:以下选项的四个表达式中与其他三个表达式的值不相同

的是()。

A、++k

B、k+=l

C、k++

D、k+1

标准答案:C

知识点解析:十十k,先使k的值自增1后再使用,kf是先取得k的值再将k的值

自增1,所以C选项中表达式的值为0,而其他三个表达式的值均为1,所以选择

Co

32N若有以下程序#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6(,k;

fp=fopen("data.dat","w+b");for(i=0;i<6;i++){fseek(fp,0L,0);fwrite(&a[5-i],

sizeof(int),1,fp);}rewind(fp);fread(&k,sizeof(int),1,fp);fclose(fp);printf("%d",k);}

则程序的输出结果是

A、6

B、1

C、123456

D、21

标准答案:B

知识点解析:本题考查文件操作函数,fseek用于二进制方式打开的文件,移动文件

读写指针位置。将文件内部的位置指针重新指向一个流(数据流/文件)的开头。

所以最后只保留了1,答案为B。

33、有以下程序#includc<stdio.h>voidfun(char*p,intn){charb[6]="abcdc';int

i;for(i=0,p=b;i<n;i++)p[i]=b[i];)main(){chara[6]=,,ABCDE";fun(a,5);

printf("%s\n",a);}程序运行后的输出结果是

A、abcde

B、ABCDE

C^edcba

D、EDCBA

标准答案:B

知识点解析:本题考查数组名作为函数参数,执行f函数时,传进去的a指针被重

新指向了b,所以原本a数组的地址内容不变,所以输出结果为ABCDE,答案为

B选项。

34、以下不合法的字符常量是()。

A、

B、、

C、’\083,

D、,\xcc,

标准答案:C

知识点解析:AB两项是转义字符,选项D是十六进制,选项C是八进制,但其中

不能包含8,C项错误。

35、以下叙述中正确的是

A、使用typedef说明新类型名时,其格式是:typedef新类型名原类型名;

B、在程序中,允许用typedef来说明一种新的类型名

C、使用typedef说明新类型名时,后面不能加分号

D、在使用typedef改变原类型的名称后,只能使用新的类型名

标准答案:B

知识点解析:本题考查lypedef的使用方法,typedef对已存在的类型使用一个新的

名字,选项A总新类型名应该在原类型名之后,C选项中后面要加分号,D选项中

可以使用原类型名。

36、有以下程序#include<stdio.h>#defineN4voidfun(inta[][N]){intb[N][N],i,j;

for(i=0;i<N;i++)for(j=0;j<N;j++)b[i][j]=a[N-l-j][i];for(i=0;i<N;i++)for(j=0;j

<N;j++)a[i][j]=b[i][j];}main(){intx[N][N]={{1,2,3,4),(5,6,7,8},

{9,10,11,12},{13,14,15,16}},i;fun(x);fun(x);for(i=0;i<N;i++)printf("%dj,x[i][i]);

printf("\nn);}短序的运行结果是

A、16,11,6,1,

B、1,6,11,16,

C、4,7,10,13,

D、13,10,7,4,

标准答案:A

知识点解析:程序的执行过程为:调用函数f,将二维数组x地址传入函数,比函

数实现将矩阵转置,然后将每一列首尾倒置,调用结果为

x[N][N]={{13,9,5,1),{14,10,6,2},{15,11,7,3),{16,12,8,4)}。再次调用函数f,调用结

果为x[N][N]={{16,15,14,13),{12』l』0,9},{876,5},{4,3,2/}}。输出结果为16,11,6,

1,A选项正确。

37、软件调试的目的是()。

A、发现错误

B、改善软件的性能

C、改正错误

D、验证软件的正确性

标准答案:C

知识点解析:在对程序进行了成功的测试之后将进入程序调试,程序调试的任务是

诊断和改正程序中的错误。

38、下列叙述中正确的是

A、软件是程序、数据和文档

8、软件是程序和数据

C、软件是算法和数据结构

D、软件是算法和程序

标准答案:A

知识点解析:计算机软件由两部分组成:一是机器可执行的程序和数据;二是机器

不可执行的,与软件开发、运行、维护、使用等有关的文档。故选A选项

39、有以卜程序#include<stdio.h>structtt{intx;structtt*y;)s|2|={1,0,2,0};

main(){structtt*p=s;p->y=s;printf("%dM,++p->xi;)程序运行后的输出结果是

A、2

B、0

C、1

D、3

标准答案:A

知识点解析:*p=s,可得p指向s[0],p->y指向s[l],现p・>y=s,因此p->y指向

s[0]o因此p->x=l,++p->x等价于++(p->x),因此打印结果为2。答案%A选项。

40、有以下程序#include<stdio.h>#include<string.h>voidfun(char*s,intml,

intm2){chart,*p;p=s+mI;s=s+m2;while(s<p){t=*s;*s=*p;*p=t;s++;p—;}}

main(){charss[10]="012345678";inin=6;fun(ss,0,n-l);fun(ss,9,n);fun(ss,0,9);

printf("%s\n",ss);)程序运行后的输出结果是

A、012345

B、876543210

C、876543

D、12345678

标准答案:A

知识点解析:用1](、,【】11,1112)的作用是,如果ml>m2交换数组元素ss[ml],

ss[m2]o因此,由11侬,0,5)后5$的0,1,2,3,4,5,6,7,8,\0。fun(ss,9,6)后ss的0,1,2,34,5,

\0,8,7,6o壮11(50,0,9)后出的0,1,2,3,4,5,\0,8,7,6。因此打印结果012345。故答案为A

选项

二、程序填空题(本题共I题,每题1.0分,共I分C)

41、给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按

原来从高位到低位的顺序组成一个新的数,并作为函数值返回。例如,从主函数

输入一个整数:27638496,函数返回值为:26846。请在程序的下划线处填入正确

的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件

夹下的BLANK1.C中,不得增行或删行,也不得更改程序的结构!1#includeV

stdio.h>2unsignedlongfun(unsigncdlongn)3{unsignedlongx=0,s,i;intt;4

s=n;5/**********Cund**********/6i=1;7/

**********found**********/8while(_2_)9(t=s%10;10if(t%2==0){11/

**********found**********/12x=x+t*i;i=_3_;13}14s=s/10;15)16

returnx;17)18main()19{unsignedlongn=-l;20while(n>99999999IIn<0)

21{printffTleaseinput(0<n<100000000):‘');scanf(''%Id",&n);|22

printf(^^\nTheresultis:%ld\n'',fun(n));23)

标准答案:(1)1(2)s(3)i*10

知识点解析:函数fun的功能是将形参n中,各位上为偶数的数取出,组成新数。

第一空:由“if(t%2==0){x=x+t*i;i=_3_;}“可知,如果I是偶数,那么I添加

到返回值里面,比如第一次得到1=2,那么x=0+2*l;下一次得到了t=4,那么此

时x的值应该是2+2*10;再下——次得到t=2,那么x=22+2*100,即x的值是在

上一次值的基础上加上新得到的值乘以其权值,因此i是代表权值。第一空处是初

始化i,第一次进入if语句时市,x是个I位数,此时权值i应为1,故第一空处应

为力”。第二空:第二空处是填循环的终止条件,在循环体内,s每次缩小10倍,

在最后一次进入循环的时候,s是一个一位数,s/10之后s变成0,下次就不应该

进入while循环,因此while循环的终止条件是s不为0,故第二空处为“s”或

“s!=0"。第三空:由第一空的分析可知权值i是在上一次的基础上增加10倍,故

第三空处应为“i*10”。

三、程序修改题(本题共[题,每题7.0分,共7分0)

42、给定程序MODII.C中,函数fun的功能是:判断输入的任何一个正整数n,

是否等于某个连续正整数序列之和。若是,则输出所有可能的序列,否则输出“不

能分解例如:当输入100时,输出:100=9+10+11+12+13+14+15+16

100=18+19+20+21+22请改正函数fun中指定部位的错误,使它能得出正确的结

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

程序:#includc<stdio.h>voidfun(intn)(intj,b,c>m>flag=O;for(b=1;b<

=n/2;b++){/**********found**********/n=m:c=b;wlii1e(m!=0&&m>

=c){/**********j^und**********/JY)—m~c•c++}/

**********found**********/if(m!=0){printf("%d=H,n);for(j=b;j<c-l;

j++)prinlf("%d+",j);printf(H%d\n",j);flag=l:}if(flag==O)prinlf("不能分解

\nH);)main(){intn;printf("请输入一个整数:");seailf(,'%dn,&n);

fun(n);}

标准答案:(l)m:n;(2)m:m-c;c++;(3)if(m==0)。

知识点解析:(1)每次循环,程序需要对n执行减去连续的正整数序列来判断n是

否刚好为0,即n是否是连续的正整数序列之和,所以需要使用临时变量m寄存n

的值,每次循环对m执行减运算操作,不满足继续下一轮。另外,程序声明变量

m时,未

温馨提示

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

评论

0/150

提交评论