【文档说明】国家开放大学C语言程序设计形考任务1-4参考答案.pdf,共(28)页,682.372 KB,由小喜鸽上传
转载请保留链接:https://www.ichengzhen.cn/view-156411.html
以下为本文档部分文字说明:
国家开放大学《C语言程序设计》形考任务1-4参考答案形考任务1一、选择题(共40分,每小题2分)1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。A.mainB.MAINC.nameD.f
unction2.C语言源程序文件的缺省扩展名为()。A.cppB.exeC.objD.c3.由C语言目标文件连接而成的可执行文件的缺省扩展名为()。A.cppB.exeC.objD.c4.程序运行中需要从键盘上输入多于一个数据
时,各数据之间应使用的分隔符为()。A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车5.每个C语言程序文件的编译错误被分为()。A.1类B.2类C.3类D.4类6.不符合C语言规定的复合语句是()。
A.{}B.{;}C.{x=0;}D.{y=10}7.C语言程序中的基本功能模块为()。A.表达式B.标识符C.语句D.函数8.在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()。A.表达式B.语句C.参数表D.函数体9.在一个程序文件中,若要使用#i
nclude命令包含一个用户定义的头文件,则此头文件所使用的起止定界符为一对()。A.尖括号B.双引号C.单引号D.花括号10.在C语言程序中,多行注释语句使用的开始标记符为()。A.//B./*C.*/D.**11.在printf()函数调用的格式字符串中,若使用格式符为“%c”,则对
应输出的数据类型为()。A.charB.intC.floatD.double12.在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输出的数据占用的字符位置个数为()。A.5B.4C.3D.613.转义字符'\\'表示的字符是()。A.单引号B.双引号C.反斜线D.问号
14.枚举类型中的每个枚举常量的值都是一个()。A.整数B.浮点数C.字符D.逻辑值15.运算符优先级最高的是()。A.=B.*=C.&&D.!=16.设x和y均为逻辑值,则x&&y为真的条件是()。A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假17.设有
语句“inta=12;a+=a*a;”,则执行结束后,a的值为()。A.12B.144C.156D.28818.x>0&&x<=10的相反表达式为()。A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>1
019.字符串“a+b=12\n”的长度为()。A.6B.7C.8D.920.在下列的符号常量定义中,错误的定义语句格式为()。A.constintM1=10;B.constintM2=20;C.constintM310;D.constcharmark
='3';二、判断题(共60分,每小题2分。叙述正确则回答“是”,否则回答“否”)21.C语言中的每条简单语句以分号作为结束符。(√)22.C语言中的每条复合语句以花括号作为结束符。(×)23.在C语言程序中,在行尾使用注释的开始标记符为一对单斜线字符。(√)24.注释内容的
开始所使用的标记符为/*,则注释内容的结束所使用的标记符为*/。(√)25.在一个C语言程序文件中,若要包含一个头文件,则使用以百分号开始的预处理命令。(×)26.于输出表达式值的标准输出函数是printf()。(√)27.当不需要函数返回任何值时,则需要使用保留
字void作为函数的返回值类型。(√)28.每个C程序文件在编译时可能出现有警告性错误,其对应的标识符为error。(×)29.十进制数25表示成符合C语言规则的八进制数为31。(×)30.十进制数25表示成符合C语言规则的十六进制数为0x19。(√)31.在C语言中,转义字符'\n
'表示一个换行符。(√)32.执行“printf("%c",'F'-2);”语句后得到的输出结果为H。(×)33.已知字符'C'的ASCII码为67,当执行“intx='C'+5;”语句后x的值为72。(√)34.假定一
个枚举类型的定义为“enumRB{ab,ac=3,ad,ae}x=ad;”,则x的值为2。(×)35.float的类型长度为8。(×)36.在C语言中,常数28和3.26具有相同的数据类型。(×)37.若需要定义一个符号常量,并且使C语言能够进行类型检查,
则应在定义语句的开始使用保留字const。(√)38.使用const语句定义一个符号常量时,不必对它进行初始化。(×)39.表达式45%13的值为3。(×)40.假定x=5,则表达式2*x++的值为12。(×)41.表达式(float)25/4的值为
6。(×)42.表达式x=x+1表示成增量表达式为++x。(√)43.关系表达式(x!=0)的等价表达式为(x)。(√)44.关系表达式x+y>5的相反表达式为x+y<=5。(√)45.逻辑表达式(a>b||b==5)的相反表达式为(a>b&&b==5)。(×)46.
若x=5,y=10,则x>y逻辑值为真。(×)47.假定x=5,则执行“a=(x?10:20);”语句后a的值为10。(√)48.带有随机函数的表达式rand()%20的值所在的区间范围是0~19。(√)49.假定x=5,则执行“y=x++;”语句后,x的值为5。(×)5
0.假定x=5,则执行“y=++x;”语句后,y的值为6。(√)形考任务2一、选择题(共20分,每小题2分)1.当处理特定问题时的循环次数已知时,通常采用的语句是()。a.forb.whilec.do-whiled.switch2.在switch语句的每个case块中,假定都是以break语句
结束的,则此switch语句容易被改写成的语句是()。a.forb.ifc.dod.while3.for语句能够被改写成的语句是()。a.复合b.ifc.switchd.while4.下面循环语句执行结束后输出的i值为()。for(int
i=0;i<n;i++)if(i>n/2){cout<<i<<endl;break;}a.n/2b.n/2+1c.n/2-1d.n-15.在下面循环语句中,内层循环体S语句的执行总次数为()。for(inti=0;i<n;i++)for(intj=
i;j<n;j++)S;a.n2b.(n+1)/2c.n(n-1)/2d.n(n+1)/26.在下面的do循环语句中,其循环体被执行的次数为()。inti=0;doi++;while(i*i<10);a.4b.3c.5d.27.在下面的一
维数组定义中,有语法错误的选项是()。a.inta[]={1,2,3};b.inta[10]={0};c.inta[];d.inta[5];8.在下面的二维数组定义中,语法正确的选项是()。a.inta[5][];b.inta[]
[5];c.inta[][3]={{1,3,5},{2}};d.inta[](10);9.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][1]的值为()。a.2b.4c.6d.810
.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为()。a.0b.4c.8d.6二、判断题(共20分,每小题1分。叙述正确则回答“是”,否则回
答“否”)11.在执行“typedefintDataType;”语句后,标识符DataType与保留字int具有完全相同的含义和作用。(√)12.在switch语句中,每个case和冒号之间的表达式只能是常
量。(√)13.为了结束本层循环类语句或switch语句的执行过程,在语句体中需要使用break语句。(√)14.在程序中执行到break语句时,将结束所在函数的执行过程,返回到调用该函数的位置。(×)15.在程序执行完成任一个函数调用后,将
结束整个程序的执行过程,返回到操作系统或C语言集成开发环境界面窗口。(×)16.假定一维数组的定义为“char*a[8];”,则该数组所含元素的个数大于8。(×)17.假定二维数组的定义为“inta[3][5];”,则该数组所占存储空间的字节数为60。(√)
18.假定二维数组的定义为“chara[M][N];”,则该数组所含元素的个数为M+N。(×)19.假定二维数组的定义为“doublea[M][N];”,则每个数组元素的行下标取值范围在0~M-1之间。(√)20.假定二维数组的定义为“doublea[M][N];”,则每个数组元素的列
下标取值范围在0~N之间。(×)21.存储一个空字符串需要占用0个字节的存储空间。(×)22.使用“typedefcharBB[10][50];”语句定义标识符BB为含有10行50列的二维字符数组类型。(√)23.存储字符'a'需要占用1个字节的存储空间。(√)24.空字符串的长度为1。
(×)25.字符串"a:\\xxk\\数据"的长度为13。(×)26.为了存储一个长度为n的字符串,所使用的字符数组的长度至少为n+1。(√)27.strcmp函数用于进行两个字符串之间的比较。(√)28.strcpy函数用于把一个字符串拷贝到另一个
字符数组空间中。(√)29.一个二维字符数组a[10][20]能够最多存储9个字符串。(×)30.一个二维字符数组a[10][20]能够存储的每个字符串的长度不超过20。(×)三、填空题:写出下列每个程序运行后
的输出结果(共40分,每小题4分)31.#include<stdio.h>voidmain(){intx=5;switch(2*x-3){case4:printf("%d",x);case7:printf("%d
",2*x+1);case10:printf("%d",3*x-1);break;default:printf("%s","default\n");}}答案:111432.#include<stdio.h>voidmain(){inti,s=0;for(i=1;i<=5;i++)s+=
i*i;printf("s=%d\n",s);}答案:s=5533.#include<stdio.h>voidmain(){inti,s1=0,s2=0;for(i=0;i<10;i++)if(i%2)s1+=i;elses2+=i;pri
ntf("%d%d\n",s1,s2);}答案:252034.#include<stdio.h>voidmain(){intn=6,y=1;while(n)y*=n--;printf("y=%d\n",y);}答案:y=72035.#incl
ude<stdio.h>constintM=20;voidmain(){inti,c2,c3,c5;c2=c3=c5=0;for(i=1;i<=M;i++){if(i%2==0)c2++;if(i%3==0)c3++;if(i%5==0)c5++;}printf("%d
%d%d\n",c2,c3,c5);}答案:106436.#include<stdio.h>voidmain(){inti,s;for(i=1,s=0;i<10;i++){if(i%3==0)conti
nue;s+=i;}printf("%d\n",s);}答案:2737.#include<stdio.h>voidmain(){inta[8]={12,39,26,41,55,63,72,40};inti,i1=0,i2=0;for(i=0;i<8;i++)if(a[i]%2==1)i1++
;elsei2++;printf("%d%d\n",i1,i2);}答案:4438.#include<stdio.h>inta[10]={4,5,6,15,20,13,12,7,8,9};voidmain(){inti,s[4]=0;for(i=0;
i<10;i++){switch(a[i]%4){case0:s[0]+=a[i];break;case1:s[1]+=a[i];break;case2:s[2]+=a[i];break;default:s[3]+=a[i];break;}}for(i=0;i
<4;i++)printf("%d",s[i]);}答案:442762239.#include<stdio.h>voidmain(){chara[]="abcdbfbgacd";inti1=0,i2=0,i=0;while(a[i]
){if(a[i]=='a')i1++;if(a[i]=='b')i2++;i++;}printf("%d%d%d\n",i1,i2,i);}答案:231140.#include<stdio.h>voidmain(){
inta[3][4]={{1,2,7,8},{5,6,10,6},{9,12,3,4}};intm=a[0][0];inti,j;for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[i][j]>m)m=a[i][j];printf("%d\n
",m);}答案:12四、简答题:根据下列每个题目要求编写程序(共20分,每小题4分)41.编写一个函数,函数头格式为“doubleMean(doublea[M][N],intm,intn)”,要求返回二维数组a[m][n]中所有元素的平均值,
假定在计算过程中采用变量v存放平均值。参考答案:doubleMean(doublea[M][N],intm,intn){inti,j;doublev=0.0;for(i=0;i<m;i++)for(j=0;j<n;j++)v+=a[i][j];v/=m*n;returnv;}42.编
写一个递归函数“intFF(inta[],intn)”,求出数组a中所有n个元素之积并返回。参考答案:intFF(inta[],intn){if(n==1)returna[n-1];elsereturna[n-1]*FF(a,n-1);}43.编写一个主
函数,利用while循环,求出并显示满足不等式的最小n值。参考答案:#include<stdio.h>voidmain(){inti=0;doubles=0;//或inti=1;doubles=1;while(s<5)s+=(double)1/++i
;printf("n=%d\n",i);}44.编写一个主函数,求出满足不等式22+42+...+n2<1000的最大n值,假定分别用i和s作为取偶数值和累加值的变量,并限定使用do循环编程。参考答案:#include<stdio.h>voidmain
(){inti=0;//用i作为依次取值偶数的变量ints=0;//用s作为累加变量do{i+=2;s+=i*i;}while(s<1000);printf("n=%d\n",i-2);}45.编写一个主函数,计算并输出12+22+...+n2值,其中n值由键盘输入。参考答案:#inclu
de<stdio.h>voidmain(){inti;//用i作为计数(循环)变量ints=0;//用s作为累加变量intn;printf("输入一个自然数:");scanf("%d",&n);for(i=1;i<=n;i++)s+=i*i;printf("s=%d\n",s
);}形考任务3一、选择题(共30分,每小题2分)1.在下面的函数声明语句中,存在着语法错误的是()。a.AA(inta,intb)b.AA(int,int)c.AA(inta;intb)d.AA(inta,int)2.在下面的保留字中,不能
作为函数的返回值类型的是()。a.voidb.intc.enumd.long3.假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址增加的字节数为()。a.1b.2c.4d.84.假定a为一个数组名,在下面的表达式中,存在语法错误
的是()。a.a[i]b.*a++c.*ad.*(a+1)5.用calloc函数创建具有10个整型元素的一维数组的正确语句是()。a.int*p=calloc(10,2);b.int*p=calloc(10);c.int*p=calloc(10,4);d.int*p=malloc
(10)6.假定变量m定义为“intm=7;”,则下面正确的语句为()。a.intp=&m;b.int*p=&m;c.int&p=*m;d.int*p=m;7.假定k是一个double类型的变量,则定义变量p的正确语句为()。a.doublep=&k;b.in
t*p=&k;c.double&p=*k;d.char*p="Thankyou!";8.若有语句为“inta[10],x,*pa=a;”,要把数组a中下标为3的元素值赋给x,则不正确的语句为()。a.x=pa[3];b.x=*(a+3);c
.x=a[3];d.x=*pa+3;9.假定有语句为“intb[10];int*pb;”,则下面不正确的赋值语句为()。a.pb=b;b.pb=&b[0];c.pb=b+2;d.pb=b[5];10.已知“int*p=malloc(100);”,要释放p所指向的动态内存,正确的语句为()。
a.free(p);b.freep;c.free(*p);d.free[p];11.在程序的一个文件中定义的函数,若要在另一个文件中调用,则必须在这另一个文件中给出该函数的()。a.原型语句b.参数表c.函数名d.返回类型12.假定一个函数定义为“stati
cintf1(intx,inty){returnx+y;}”,该函数名称为()。a.staticb.intc.f1d.return13.假定一个函数的原型语句为“intff(int*x);”,一个整型数组为a[10],则下面函数调用表达式不正确的是()。a.ff(a
)b.ff(a[0])c.ff(a+3)d.ff(&a[0])14.假定一个函数的数组参数说明为chara[],与之等价的指针参数说明为()。a.charab.char*ac.char&ad.char**a15.假定一个函数的二维数组参数说明为ch
arw[][N],与之等价的指针参数说明为()。a.char(*w)[N]b.char*w[N]c.char(*w)Nd.char**a二、判断题(共30分,每小题2分。叙述正确则回答“是”,否则回答“否”)16.在C语言中,一个函数由函
数头和函数体组成。(√)17.在函数模块之外定义的变量称为全局变量,若没有被初始化则系统隐含对它赋初值0。(√)18.如果一个函数只允许同一程序文件中的函数调用,则不应在该函数定义的开始前加上保留字static。(×)19.如果在一
个函数体中又出现对自身函数的调用,此种函数调用被称为递归调用。(√)20.调用系统函数时,要先使用#include命令包含该系统函数的原型语句所在的系统头文件。(√)21.函数形参变量不属于局部变量。(×)22.假定p所指对象的值为
25,p+1所指对象的值为46,则*p++的值为46。(×)23.假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为25。(×)24.假定p所指对象的值为25,p+1所指对象的值为46,则执行*(p++)运算后,p所指对象的值为46。(√)25.假定a是一个指针数
组,则a+i所指对象的地址比a地址大4*i字节。(√)26.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为(char*)p。(√)27.假定一个数据对象为int*类型,则指向该对象的指针类型仍为int*类型。(×)28.假
定x为一个简单变量,则&x表示x的地址。(√)29.若p指向x,则*p与x的值不同。(×)30.NULL是一个符号常量,通常作为空指针值,它代表的值为0。(√)三、写出下列每个程序运行后的输出结果(共20分,每小题4分)31.#include<stdio.h>intW
F(intx,inty){x=x+y;y=x+y;returnx+y;}voidmain(){intx=5,y=7;intz=WF(x,y);printf("z=%d\n",z);}答案:z=3132.#include<stdio
.h>#include<string.h>voidfun(charss[]);voidmain(){chars[15]="0123456789";fun(s);printf("%s\n",s);}voidfun(c
harss[]){inti,n=strlen(ss);for(i=0;i<n/2;i++){charc=ss[i];ss[i]=ss[n-1-i];ss[n-1-i]=c;}}答案:987654321033.#include<std
io.h>intCount(inta[],intn,intx){inti,c=0;for(i=0;i<n;i++)if(a[i]>x)c++;returnc;}voidmain(){inta[8]={20,15,32,47,24,36,28,70};intb
=Count(a,8,30);printf("b=%d\n",b);}答案:B=434.#include<stdio.h>voidmain(){inta[8]={3,5,7,9,2,3,4,8};ints=0,*p;for(p=a;
p<a+8;)s+=*p++;printf("s=%d\n",s);}答案:s=4135.#include<stdio.h>intLA(int*a,intn,intx){inti,s=0;for(i=0;i<n;i
++)if(a[i]<x)s+=a[i];returns;}voidmain(){inta[8]={5,10,15,8,12,3,9,20};intb=LA(a,5,10);intc=LA(a+2,6,10);printf(
"%d%d\n",b,c);}答案:1320四、写出下列每个函数的功能(共20分,每小题4分)36.doubleSF(doublex,intn){//n为正整数doublep=1,s=1;inti;for(i=
1;i<=n;i++){p*=x;s+=p;}returns;}答案:计算出1+x+x2+...+xn的值并返回。37.intSG(intx){//x为大于等于2的整数inti=2;while(i*i<=x){if(x%i==0)break;i++;}
if(i*i<=x)return0;elsereturn1;}答案:判断x是否为一个质数(素数),若是则返回1,否则返回0。38.intWB(inta[],intn,intx){for(inti=0;i<n;i++)if(a[i]==x)return1;re
turn0;}答案:从数组a[n]中顺序查找值为x的元素,若查找成功则返回1,否则返回0。39.intfun(intm,intn){intc=0;staticintb=2;if(m<b||n<b)returnm*n;elseif(m%b==0&&n%b==0){c=b;returnc*fun(m
/b,n/b);}else{b++;returnfun(m,n);}}答案:一个递归函数过程,求出两个自然数m和n的最小公倍数。40.intLK(doublea[],intn){doubles=0;inti,m=0;for(i=0;i<n;i++)s+=a[i];s
/=n;for(i=0;i<n;i++)if(a[i]>=s)m++;returnm;}答案:求出并返回数组a的n个元素中大于等于平均值的元素个数。形考任务4一、选择题(共30分,每小题2分)1.假定有“structBOOK{chartitle[40];floatprice;};st
ructBOOKbook;”,则不正确的语句为()。a.structBOOK*x=malloc(book);b.structBOOKx={"C++Programming",27.0};c.structBOOK*x=malloc(sizeof(str
uctBOOK));d.structBOOK*x=&book;2.假定有“structBOOK{chartitle[40];floatprice;}book;”,则正确的语句为()。a.structBOOKx=&book;b.structBOOK*x=&book;c.structBOOKx=ca
lloc(BOOK);d.structBOOK*x=BOOK;3.在结构类型的定义中,不同数据成员的定义项之间采用的分隔符是()。a.句点b.冒号c.分号d.逗号4.假定一个结构类型的定义为“structA{inta,b;doublec;};”,则该类型的长度为()。a.8b.10c.12d.1
65.假定一个结构类型的定义为“structD{inta;D*next;};”,则该类型的长度为()。a.4b.8c.12d.166.假定要访问一个结构指针变量x中的数据成员a,则表示方法为()。a.x.ab.x->ac.x(a)d.x{a}7.与结构成员访问表达式
x.name等价的表达式为()。a.x->nameb.&x->namec.(&x)->named.(*x)->name8.假定一个链表中结点的结构类型为“structAA{intdata,structAA*next;};”,则nex
t数据成员的类型为()。a.structAAb.structAA*c.AAd.int9.假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表头插入一个地址为p的结点时,应执行的操
作为()。a.p->next=fb.p->next=f和f=pc.f=p->nextd.f->next=p和f=p10.标准输入设备键盘的文件流标识符是()。a.stdinb.stdoutc.stderrd.stdio11.表示文件结束符的符号常量为()。a.eofb.Eof
c.EOFd.feof12.C语言中打开一个数据文件的系统函数为()。a.fgetc()b.fputc()c.fclose()d.fopen()13.从一个数据文件中读入以换行符结束的一行字符串的系统函数为()。a.gets()b.fgets()c.getc()d.fgetc()1
4.向一个二进制文件中写入信息的函数fwrite()带有的参数个数为()。a.1b.2c.3d.415.在C语言中,为只写操作打开一个文本文件的方式为()。a."a"b."r+"c."r"d."w"二、判断题(共40分,每小题2分。叙述正确则回答
“是”,否则回答“否”)16.在结构类型的定义中,其中的数据成员可以是本身类型的直接对象。(×)17.在结构类型的定义中,允许出现结构类型不完整的超前定义。(√)18.定义结构类型的变量时,不能够同时
进行初始化。(×)19.使用一个结构类型时,必须一起使用关键字struct和类型标识符。(√)20.假定一个结构类型的定义为“structA{inta,b;A*c;};”,则该类型的长度为12。(√)2
1.假定一个结构类型的定义为“structB{inta[5];char*b;};”,则该类型的长度为20。(×)22.执行calloc(n,8)函数调用时,将动态分配得到8*n个字节的存储空间。(√)23.执行malloc(sizeof(s
tructBB))函数调用时,得到的动态存储空间能够保存具有structBB结构类型的一个对象。(√)24.假定要访问一个结构对象x中的由a指针成员所指向的对象,则表示方法为x.a。(×)25.假定要访问一个结构指针p所指对
象中的b指针成员所指的对象,则表示方法为p->b。(×)26.与结构成员访问表达式(*fp).score等价的表达式是fp->score。(√)27.在C语言中,对二进制文件的所有不同打开方式共有6种。(√)28.C语言中的标准输入和输出设备文件都属于字符文件。(√)29.在一个磁盘数据文件的文件
名中,文件主名和扩展名都是必须的,不可省略。(×)30.在数据文件打开方式字符串中,字符r、w和a具有确定的含义,分别代表读、写和追加方式。(√)31.一个磁盘数据文件的文件名由文件主名和扩展名所组成,其中间用圆点分开。(√)32.C语言系统中提供一个用来描述
文件属性的类型标识符为FILE。(√)33.每次只能向文本文件中写入一个字符,不能一次写入一个字符串。(×)34.对二进制文件进行读和写操作将使用相同的系统函数。(×)35.在C语言中,系统函数fseek()用来移动数据文件中的文件位
置指针。(√)三、写出下列每个程序运行后的输出结果(共15分,每小题5分)36.#include<stdio.h>structWorker{charname[15];//姓名intage;//年龄floatpay;//工资};
voidmain(){structWorkerx={"wanghua",52,4300};structWorkery,*p;y=x;p=&x;printf("%s%d%6.2f\n",x.name,y.age,p->pay);}答案:wanghua52430037.#include<std
io.h>#include<string.h>structWorker{charname[15];//姓名intage;//年龄floatpay;//工资};voidmain(){structWorkerx;char*t="l
iouting";intd=38;floatf=3493;strcpy(x.name,t);x.age=d;x.pay=f;printf("%s%d%6.0f\n",x.name,x.age,x.pay);}答案:liouting39249338.#include<stdio.h>
structWorker{charname[15];intage;floatpay;};intLess(structWorkerr1,structWorkerr2){if(r1.age<r2.age)return1;elsereturn0;}voidmain(){structWo
rkera[4]={{"abc",25,2420},{"def",58,4638},{"ghi",49,4260},{"jkl",36,3750}};structWorkerx=a[0];inti;for(i=1;i<4;i++)if(Less(
x,a[i]))x=a[i];printf("%s%d%6.0f\n",x.name,x.age,x.pay);}答案:def584638四、写出下列每个函数的功能(共15分,每小题5分)39.voidQA(structWorkera
[],intn){inti;for(i=1;i<n;i++)scanf("%s%d%f",&a[i].name,&a[i].age,&a[i].pay);}假定结构类型structWorker的定义如下:structWorker{charname[15];intage
;floatpay;};答案:从键盘输入n个Worker类型的记录到一维数组a中。40.intCount(structIntNode*f){//f为指向一个单链表的表头指针intc=0;while(f){c
++;f=f->next;}returnc;}假定structIntNode的类型定义为:structIntNode{intdata;IntNode*next;};答案:统计出以表头指针为f的链表中结点的个数。41.voidxw1(cha
r*fname){FILE*fout=fopen(fname,"w");chara[20];printf("每个字符串长度小于20,字符串end作为结束标志\n");while(1){scanf("%s"
,a);if(strcmp(a,"end")==0)break;fputs(a,fout);fputc('\n',fout);}fclose(fout);}答案:把从键盘输入的若干个字符串保存到由fname参数所指定的文本文件中。