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

下载本文档

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

文档简介

国家二级C语言机试(C语言程序设

计)模拟试卷34

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

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

A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化

B、循环队列中的元素个数随队头指针的变化而动态变化

C、循环队列中的元素个数随队尾指针的变化而动态变化

D、以上说法都不对

标准答案:A

知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指

针front指向队头元素的前一个位置因此,从队头指针front指向的后一个位置直

到队尾指针rear指向的位置之间,所有的元素均为队列中的元素。所以循环队列

中的元素个数随队头指针和队尾指针的变化而变化。故A选项正确。

2、下列关于栈的叙述中,正确的是()。

A、栈底元素一定是最后入栈的元素

B、栈顶元素一定是最先入栈的元素

C、栈操作遵循“先进后出''的原则

D、以上说法均错误

标准答案:C

知识点解析:栈顶元素总是后被插入的元素,也是最先被删除的元素;栈底元素总

是最先被插入的元素,也是最后才被删除的元素;栈的修改是按“后进先出”的原则

进行的。因此,栈称为“先进后出”表,或“后进先出''表,故C选项正确。

3、设某二叉树的后序序列为CBA,中序序列为ABC,则该二叉树的前序序列为

()。

A、BCA

B、CBA

C、ABC

D、CAB

标准答案:C

知识点解析:后序序列为CBA,中序序列为ABC,则说明,A为根结点,并且B

和C均在A的右子树上;结点B和C中,后序序列为CB,中序序列为BC,则说

明结点C在结点B的右子树上,根据分析可得,该二叉树的前序序列为ABC,答

案选C。

4、结构化程序设计主要强调的是()。

A、程序的规模

B、程序的效率

C、程序设计语言的先进性

D、程序易读性

标准答案:D

知识点解析:结构化程序设计强调的是程序的易读性。

5、为了使模块尽可能独立,要求()。

A、模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

B、模块的内聚程度耍尽量高,且各模块间的耦合程度要尽量弱

C、模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱

D、模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

标准答案:B

知识点解析•:系统设计的质量主要反映在模块的独立性上。评价模块独立性的主要

标准有两个:一是模块之间的耦合,它表明两个模块之间互相独立的程度;二是模

块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地

弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。

6、在结构化方法中,软件功能属于软件开发中的()阶段。

A、详细设计

B、需求分析

C、总体设计

D、编程调试

标准答案:C

知识点解析:总体设计过程通常由两个主要阶段组成:系统设计,确定系统的具体

实现方案;结构设计,确定软件结构。为确定软件结构,首先需要从实现角度把复

杂的功能进一步分解.分析员结合算法描述仔细分析数据流图中的每个处理,如果

一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。

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

A、程序执行的效率与数据的存储结构密切相关

B、程序执行的效率只取决于程序的控制结构

C、程序执行的效率只取决于所处理的数据量

D、以上说法均错误

标准答案:A

知识点解析:程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结

构、所处理的数据量等有关。

8、关系数据库管理系统所管理的关系是()。

A、若干个二维表

B、一个DBF文件

C、一个DBC文件

D、若干个DBC文件

标准答案:A

知识点解析:在关系数据库中,一个表就是一个关系,关系数据库管理系统管理的

关系就是多个二维表。

9、结构化程序设计中,下面对goto语句使用描述正确的是()。

A、禁止使用goto语句

B、使用goto语句程序效率高

C、应避免滥用got。语句

D、以上说法均错误

标准答案:C

知识点解析:结构化程序设计中,要注意尽量避免got。语句的使用,故C选项正

确。

10、设有如下三个关系表:下列操作中正确的是()。

A、T=RCIS

B、T=RUS

C、T=RxS

D、T=R/S

标准答案:B

知识点解析:两个相同结构关系的“并”是由属于这两个关系的元组组成的集合。

11、以下选项中合法的标识符是()。

A、_11

B、1—1

C、1_1

D、1

标准答案:A

知识点解析:标识符由字母、数字或下画线组成,并且数字不能开头。故A选项

是合法的标识符。

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

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

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

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

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

标准答案:B

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

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

13、若有定义:inta=0,b=0,c=0,d=0;,有C语言表达式(a++&&b++)?c++:

