1、福建省二级 C语言-4 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:18,分数:40.00)1.以下叙述中,错误的是_。(分数:2.00)A.结构类型的成员可以是数组B.结构数组是类型为结构的数组C.函数的返回值类型可以是结构类型D.数组的类型不可以是枚举类型2.设有如下语句:则下面叙述错误的是_。 struct TT int num; char name20; worker;(分数:2.00)A.struct是结构类型的关键字B.struct TT是结构类型C.worker是结构类型名D.name是结构成员名3.若有以下的结构类型别名定义: typedef st
2、ruct stu int num; char name20; STU; 则下面定义结构数组并进行初始化的语句中正确的是_。(分数:2.00)A.STU aa2=1, “wen“, 2, “que“;B.struct stu bb2=1, wen, 2, que;C.STU cc2=1, “wen“, 2, “que“;D.struct stu dd2=1, “wen“; 2, “que“;4.在声明一个结构变量时,系统分配给它的内存大小是_。(分数:2.00)A.该结构变量中第一个成员所需内存量B.该结构变量中最后一个成员所需内存量C.该结构变量的成员中占内存量最大者所需的容量D.该结构变量各
3、成员所需内存量的总和5.设有枚举类型定义语句: enum t1a1, a2=7, a3, a4=15; 则枚举常量 a2和 a3的值分别为_。(分数:2.00)A.7和 8B.2和 3C.7和 2D.1和 26.下列关于结构变量成员的引用,正确的是_。 struct init int a; char c; ; struct init*x;(分数:2.00)A.x*-aB.x*aC.x-aD.xa7.设有以下关于联合变量和结构变量的声明: typedef union int age; char name12; float weight; CLASS; CLASS one; 则语句: printf
4、(“%d“, sizeof(CLASS); 的执行结果是_。(分数:2.00)A.9B.20C.4D.128.阅读以下程序段,其中表达式(p+)+1)-m 的值是_。 struct S int m; int*q; ; int a6=1, 2, 3, 4, 5, 6; struct S n3=2, p=n; (p+)+1)-m; (分数:2.00)A.2B.4C.6D.89.设有如下程序段: (分数:2.00)A.第一条语句中,在声明变量 x1和 x2时,对 x1其的成员进行初始化是合法的B.变量 x1中不能同时存放其成员 a、b、c 的值C.赋值语句 x1=x2;是合法的D.成员变量 x1.a
5、和 x1.c具有相同的首地址10.以下程序的输出结果是_。 #includestdio.h int main() structchar x1; int x2; a3=“A“, 1, “B“, 2, “C“, 3; printf(“%d/n“, a0.x1-a1.x1/a2.x2); return 0; (分数:2.00)A.40B.43C.55D.8011.若 fp是指向某文件的指针,且已读到文件末尾,则库函数 feof(fp)的返回值是_。(分数:2.00)A.EOFB.0C.1D.NULL12.若 fp为文件指针,且文件已正确打开,i 为 int型变量,以下程序段的输出结果是_。 fsee
6、k(fp, 0, SEEK_END) i=ftell(fp); printf(“i=%d/n“, i);(分数:2.00)A.-1B.fp所指文件的长度,以字节为单位C.0D.213.若执行 fopen函数时发生错误,则函数的返回值是_。(分数:2.00)A.地址值B.0C.1D.EOF14.若要用:fopen 函数打开一个新的二进制文件,该文件要既能读也能写,则文件打开方式字符串应是_。(分数:2.00)A.“ab+“B.“wb+“C.“rb+“D.“ab“15.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是_。(分数:3.00)A.只写B.追加C.读或读写D.选项 B
7、和 C都正确16.在执行 fopen函数时,ferror 函数的初值是_。(分数:3.00)A.TUREB.-1C.1D.017.以下程序的运行结果是_。 #includestdio.h int main() FILE*fp; int i, a4=1, 2, 3, 4, b; fp=fopen(“data.dat“, “wb“); for(i=0; i4; i+) fwrite( felose(fp); fp=fopen(“data.dat“, “rb“); fseek(fp, -2L*sizeof(int), SEEK_END); fread( /*从文件中读取 sizeof(int)字节的
8、数据到变量 b中*/ fclose(fp); printf(“%d/n“, b); return 0; (分数:3.00)A.2B.1C.4D.318.以下程序的功能是_。 #includestdio.h int main() FILE*fp1, *fp2; fp1=fopen(“filel“, “r“); fp2=fopen(“file2“, “w“); while(!feof(fp1) fputc(fgetc(fp1), fp2); fclose(fp1); fclose(fp2); return 0; (分数:3.00)A.将磁盘文件的内容显示在屏幕上B.将两个磁盘文件合为一个C.将一个
9、磁盘文件复制到另一个磁盘文件中D.将两个磁盘文件合并后送屏幕二、填空题(总题数:30,分数:60.00)19.若自定义函数要求返回一个值,则在该函数体中应有一条 1 语句;若自定义函数要求不返回值,则在该函数说明时加一类型说明符 2。 (分数:2.00)20.为了使下面程序能够正确运行,程序的第 2行应填写的内容是 _ ,当输入的数值为 66和 99时,该程序输出的结果是 _ 。 #includestdio.h _ int main() double x1, x2; scanf(:%lf, %lf“, printf(“%lf/n“, max(x2, x1); return 0; double
10、max(double y1, double y2) return(y1y2?y1-y2:y2-y1); (分数:2.00)21.以下程序是输入 m、n 的值,求(m+n)/3+(m-n)/3 的值,请把程序补充完整。 #includestdio.h int main() int m, n; 1 printf(“Please input m, n:“); scanf(“%d, %d“, printf(“The sum=%d/n“, sum(m, n); return 0; int sum(int i, int j) int k; k= 2; return k; (分数:2.00)22.下面程序功
11、能是求两个浮点数的和,请把程序补充完整。 #includestdio.h void add(double x, double y, double*p) 1=x+y; int main() double a=55.44, b=44.55; double k; add(a, b, 2); printf(“%.2lf/n“, k); return 0; (分数:2.00)23.下面程序的运行结果是 1。 #includestdio.h void func(int*p) while(*p=10) printf(“%5d“, *p); p+; int main() int ar=2, 4, 8, 10,
12、 7, 9, 11, 5, 3; func(ar+1); printf(“/n“); return 0; (分数:2.00)24.下面程序的输出结果为 1。 #includestdio.h int func(int m, int n) return(m*n); int main() int a=3, b=11, c=8, d; d=func(func(a, b), c); printf(“%d/n“, d); getchar(); return 0; (分数:2.00)25.以下程序的功能是从二维数组中找出主对角线上元素的最小值,请把程序补充完整。 #includestdio.h int sm
13、all(int a55) int i, vm; vm=a00; for(i=1; i5; i+) if(vmaii) /*主对角线上元素为 aii*/ vm= 1 return(vm); int main() int i, j, vmin; int array55; for(i=0; i5; i+) for(j=0; j5; j+) scanf(“%d“, /*为数组各元素赋值*/ vmin=small( 2); printf(“vmin=%d/n“, vmin); return 0; (分数:2.00)26.下面程序的运行结果是 1,函数 strcat()的功能是 2。 #includest
14、dio.h char*streat(char*s1, char*s2) char*p=s1; while(*p!=“/0“)p+; while(*p+=*s2+)!=“/0“); return s1; int main() char str130=“I learn“; char*str2=“C language.“; char*s; s=strcat(str1, str2); printf(“/n%s/n%s/n“, s, str1); return 0; (分数:2.00)27.下面程序的功能是求 1!+2!+3!+9!,请把程序补充完整。 #includestdio.h float fra
15、csum(int n) /*求 n!*/ if(n=1) return(1); /*递归结束条件,当 n=1时,n!=1*/ else return(n* 1); /*递归调用*/ int main() int i=1; float int, sum; sum= 2; while(i=9) sum+= 3; i+; printf(“%.of/n“, sum); return 0; (分数:2.00)28.下面程序的运行结果是 1。 int n=10; int func(int*p) n+=*p; *p+=n; printf(“%d, %d/n“, *p, n); return(n); int
16、main() int m=6, pand=8; pand=func( printf(“/n%d, %d, %d/n“, m, pand, n); return 0; (分数:2.00)29.下面程序的运行结果是 1。 int m, n; int fun() m=88; n=99; return(n); int main() int m=55, n=66; printf(“/n%d, %d, %d, %d/n“, m, fun(), m, n); return 0; (分数:2.00)30.下面程序的运行结果是, 。 #includestdio.h void fun(int*s) static
17、int i=0; do si+=si+1; while(+i3); int main() int i, a10=0, 1, 2, 3, 4; for(i=1; i3; i+) fun(a); for(i=0; i5; i+) printf(“%d“, ai); printf(“/n“); return 0; (分数:2.00)31.结构类型定义中的成员列表给出 n个成员的声明,成员可以是基本类型变量、数组、指针,也可以是 1。 (分数:2.00)32.结构变量的成员如果是基本类型数据,可以以“结构变量名.成员名”的形式参加各种运算,而结构变量一般不能直接参加各种运算,但取地址和 1 运算除外。
18、 (分数:2.00)33.函数的参数是结构类型指针,则调用该函数时所提供的对应的实参可以是同类型结构变量的地址、结构指针以及 1。 (分数:2.00)34.结构变量的长度等于所有成员长度之和,而联合变量的长度等于 1。 (分数:2.00)35.联合变量有以下三个主要用途:(1)节省内存空间;(2)在数据处理问题中,可以用一个数据域存放不同类型的对象; 1 2。 (分数:2.00)36.定义枚举类型时,必须给出枚举值表,该值表包含若干个命名的整型常量,它定义了该类型的 1。 (分数:2.00)37.下面的语句定义了结构类型 stu,并说明了结构变量 person: struct stu int
19、num; char name20; person; 若要定义 stu的别名 PERSON,其正确的定义形式为: 1。 (分数:2.00)38.以下程序运行后的输出结果是 1。 #includestdio.h struct porb char*name; int count; x=“li ning“, 19, “lang ping“, 21, “zhu jian hua“, 20; int main() int j; for(j=0; j3; j+) printf(“%s:%d/n“, xj.name, xj.count); return 0; (分数:2.00)39.以下程序运行后的输出结果是
20、 1。 #includestdio.h int main() struct time int h; int m; int s; ; struct time*p, audit=8, 30, 0; p= printf(“/naudition time is %2d:%2d:%2d“, p-h, p-m, p-s); return 0; (分数:2.00)40.以下程序运行后的输出结果是 1。 #includestdio.h typedef struct int no; double score; REC; void fun(REC x) x.no=20; x.score=92.5; int mai
21、n() REC a=10, 80.0; fun(a); printf(“%d, %lf/n“, a.no, a.score); return 0; (分数:2.00)41.文件操作步骤通常是:打开、操作和 1。 (分数:2.00)42.按指定格式输出数据到文件中的函数是 1,按指定格式从文件输入数据的函数是 2,判断文件指针到文件末尾的函数是 3。 (分数:2.00)43.输出一个数据块到文件中的函数是 1,从文件中输入一个数据块的函数是 2;输出一个字符串到文件中的函数是 3,从文件中输入一个字符串的函数是 4。 (分数:2.00)44.将文件指针移到文件当前位置前 40个字节的 C语言语句
22、是 1,将文件指针移到文件当前位置后 10个字节的 C语言语句是 2,将文件指针移到文件开始的函数是 3,将文件指针移到文件结束的函数是 4,得到当前文件指针的函数是 5。 (分数:2.00)45.在 C程序中,数据可用 1 和 2 两种代码形式存放。 (分数:2.00)46.以下程序的功能是将文件 stud_data中第 i个学生的姓名、学号、年龄、性别输出,请把程序补充完整。 #includestdio.h struct student_type char name10; int num; int age; char sex; stud10; int main() int i; FILE
23、1; if(fp1=fopen(“stud_data“, “rb“)=NULL) printf(“error!/n“); exit(0); scanf(“%d“, fseek( 2); fread( 3, sizeof(struct student_type), 1, fp1); printf(“%s%d%d%c/n“, studi.name, studi.num, studi.age, studi.sex); fclose(fp1); return 0; (分数:2.00)47.以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件中形成文本文件,并将字符的个数写到
24、文件尾部,请把程序补充完整。 #includestdio.h int main() FILE*fp; char ch, fname32; int count=0; printf(“Input the filename:“); gets(fname); if(fp=fopen( 1, “w+“)=NULL) printf(“Can“t open file:%s/n“, fname); exit(0); printf(“Enter data:/n“); while(ch=getchar()!=“#“) fputc(ch, fp); count+; fprintf( 2, “/n%d/n“, cou
25、nt); fclose(fp); return 0; (分数:2.00)48.以下程序从一个二进制文件中读入结构体数据,并把结构体数据显示在屏幕上,请把程序补充完整。 #includestdio.h struct rec int num; float total; ; void recout( 1) struct rec r; while(!feof(f) fread( printf(“%d, %f/n“, 3); int main() FILE*f; long count=0; f=fopen(“bin.dat“, “rb“); recout(f); fclose(f); return 0;
26、 (分数:2.00)福建省二级 C语言-4 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:18,分数:40.00)1.以下叙述中,错误的是_。(分数:2.00)A.结构类型的成员可以是数组B.结构数组是类型为结构的数组C.函数的返回值类型可以是结构类型D.数组的类型不可以是枚举类型 解析:解析 结构类型成员可以是基本类型变量、数组,也可以是另一结构类型变量等,因此选项 A是正确的;结构数组就是结构类型的数组,即结构数组的成员都是同一结构类型的数据对象,因此选项 B也是正确的;函数的返回值类型可以是基本数据类型,也可以是用户自定义的数据类型,因此选项 C也是正确的。选项
27、 D则是错误的,这是因为数组的类型可以是基本数据类型,也可以是用户自定义的数据类型,枚举类型虽然是由用户自行定义的,但它仍属于基本数据类型,所以数组的类型可以是枚举类型。2.设有如下语句:则下面叙述错误的是_。 struct TT int num; char name20; worker;(分数:2.00)A.struct是结构类型的关键字B.struct TT是结构类型C.worker是结构类型名 D.name是结构成员名解析:解析 考察定义结构类型和定义结构变量的一般格式: struct结构类型名 /*定义结构类型的格式*/ 成员列表; ; struct结构类型名 变量名表; /*定义结构
28、类型变量的格式*/ 就不难看出选项 A、B、D 都是正确的,而选项 C是错误的。特别需要指出的是,worker 是类型为 struct TT的结构变量的名称,而非结构类型名。3.若有以下的结构类型别名定义: typedef struct stu int num; char name20; STU; 则下面定义结构数组并进行初始化的语句中正确的是_。(分数:2.00)A.STU aa2=1, “wen“, 2, “que“;B.struct stu bb2=1, wen, 2, que;C.STU cc2=1, “wen“, 2, “que“; D.struct stu dd2=1, “wen“
29、; 2, “que“;解析:解析 求解本题必须应用类型别名定义和对结构数组初始化方面的知识。本题中 STU被定义成struct stu的别名,与 struct stu具有相同的作用,都可以用来定义结构变量。STU 中的成员 name是字符数组,在初始化时,对应的初值应该是用双引号括起来的字符序列(字符串常量),故选项 A、B 均错误。数组的初始化值表可以包含多个元素,之间用逗号分隔,选项 D中,结构数组 dd的初始化值表中的两个元素之间使用分号分隔,导致语法错误,故选项 D错。选项 C用 struct stu的别名 STU定义了含有两个元素的结构数组 CC并对其进行初始化,其格式完全符合结构数
30、组定义和初始化的语法及相关规定,故正确的选项为 C。4.在声明一个结构变量时,系统分配给它的内存大小是_。(分数:2.00)A.该结构变量中第一个成员所需内存量B.该结构变量中最后一个成员所需内存量C.该结构变量的成员中占内存量最大者所需的容量D.该结构变量各成员所需内存量的总和 解析:解析 结构类型是聚合数据对象的抽象,用它创建的结构变量包含 n个成员,每个成员又都是相对独立的数据对象,因此必须拥有各自的内存空间,相互不能共用(这是结构变量与联合变量的根本区别)。结构变量的 n个成员所需的内存空间分配在一片连续的内存区域中,该内存区域的大小就是其所有成员所需的内存空间之和。所以正确的选项为
31、D,而选项 A、B、C 均错误。5.设有枚举类型定义语句: enum t1a1, a2=7, a3, a4=15; 则枚举常量 a2和 a3的值分别为_。(分数:2.00)A.7和 8 B.2和 3C.7和 2D.1和 2解析:解析 定义枚举类型时必须给出其值域,值域用枚举值表来表示。枚举值表中的每个值都是一个命名的整型常量,称为枚举常量,其格式为:名=整数。可以给枚举常量指定值,默认的情况下(只给名没给整数值),第一个枚举常量的值是 0,后面的枚举常量的值依次加 1。上面的语句中 a1没有指定整数值,故采用默认值 0,a2 有指定的整数,其值为 7,而 a3又没有指定整数值,其默认值就是 a
32、2+1,即为8。因此选项 A正确,而其余的选项皆错误。6.下列关于结构变量成员的引用,正确的是_。 struct init int a; char c; ; struct init*x;(分数:2.00)A.x*-aB.x*aC.x-a D.xa解析:解析 从语句 struct init*x;可以看出 x是结构指针,结构指针成员可表示为:结构指针名一成员名或(*结构指针名).成员名。该表示形式实际上是通过结构指针实现对该指针指向的结构变量成员的间接访问。对照以上四个选项,只有选项 C所给的对成员 a的引用(x-a)符合结构指针成员的表示格式,其余 3个选项均有语法错误,故 C为正确的答案。7.
33、设有以下关于联合变量和结构变量的声明: typedef union int age; char name12; float weight; CLASS; CLASS one; 则语句: printf(“%d“, sizeof(CLASS); 的执行结果是_。(分数:2.00)A.9B.20C.4D.12 解析:解析 联合类型 CLASS中,包含的成员的数据类型有 int、char 和 float,在 Visual C+中它们的字节数分别是 4、1、4。 联合类型的长度等于其成员中字节数最多者,可以看出 CLASS的三个成员中,name 的字节数最多,name是元素个数为 12的字符数组,nam
34、e 的字节数即为 12个字节,所以 CLASS的长度亦为 12个字节。题中printf语句输出的是 CLASS类型的长度,即 12。所以选项 D是正确的答案,其余选项错误。8.阅读以下程序段,其中表达式(p+)+1)-m 的值是_。 struct S int m; int*q; ; int a6=1, 2, 3, 4, 5, 6; struct S n3=2, p=n; (p+)+1)-m; (分数:2.00)A.2B.4 C.6D.8解析:解析 结构数组初始化后,其各个元素的值如图 1所示。 图 1 初始化后的 n数组可以看出 n0.m=2,n1.m=4,n2.m=6,当赋值表达式 p=n被
35、执行后,类型为 S的结构指针 p指向类型为 S的结构数组 n的第一个元素,即指向 n0。表达式(p+)+1)-m 包含三个操作:其一,利用 p指针的当前值,通过(p+)+1 运算产生一个新指针,该指针指向 n1(参见图 2);其二,通过新指针间接访问 n1的成员 m,该成员的值是 4;其三,对 p指针执行后增量,使其也指向结构数组 n的第 2个元素,即指向 n1。 9.设有如下程序段: (分数:2.00)A.第一条语句中,在声明变量 x1和 x2时,对 x1其的成员进行初始化是合法的 B.变量 x1中不能同时存放其成员 a、b、c 的值C.赋值语句 x1=x2;是合法的D.成员变量 x1.a和
36、 x1.c具有相同的首地址解析:解析 定义联合类型的目的是将若干个变量组织在一起,使它们能在不同的时间占用同一段内存空间。由于联合的各个成员共用一段存储空间,所以,这些成员都具有相同的首地址并且在任一时刻,只能有一个成员可以占据这段空间;再则 C语言允许同类型的联合变量之间进行整体赋值,因此,B、C、D选项是正确的。定义联合变量时,不能同时对其成员进行初始化,显然,选项 A是错误的。10.以下程序的输出结果是_。 #includestdio.h int main() structchar x1; int x2; a3=“A“, 1, “B“, 2, “C“, 3; printf(“%d/n“,
37、 a0.x1-a1.x1/a2.x2); return 0; (分数:2.00)A.40B.43 C.55D.80解析:解析 结构数组 a有三个元素,每个元素都是一个结构变量,其第一成员是字符变量,第二成员是整型变量,当上面的程序对该结构数组初始化后,各元素及其分量值如图所示: 11.若 fp是指向某文件的指针,且已读到文件末尾,则库函数 feof(fp)的返回值是_。(分数:2.00)A.EOFB.0C.1 D.NULL解析:解析 库函数 feof()测试文件指针否到达文件的末尾,如果到达文件末尾,函数的返回值为 1(真),如果未到达文件尾,函数返回 0(假),因此答案为 C。12.若 fp
38、为文件指针,且文件已正确打开,i 为 int型变量,以下程序段的输出结果是_。 fseek(fp, 0, SEEK_END) i=ftell(fp); printf(“i=%d/n“, i);(分数:2.00)A.-1B.fp所指文件的长度,以字节为单位 C.0D.2解析:解析 本题主要考查设置文件位置的函数 fseek和获取文件指针当前位置的函数ftell,fseek(fp, 0, SEEK_END)把文件指针移到文件末尾,因此 ftell返回的是 fp所指文件的长度(以字节为单位)。13.若执行 fopen函数时发生错误,则函数的返回值是_。(分数:2.00)A.地址值B.0 C.1D.E
39、OF解析:解析 当 fopen出错,函数返回 NULL值(NULL 在 stdio.h文件中已被定义为 0)。14.若要用:fopen 函数打开一个新的二进制文件,该文件要既能读也能写,则文件打开方式字符串应是_。(分数:2.00)A.“ab+“B.“wb+“ C.“rb+“D.“ab“解析:解析 本题考查 fopen函数的使用文件模式,请参考教材 9-1表,“wb+“是读写打开或建立一个二进制文件。15.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是_。(分数:3.00)A.只写B.追加C.读或读写 D.选项 B和 C都正确解析:解析 从指定的文件读入一个字符,文件的打
40、开方式可以是读或读写。16.在执行 fopen函数时,ferror 函数的初值是_。(分数:3.00)A.TUREB.-1C.1D.0 解析:解析 执行 fopen函数时,ferror 函数的初值自动置为 0。17.以下程序的运行结果是_。 #includestdio.h int main() FILE*fp; int i, a4=1, 2, 3, 4, b; fp=fopen(“data.dat“, “wb“); for(i=0; i4; i+) fwrite( felose(fp); fp=fopen(“data.dat“, “rb“); fseek(fp, -2L*sizeof(int)
41、, SEEK_END); fread( /*从文件中读取 sizeof(int)字节的数据到变量 b中*/ fclose(fp); printf(“%d/n“, b); return 0; (分数:3.00)A.2B.1C.4D.3 解析:解析 以上程序先通过循环把数组 a的 4个元素值写入文件 data.dat中,然后又把文件以读的方式打开,并把文件指针从文件尾往文件头方向移动两个整型量的位置,最后从当前位读一个整型长度的值并输出,所以读到的是 3,答案为 D。18.以下程序的功能是_。 #includestdio.h int main() FILE*fp1, *fp2; fp1=fopen
42、(“filel“, “r“); fp2=fopen(“file2“, “w“); while(!feof(fp1) fputc(fgetc(fp1), fp2); fclose(fp1); fclose(fp2); return 0; (分数:3.00)A.将磁盘文件的内容显示在屏幕上B.将两个磁盘文件合为一个C.将一个磁盘文件复制到另一个磁盘文件中 D.将两个磁盘文件合并后送屏幕解析:解析 以上程序段实现读出文件 file1的每个字符,并写入文件 file2中。二、填空题(总题数:30,分数:60.00)19.若自定义函数要求返回一个值,则在该函数体中应有一条 1 语句;若自定义函数要求不返
43、回值,则在该函数说明时加一类型说明符 2。 (分数:2.00)解析:带有表达式的 return void20.为了使下面程序能够正确运行,程序的第 2行应填写的内容是 _ ,当输入的数值为 66和 99时,该程序输出的结果是 _ 。 #includestdio.h _ int main() double x1, x2; scanf(:%lf, %lf“, printf(“%lf/n“, max(x2, x1); return 0; double max(double y1, double y2) return(y1y2?y1-y2:y2-y1); (分数:2.00)解析:double max(
44、double, double); 33.000000 说明:因函数 max()的定义在调用之后,所以在调用之前应声明它。21.以下程序是输入 m、n 的值,求(m+n)/3+(m-n)/3 的值,请把程序补充完整。 #includestdio.h int main() int m, n; 1 printf(“Please input m, n:“); scanf(“%d, %d“, printf(“The sum=%d/n“, sum(m, n); return 0; int sum(int i, int j) int k; k= 2; return k; (分数:2.00)解析:int su
45、m(int, int); (i+j)/3+(i-j)/3解析 第一空是函数声明;第二空是按计算公式计算(m+n)/3+(m-n)/3的值。22.下面程序功能是求两个浮点数的和,请把程序补充完整。 #includestdio.h void add(double x, double y, double*p) 1=x+y; int main() double a=55.44, b=44.55; double k; add(a, b, 2); printf(“%.2lf/n“, k); return 0; (分数:2.00)解析:*P p+; int main() int ar=2, 4, 8, 10
46、, 7, 9, 11, 5, 3; func(ar+1); printf(“/n“); return 0; (分数:2.00)解析:4 8 10 7 9解析 在调用函数 func()时,传递给形参 P的是数组 ar的第 2个元素的地址。函数func()的功能是从数组 ar的第 2个元素开始,将数组的各元素值依次输出,直到元素值大于 10为止。24.下面程序的输出结果为 1。 #includestdio.h int func(int m, int n) return(m*n); int main() int a=3, b=11, c=8, d; d=func(func(a, b), c); pr
47、intf(“%d/n“, d); getchar(); return 0; (分数:2.00)解析:264。解析 这是一个嵌套调用的例子。主函数中,第一次执行函数调用 func(a,b),得出函数返回值 a*b,第二次执行函数调用 func(a*b, c),得出函数返回值 a*b*c。25.以下程序的功能是从二维数组中找出主对角线上元素的最小值,请把程序补充完整。 #includestdio.h int small(int a55) int i, vm; vm=a00; for(i=1; i5; i+) if(vmaii) /*主对角线上元素为 aii*/ vm= 1 return(vm); int main() int i, j, vmin;