d++,以下关于其执行顺序的叙述中正确是()。

A、先执行a++,表达式a++的值为0,由此即可确定(a++&&b++)值为0,因比执

行d++

B、先执行a++,表达式a++的值为0:再执行b++,表达式b++的值为0,由此可

确定(a++&&b++)值为0,因此执行d++

C、先执行a++,表达式a++的值为1;再执行b++,表达式b++的值为1,由此可

确定(a++&&b++)值为1,因此执行C++

D、先执行b++,表达式b++的值为1;再执行a++,表达式a++的值为1,由此可

确定(a++&&b++)值为1,因此执行c++

标准答案:A

知识点解析:把握前置运算和后置运算的基本运算规则。

14、表达式:(int)((douhle)9/2)—(9)%2的值是()。

A、0

B、3

C、4

D、5

标准答案:B

知识点解析:运算符和“%”的优先级高于“一”,所以先进行除法和求余运算,

再进行减法运算。强制类型转换表达式的形式:(类型名)(表达式)。“9/2”结果为

4,转换成double类型再转换成int类型结果依然为4,(9)%2的结果为1,4—1的

最后结果为3o

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

A、函数体必须由{开始

B、C程序必须由main语句开始

C、C程序中的注释可以嵌套

D、C程序中的注释必须在一行里完成

标准答案:A

知识点解析:函数体是函数首部下面的花括号内的部分,所以函数休必须由{开

始,A项正确。一个源程序文件可以包括预处理命令、全局声明、函数定义,程序

总是从main函数开始执行的,不是rflain语句,B项错误。C程序中允许两种注

释,以//开头的单行注释;以/*开始,以*/结束的块式注释,D项错误。函数

可以嵌套,注释不能嵌套,C项错误。

16、若有以下程序段:intr=8:printfC%d\n",r>>l);输出结果是()。

A、16

B、8

C、4

D、2

标准答案:C

知识点解析•:C语言中“>>”是对二进制的右移运算符,右移相当于将原数做除二

操作,它将原数右移相应位数,并将移出的位舍去,在高位补0,将所得的结果再

赋值给变量。本题中8的二进制为00001000,右移一位得到00000100,所以是

40

17、以下能对一维数组a进行初始化的语句是()。

A>inta[5]=(0,1,2,3,4);

inta(5)={};

C>inta[3]={0,I,2);

D、inta{5}={10*1);

标准答案:C

知识点解析:选项A,数组可以看作是若干个相同数据类型元素的有序集合,因此

以集合的形式对其初始叱,使用{}对其初始化;选项BD,常量表达式只能放在中

括号口中.故「选项正确C

18、若有定义:inta;floatb;doublec;,程序运行时输入:123V回车>,能把

1输入给变量a、把2输入给变量b、把3输入给变量c的输入语句是()。

A、scanf("%d%f%ir,&a,&b,&c);

B、scanf("%d%f%l『.,&a,&b,&c);

C、scanf("%d%If%If',&a,&b,&c);

D、scanf("%d%f%f,&a,&b,&c):

标准答案:A

知识点解析:在scanf()函数中,a变量为整数用%d格式字符串,a变量为单精度

数用%f格式字符串,a变量为双精度数用%lf格式字符串,只有A选项正确。

19、下列数据中属于“字符串常量”的是()。

A、

B、{ABC}

C、abc\O,

D、a'

标准答案:A

知识点解析:在C语言中,若干个字符构成字符串,用单引号标识字符,用双引

号标识字符串。选项A,用双引号标识字符串,正确:选项B和C,分别用花括

号和单引号标识字符串,错误;选项D,标识字符。故A选项正确。

20、当变量C的值不为2、4、6时,值为“真”的表达式是()。

A、(c==2)||(c==4)||(c==6)

13、(c>=2&&c<=6)||(c!=3)||(c!=5)

C、(c>=2&&c<=6)&&!(c%2)

D、(c>=2&&c<=6)&&(c%2!=l)

标准答案:B

知识点解析:本题主要考查的是逻辑表达式。逻辑与运算中只有两边的表达式同时

为真,最后结果才为真;参与逻辑或运算的表达式只要有一个为真,最后结果就为

真。选项A中表达式的意思是当c等于2或4或6时,表达式的值为真,否则为

假,所以不满足题意。选项C中表达式的意思是当c大于等于2且小于等于6,并

且c不是奇数时,表达式的值为真,否则为假。此时满足该表达式的c只能取值为

2、4、6,所以也不满足题意。选项D中后面一个子表达式(c%21=1)和选项C中

的!(c%2)是等价的,都是判断c不是奇数,因此也不满足题意。故B选项正确。

21、有以下程序:#include<stdio.h>main()(floata,b,C,t:a=3;b=7;

c=l;if(a>b){t=a;a=b.b=t;)if(a>c){t=a;a=c;c=t;)if(b>c){t=b;b=c;

c=t;)printf("%5.2f,%5.2f,%5.2f,a,b,c);}程序运行后的输出结果

是(其中口代表空格)()。

A、口口3.00,口口1.00,口口7.00

B、口口3.00,口口7.00,口口1.00

C、口口I.00.口口3.00,□□7.()0

D、口口7.00,口口3.00,□□1.00

标准答案:C

知识点解析:本题考查if语句。该题包含了3个if语句,每个if语句后的{}都不

可省略,因为每个什中都包含了多条语句。首先判断条件a>b,由于3小于7,表

达式a>b不成立,因此不执行{l=a;a=b;b=t;);然后判断条件a>c,由于3大

于1,因此表达式a>c成立,则执行{t=a;a=c;c=t;),该表达式语句是用来交

换a和c的值,执行完后a为1,c为3;然后判断条件b>c,由于7大于c中的

3,因此b>c成立,则执行{t=b.b=c;c=t;},过程同上,执行后b为3,c为

7。printf语句用来输出a,b,c中的值,并且要求输出的每个数据宽度为5个空

格,小数部分保留2位,数据右对齐。故最后输出为C选项中所示结果。

22、有以下程序:#include<stdio.h>main(){inta=Lb=0;for(;a<5;a++)

{if(a%2==0)break;continue;b+=a:)printf("%d\n",b):}程序运行后的输出

结果是()。

A、0

B、1

C、10

D、4

标准答案:A

知识点解析:第一次循环,a=l,a%2!=0所以执行break,整个循环结束,所以

b=0o

23、有以下程序:#include<stdio.h>main()(intstlm=10,n=l;while(n<3)

{sum=sum—n;n++;(pnntt("%d»%d"»n,sum);)程序运行后的输出结果是

()o

A、2,8

B、3,7

C、3,8

D、2,7

标准答案:B

知识点解析:考查while循环。当循环条件n<3成立的时候,执行循环体

(sum=sum—n;n++;)中的语句。循环初值sum为10,n为1。首先判断循环条件

n73成立,开始第1次循环,执行sum=sum—n=10—1=9,执彳jn十十,即将n中的

值加1,执行后n为2;此时n中的值为2,sum中的值为9,循环条件n<3成

立,继续执行第2次循环,执行sum=sum—n=9一2=7,执行n++,即将n中的值

加I,执行后n为3;n为3时,循环条件不成立,结束循环,输出结果为3,7。

故B选项正确。

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

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

B、一条语句只能定义一个数组

C、每个数组包含一组具有同一类型的变量.这些变量在内存中占有连续的存储单

D、在引用数组元素时,下标表达式可以使用浮点数

标准答案:C

知识点解析:同类元素的集合称为数组,数组元素在内存中占据连续的存储空间,

答案C正确。方括号中可以为整型变量或者常量表达式,选项A错。在使用逗号

运算符的情况下,一条语句可以定义多个数组,选项B错。数组元素在数组中的

下标为整型常量或者变量构成的整型表达式,不能为浮点数,选项D错。

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

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

B、数组下标的下限由数组中第一个#零元素的位置决定

C、数组下标的下限由数组中第一个被赋值元素的位置决定

D、数组下标的下限是1

标准答案:A

知识点解析:A正确,charcl,c2,*c3,c4[40]表示定义了两个字符变量cl、c2,

一个字符指针c3,一个字符数组c4。数组的下限永远为0,选项B、C、D错,答

案选A。

26、设有定义:charp[]={T,2,3},*q=p;以下不能计算出一个char型数据

所占字节数的表达式是()。

A、sizeof(*q)

B、sizeof(char)

C、sizeof(p)

D、sizcot(ptOJ)

标准答案:C

知识点解析:数组名表示该数组的首地址,是一个地址常量,所以sizeof(p)求得的

是一个地址占用的字节数,即4个字节,答案选C。

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

A、语句chara[2]={”a”,“b"):是合法的,定义了一个包含两个字符的数组

B、语句inta口={0};是不合法的,遗漏了数组的大小

C、语句inta[8]={0};是合法的

D、语句chara[3]:a="ab":是合法的,因为数组有三个字符空间的容量,可以保

存两个字符

标准答案:C

知识点解析:考查一维数组以及字符数组的初始化。初始化的时候可以只给数组的

前面一部分元素设定初值,故C正确。字符数组中的每个元素为一个字符,需要

用单引号,选项A错。若对数组全部元素赋初值时,可以不指定数组元素的个

数,选项B错。定义字符数组时可以将字符串直接赋给该字符数组,其他情况则

不可以,选项D错。答案选C。

28、有以下程序:#include<stdio.h>intk=5;voidf(int*s){s=&k;}main()

{intm=3,*p=&m;f(p):printf("Md%d\n",m,*p);}程序的运行结果是

()o

A、33

B、55

C>35

D、53

标准答案:A

知识点解析:考查函数,'专参。C语言中,数据只能从实参单向传递给形参,指针作

为函数参数时,形参仍然作为实参的副本被赋值,形参指针变量的指向改变不能影

响实参指针变量的指向,结果不变,答案选A。

29、有以下程序:#include<stdio.h>main(){intx[3][3]={1,2,3,4,5,6,

7,8,9),i;for(i=l;i<3;i++)printf(',%dH,x[i][3—i]);}程序运行后的输出

结果是()。

A、2,4

B、6,8

C、3,7

D、2,6

标准答案:B

知识点解析:二维数组的起始行标和列标均为O,即x[0][0]=l。当i=l时,for循

环判断条件成立,输出x[l|[2]=6;此时i自增为2,开始第二次for循环,条件成

立,输出x[2][l]=8.故B选项正确。

3。、下列错误的定义是()。

A、int*p=&i,i;

int*p,i:

C、inti,*p=&i;

D、inti,*p;

标准答案:A

知识点解析:选项A,先定义一个整型指针变量p,然后将变量i的地址赋给p。

然而此时还未定义变量i,因此编译器无法获得变量i的地址,A选项错误。A与

C对比,选项C先定义变量i,则在内存中为i分配空间,因此i在内存空间的地址

就可以确定了,然后再定义p,此时可以为p赋i的地址,C选项正确。

31、有以下程序:#include<stdio.h>main(){inta[2][3]=((l,2,3),{4,5,

6)}:intb[3][2],i,j;for(i=0;i<=l;i++){for(j=0;j<=2;j++)

b[j][i]=a[i][j];}for(i=0;i<=2;i++){for(j=0;j<=l;j++)printf("%d",

b[j][j]);}}程序的运行结果是()。

A、123456

B、I35246

C、142536

D、132546

标准答案:C

知识点解析:本题考查for循环的嵌套以及二维数组的赋值和输出。第一个for循

环嵌套用来给二维数组b中的各元素赋值,执行完后得到b[3][2]={{l,4),{2,

5),{3,6}}。第二个for循环嵌套用来输出二维数组b中的各元素。依次输出为

b[0][0],b[0][l],b[l][0|,b[l][l],b[2][0],b[2][l],故输出结果为132546。

,,

32、若有定义语句:charts1="GOOD",*s2="good;以下选项中,能够输出

“GOOD”语句是()。

A、if(strcmp(sl,s2)!=0)puts(s2);

B、if(strcmp(sl,s2)!=0)puts(sl);

C、if(strcmp(sl,s2)==l)puts(sl);

D、if(strcmp(sl,s2)==0)puts(sl);

标准答案:B

知识点解析:strcmp(sl,s2)是字符串比较函数,比较方式是两个字符串从左自右

逐个字符进行比价(按照ASCII码值大小),以第一个不相同字符的大小作为比较结

果。由于大写字母的ASCII码值小于小写字母的ASCII码值,所以比较后的结果

为负值,故只有B选项符合题意。

33、有以卜程序:#include<stdio.h>unsignedfun(unsignednum){unsigned

k=l:do{k*=num%10;num/=10:}while(num):returnk:}main(){unsigned

n=26:printf("%d\nH,fun(n));}程序运行后的输出结果是()。

A、12

B、10

C、16

D、8

标准答案:A

知识点解析:程序首先执行main函数,执行primf「%d\n”,fun(n));即输出表达

式fun(6)的值,为了计算该表达式,需要调用函数func。此时main将n中的26作

为实参传递给fun的num,即num值为26,接着执行do—while语句。第1次循

环,执行k*=num%10,即k=k*(num%10)=1*(26%10)=6;执行num/=10,即

num=num/10=26/10=2;while后面循环条件为num,此时num为2,是非0

值,即表示循环条件成立,继续执行循环体。此时k为6,num为2,执行do-

while中的语句后,k为12,num为0。由丁,while后面循环条件为num,此时num

为0,表示循环条件不成立,结束循环,执行returnk,即返回至main函数中的被

调用处,执行main函数,执行printf语句,输出结果为12。

34、在C语言中,只有在使用时才占用内存单元的变量的是()。

A、auto^11register

extern和register

C、autoflstatic

D、staticregister

标准答案:A

知识点解析:C语言中,动态存储区域中存放的变量在使用时才分配内存空间。

auto变量的存储单元是分配在内存的动态存储区中,每当进入函数体时自动分配存

储单元。register变量也是自动类变量。static说明的变量为静态变量,静态变量在

内存的静态存储中占据着永久的存储单元,直至程序运行结束。extern说明的变量

为外部变量,属于全局变量,全局变量在整个程序运行期间都占用内存空间。

35、若有如下定义:char*ps[]={"aa","bb",Hcc","dd");,则以下叙述中正确的

是()。

A、*ps[0]是字符,A,

B、*ps[0]是字符串“aa”

C、ps[0]是字符,A'

D、ps是字符串“aa”

标准答案:B

知识点解析:对于指针数组,ps|O|代表的就是第一个字符串的地址。

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

A、在C语言中,预处理命令行都以#开头

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

C、#include<stdio.h>必须放在C程序的开头

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

标准答案:A

知识点解析:C语言中,凡是以#开头的都被称为编译预处理行,选项A正确;预

处理行可以放在C源程序的任何位置,习惯放在起始位置,选项B错误;语句

#include<stdio.h>必须放在使用文件stdio.h中用关方法的语句之前,但是不一

定非要放在C程序开头,选项C错误;预处理包括宏定义、文件包含和条件编译

等,选项D错误。

37、有以下程序:#include<stdio.h>main()(staticchara[]="Program",*ptr;

for(ptr=a;ptr<a+7;ptr+=2)putchar(*ptr);}程序运行后的结果为()。

A、Prog

B、Porm

C、rga

D、Por

标准答案:B

知识点解析:首先定义一个字符型数组a,并对a进行初始化,然后定义字符型指

针变量p。执行for语句,ptr=a表示将数组a的地址赋给ptr;ptr<a+7代表循环条

件,ptr+=2,即ptr=ptr+2。执行putchar(*ptr);即输出*pt所对应的字符。此时ptr

指向数组中的第1个元素,即a[0],因此*ptr表示a[0]中的值,即P,此时输出

P;然后执行ptr+=2,此时ptr指向数组中的第3个元素,即a⑵,输出0;然后执

行阿+=2,此时凡指向数组中的第5个元素,即a[4],输出r;然后执行pir+=2,

此时ptr指向数组中的第6个元素.即输出m:然后执行ptr+=2.得到

ptr=a+8<a+7,即循环条件不成立,循环结束,最终输出结果为Porm。

38、有以下程序:#include<stdio.h>main(){inti;FILE*fp;for(i=0;i<3;

i++){fp=fopen("res.txt","w");fj)utc('K'+i,fp);fclose(fp);}}程序运行后,

在当前目录下会生成一个res.txt文件,其内容是()。

A、M

B、EOF

C、KLM

D、L

标准答案:A

知识点解析:通过三次循环,最后i的值定格在2,最后储存值,K,+2=,M1所以

最后保存的数值为M。注意:fclose函数,每次都关闭文件,并且重新回到文件首

地址。

39、有以下程序:#include<stdio.h>structSt{intx:inty;}a[2]={5,7,2,

9);main(){printf("%dkn'\a[O].x);}程序运行后的输出结果是()。

A、10

B、18

C、14

D、63

标准答案:c

知识点脑析:首先是定义结构体st,st中共有两个整型成员x,y。然后定义一个st

类型的数组a,a的长度为2,即数组中含有两个st类型的元素,分别是a[0]和

a|l|o对a进行初始化,此题是按照存储顺序进行初始化,即将5赋给a[0]中的

x(即a[0].x=5),将7赋给a[0]中的y(即a[0].y=7),将2赋给a[l]中的x(即

a[l].x=2),将9赋给a⑴中的y(即a。].y=9)。执行main函数,输出表达式

a[0].y*a[l].x的值,即7*2的值14。

40、下列关于C语言文件的叙述中正确的是()。

A、文件由一系列数据依次排列组成,只能构成二进制文件

B、文件由结构序列组成,可以构成二进制文件或文本文件

C、文件由数据序列组成,可以构成二进制文件或文本文件

D、文件由字符序列组成,其类型只能是文本文件

标准答案:C

知识点解析:C语言将文件看作是一个字符(字节)的序列,即由一个一个字符(字

节)数据顺序组成。根据数据的组成形式,可将文件分为两种:①ASCII文件,又

称文本(text)文件,它的每一个字节可放一个ASCH码,代表一个字符;②二进制

文件,是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。所以

C文件就是一个字节流或一个二进制流。

二、程序填空题(本题共I题,每题7.0分,共[分0)

41、给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、

姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。

注意:不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>

typedefstruct]intnum;charname[9];floatscore[3J;JSTU;voidshow(STUtt)

{inti;printf("%d%s:",tt.num,tt.name);for(i=0;i<3;i++)printf("%

5.if,tt.score[i]);printf(n\n");}/******found******/voidmodify(J.

*ss,floata){inti;for(i=0;i<3;i++)/******found******/ss—>_2

*=a;}main(){STUstd={1,"Zhanghua'1,76.5,78.0,82.0);floata;

printf("Theoriginalnumberandnameandscores:\n");show(std);printf("Inputa

number:");scanf("%f',&a);/******found******/modifvC3ya);

printf("Aresultofmodifying:\n");show(std);}

标准答案:(l)STU(2)score[i](3)&std

知识点解析:本题考查:数组变量赋值;函数实参定义。本题是利用结构体存储

学生记录,对记录进行修改并由实参SS返回。填空1:实参SS是一个结构型指针

变量,所以应填STU。填空2:该学生的各科成绩都乘以一个系数a,所以应填

score|i]o填空3:函数的调用,由于函数定义时使用的指针结构型变量,所以应

填&std。

三、程序修改题(本题共1题,每题1.0分,共1分0)

42、以下给定程序中,函数fun的功能是:判断输入的任何一个正整数n,是否等

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

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

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

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

程序:#include<stdio.h>voidfun(intn){intj,b,c,m,flag=0;for(b=l;b<

=n/2.b++)[/******found******/n=m:c=b:while(m!=0&&m>=c){/

******jpQund******/JYI=nix:c++}/******found******/

{printf("%d=n,n);for(j=b;j<c—1;j++)printf("%d+",j);printf(H%d\n",

j);flag=1:}}if(flag=O)printf("不能分解\n"):}main(){intn;printf("请输入

一个整数:");scanf("%d'\&n);fun(n);}

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

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

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

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

时,未初始化它的值,所以此处应该修改为:m=n:o(2)语法错误,C语言中每

个语句必须以分号结束,修改为:m=mr;C+

温馨提示

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

评论

0/150

提交评论