C语言程序设计专项训练题之结构体_第1页
C语言程序设计专项训练题之结构体_第2页
C语言程序设计专项训练题之结构体_第3页
C语言程序设计专项训练题之结构体_第4页
C语言程序设计专项训练题之结构体_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机等级考试二级C语言程序设计专项训练J结构体一.程序填空题1 .给定程序中,通过定义并赋初值的方式,利用结构体变量存储了一名学 生的信息。函数fun的功能是:输出这位学生的信息。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include typedef<stdio.h>structintnum;char name 9;char sex;struct int yearanonthjay; birthday;float score3;STU;/木木木木木木木木木木fou nd木木木木木木木木木木/void show(

2、STU 1)int i;printf(Hn%d %s %c %d-%d-%d”,tt.num, 4t.sexjt.birthday.year, tt.birthday.month,tt.biilhday.day);for(i=0; i<3; i+)/木木木木木木木木木木foil nd木木木木木木木木木木/ printf("%5.1f;2);printf(HnH);)int main()STU std= l;'ZhanghuaM;M1961, 10,8,76.5,78.0,82.0;printf(MnA student data:iiH);/木木木木木木木木

3、木木f ou nd木木木木木木木木木木/show(3);return 0;)2 .人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数 中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其 数据放在形参k所指的数组中,111主函数输出,同时由函数值返回满足指定条件 的人数。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include <stdio.h>#define N 8 typedef struct (int num;int yearjnonth,day ;STU;int fun(S

4、TU *std, STU *k, int year) (int i,n=0;for (i=0; i<N; i+)/*found*/if( 1=year)kn+=2;/*found*/ return (3);)int main()(STU stdN= 1,1984,2,15),2,1983,9,21), 3,1984,9,1,4,1983,7,15), 5,1985,9,28,6,1982,11,15), 7,1982,6,22,8,1984,8,19);STU kN;int i,n,year;printf("Enter a year : ");scanf("

5、%d",&year);n=fun(std,k,year);if(n=O)printf(HiiNo person was born in %d n*year); elseprintf(HiiThese persons were bom in %d n'year);for(i=0; ivn; i+)printf("%d %d-%d-%dn",ki.num,ki|.year, ki.month.ki.day);1return 0;)3 .给定程序中,人员的记录由编号和出生年、月、日组成,N名人员的数 据已在主函数中存入结构体数组std中,且编号唯一。函数

6、fun的功能是:找出 指定编号人员的数据,作为函数值返回;若指定编号不存在,返回数据中的编号 为空串。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include <stdio.h>#include <string.h>#define N 8 typedef struct (char num10;int year,month,day ;STU;/*found*/1 fun(STU *std, char *num)int i;STU a= "”,9999*99,99;for (i=0; i<N

7、; i+)/木木木木木木木木木木fou nd木木木木木木木木木木/if (strcmp(2,num)=0)/* fou nd */return (3);return a;)int main()STU stdN=nlirl984,2,15,222”, 1983,9,21, "333",1984,9,1),"444", 1983,7,15), “555”, 1984,9,28), "666'1983,11,15), "777",1983,6,22, "888",1984,8,19);STU p;cha

8、r n10="666H;p=fun(std,n);if(p.num0=0)printf(HnNot found !nn);elseprintf(HnSucceed !n ");printf(M%s %d-%d-%dn,p.num,p.year,p.month,p.day);)return 0;)4 .给定程序中,通过定义学生结构体变量,存储了学生的学号、姓名和3 门课的成绩。函数fun的功能是:将形参a所指结构体变量中的数据赋给函数中 的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不得增行

9、或删行,也不得更改程序的结构!#include <stdio.h>#include <strine.h>longcharfloatstruct student sno;name 10;score3;);void fun(struct student a)struct student b;int i;/木木木木木木木木木木f ou nd木木木木木木木木木木/ b.sno = 10002;/木木木木木木木木木木fou nd木木木木木木木木木木/str叩y(_2_, “LiSi”);printf(HnThe data after modified :nH);printf(Hn

10、No: %ld Name: %snScores: b.sno, );/木木木木木木木木木木f ou nd木木木木木木木木木木/for (i=0; i<3; i+) printf("%6.2f ”, b._3_); printf("n");1int main()struct student s= 10001,"ZhangSan”,95,80,88;int i;printf(HnThe original data :nn);printf(MiiNo: %ld Name: %snScores: s.sno, );for (i=0;

11、 i<3; i+)printf(H%6.2fs.scorei);printf(Hnn);fun(s);return 0;)5 .给定程序中,通过定义学生结构体变量,存储了学生的学号、姓名和3 门课的成绩。函数fun的功能是:将形参b所指结构体变量中的数据进行修改, 最后在主函数中输出修改后的数据。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include <stdio.h>#inckide <string.h>long char floatstruct student sno;name 10;sco

12、re3;;void fun(struct student *b)int i;/木木木木木木木木木木f ou nd木木木木木木木木木木/=10004;/木木木木木木木木木木fou nd木木木木木木木木木木/strcpy(b_2_, HLiJien);)int main()struct student t= 10002,''ZhangQi93,85,87;int i;printf("nnThe original data :nM);printf(HnNo: %ld Name: %snScores: H,t.sno, );for (i=0; i<3; i+

13、) printf(H%6.2f t.scorei);printf("»");/木木木木木木木木木木fou nd木木木木木木木木木木/fun(_3);printf(HnThe data after modified :nH);printf(HiiNo: %Id Name: %snScores: ",t.sno, );for (i=0; i<3; i+)printf("%6.2f", t.scorei);printf(MnH);return 0;)6 .给定程序中,通过定义学生结构体数组,存储了若干名学生的学号、姓 名和

14、3门课的成绩。函数fun的功能是:将存放学生数据的结构体数组,按照姓 名的字典序(从小到大)排序。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include <stdio.h>#inckide <string.h>long char floatstruct student sno;name 10;score3;;void fun(struct student a, int n)/木木木木木木木木木木f ou nd木木木木木木木木木木/1t;int i,j;/木木木木木木木木木木fou nd木木木木木木木木

15、木木/for (i=0; i<_2; i+)for (j=i+l; j<n; j+)/木木木木木木木木木木f ou nd木木木木木木木木木木/if (strcmp(_3) > 0) t=ail; ai=aj; aj=t; )int main()(struct student s4= 10001,"ZhangSan'95,80,88, 10002,"LiSi", 85, 70, 78, 10003,"CaoKai",75,60, 88, (10004,"FangFang", 90, 82, 87);i

16、nt i,j;printf("nnThe original data :nn");for (j=0; j<4; j+)(printf("nNo: %ld Name: %-8s Scores: 'sj.sno, ); for (i=0; i<3; i+)printf("%6.2f", sj.scorei);printf("n");)fun(s, 4);printf("n»The data after sorting :nn");for (j=0; j<4;

17、j+)(printf("nNo: %ld Name: %-8s Scores: ",sj.sno, ); for (i=0; i<3; i+)printf(H%6.2f", sj.scorei);printf("n");)return 0;)7,给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个 元素按num成员进行升序排列。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#include <stdio.h>typedef struct i

18、nt num;char name10; PERSON;/木木木木木木木木木木foil nd木木木木木木木木木木/void fun(PERSON/* * fou nd*/2 temp;if(stdO .num>std 1 .num) temp=std0; stdO=stdl; stdl=temp;if(std0.num>std2.num) temp=std0; std0=std2; std2=temp;J if(std 1 .num>std2 .num) temp=stdl; stdl=std2; std2=temp;1int main()PERSON std =5;,Zhan

19、ghu,2;'WangLi,6,nLinMinH;int i;/*found* */fun(3);printf(HnThe result is :nn);for(i=0; i<3; i+)printf(H%d,%sn,stdi.num,);return 0;)8 .给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大 者的数据作为函数值返回。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!#inckide <stdio.h>typedef stiuctchar name10;

20、int age;STD;STD fun(STD std, int n)STD max; int i;/* fou nd */ max=1;for(i=l; i<n; i+)if(max. age<2) max=std i; return max;) int main() (STD std5="aaa",l 7,"bbb",l 6, “ccc“,18,“ddd“,17,“eee",15 ); STD max; max=fun(std,5);printf(HnThe result: nM);/木木木木木木木木木木found木木木木木木木

21、木木木/printf(HnName:%s, Age:%dn”, 一3jnax.age); return 0; )9 .给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的 学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个 系数a。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! #include <stdio.h> typedef stnjct ( int num; char name9; float score3;STU; void show(STU tt) ( int i; prin

22、tf(H%d %s : ",tt.num,tt,name); for(i=0; i<3; i+)printf(n%5. If tt.scorei);printf(Mnn);)/*found*/void niodify(1*ss,float a)int i;for(i=0; i<3; i+)/木木木木木木木木木木fou nd木木木木木木木木木木/ ss->2*=a;)int main()STU std= 1 ;,Zhanghua,;76.5,78.0,82.0 );float a;printf(HnThe original number and name and sc

23、ores :nH);show(std);printf(nnlnput a number :"); scanf(H%f&a);/木木木木木木木木木木fou nd木木木木木木木木木木/modify(3,a);printf(HnA result of modifying :n"); show(std);return 0;110 .程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成 绩。函数fun的功能是:将形参a中的数据进行修改,把修改后的数据作为函数 值返回主函数进行输出。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不得增行或删行,

24、也不得更改程序的结构!#include <stdio.h>#include <string.h>struct student sno;name10;score3;long char float);/木木木木木木木木木木fou nd木木木木木木木木木木/1 fun(struct student a)int i;a.sno = 10002;/*found*/strcpy(一2一, "LiSi");/*found*/for (i=0; iv3; i+) 3+= 1;return a;)int main()(stnjct student s= 10001/,

25、ZhangSanM, 95, 80, 88, t;int i;printf(HnnThe original data :nH);printf(nnNo: %ld Name: %snScores: ",s.sno, );for (i=0; i<3; i+) printf(H%6.2f s.scorei);printf("n,');t = fun(s);printf(nnThe data after modifiedprintf(HnNo: %ld Name: %snScores: ,t.sno, );for (i=0; i<3; i

26、+) printf(M%6.2f t.scorei);printf("n");return 0;二.程序填空题参考答案1.(1) tt(2)tt.scorefi(3) std2.(1) stdi.year(2)stdi(3) n3.(1) STU(2)stdi.num(3) stdi4.(1) a(2)(3) scorei5.(1) ->sno(2)->name(3) &t6.(1) struct student(2)n-1(3) ,7.(1) std(2)PERSON(3) std8.(1) stdO(2)std

27、i.age(3) 9.(1) STU(2)scorei(3) &std10.(1) struct student(2)a. name(3) a.scorefi三.程序设计J1.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程成 绩已在主函数中给出。编写函数fun,它的功能是:求出该学生的平均分放在记 录的ave成员中。例如,学生的成绩为:85.4,76,69.5,85,91,72,64.5,87.5,平均分应为:78.875。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花 括号中填入你编写的若干语句。#include <stdi

28、o.h>#define N 8typedef struct(char num10;double sN;double ave;STREC;void NONO(void);void fun(STREC *p)int main()(STREC s="GA005”,85.5,76,69.5,85,91,72,64.5,87.5;int i;fun(&s);printf("The %s*s student data:nn5s.num);for(i=0;i<N;i+)printf(H%4.1fn's.si);printf(Hnave=%7.3fn,s.ave

29、);NONO();return 0;)void NONO(void)/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关 闭文件。*/STREC s= "GA005",85.5,76,69.5,85,91,72,64,5,87.5;int i;FILE *wf;wf = fopen(Hout.dat* Hwn);fun(&s);fprintf(wf,HThe %s s student data:n*s.num);for(i=0;i<N;i+)fprintf(wf,"%4.1fi",s.si);fprintf(wf,Have=

30、%7.3fn,s.ave);fclose(wf);)2.编写函数fun,其功能是:把a所指的结构体数组中分数最低的学生数据 放在h所指的数组中(注意:分数最低的学生可能不止1个),函数返回分数最 低的学生的人数。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花 括号中填入你编写的若干语句。#include <stdio.h>#define N 16typedef struct(char num10;int s;STREC;int fun(STREC *a,STREC *b)int main()(STREC sN= nGA05",85,1,GA03,;

31、76, "GA02",69), "G A04'85, "GAO 1 ”,91, "GA07",72) ,"GA08'64), "GA06",87, "GAO151,85),"GAO 13",91),"GAO 12",64), "GAO 14",91, "GAO 11 ",91), "GAO 17'64, “G AO 18*64, “G AO 16",72;STREC hN;

32、int i,n;FILE *out;n=fun(s,h);printf("The %d lowest score:n",n);for(i=0;i<n;i+)printf(M%s %4dn,hi.num,hi.s);printf("»");out=fopen(Hout.dat,HwH);fprintf(out/,%dnM,n);for (i=0;i<n:i+)fprintf(out,"%s %4dn*hi.num,hi.s);fclose(out);)3.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体 数组a

33、中。编写函数fun,它的功能是:找出成绩最低的学生记录,并通过形参 返回主函数(规定只有一个最低分)。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花 括号中填入你编写的若干语句。#include <stdio.h>#include <string.h>#define N 10void NONO(void);typedef stnjct ss (char num10;int s; STU;void fun(STU a, STU *s)int main()(STU aN="A0r',81),"A02",89),

34、" A03 ”,66 ,("A04",87, “ A0577), "A06",90, "A07",79, " A08 ",61, ,A09'80,"A10,',71) ,m ;int i;printf("* The original data *nn);for (i=0; i< N; i+ )printf("No=%s Mark=%dn", ai.num,ai.s); fun ( a, &m );printf ('* THE R

35、ESULT *n");printf ("The lowest : %s , %dn,m.num, m.s);NONO();return 0;)void NONO(void)/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE *rf, *wf;STU aN, m ;int i;rf= fopenCin.dat W);wf = fopen(Hout.dat,MwH);for(i = 0 ; i < 10; i+)fscanf(rf, u%s %dM, ai.num, &ai.s);fun(a, &m);fprintf (wf JT

36、he lowest : %s, %dn' m.num, m.s);fclose(rf);fclose(wf);)4 .已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体 数组a中。编写函数fun,它的功能是:找出成绩最高的学生记录,通过形参返 回(规定只有一个最高分)。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花 括号中填入你编写的若干语句。#include <stdio.h>#include <string.h>#define N 10typedef stnjct ss(char num10;int s; STU;void

37、 NONO(void);void fun(STU a, STU *s)int main()STU aN=“A01”,81,“A0289,“A03”,66,"A04",87, " A05 ",77, "A06",90), "A07",79), "A08",61),"A09",80), "A10",71) ,m ;int i;printf(* The original data *nH);for (i=0; i< N; i+ )printf(nNo =

38、%s Mark = %dn", ai.num5ai.s);fun ( a, &m );printf ('* THE RESULT *ii");printf (HThe top : %s , %dnfm.num, m.s);NONO();return 0;)void NONO(void)/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE *rf, *wf;STU aN, m ;int i;rf=fopen("in.dat'"r,');wf = fopen(Hout.dat,',wM);for

39、(i = 0 ; i < 10; i+)fscanf(rf, n%s %d”, ai.num, &ai.s);fun(a, &m);fprintf (wf JThe top : %s, %dn”,m.num, m.s);fclose(rf);fclose(wf);)5 .学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构 体数组s中。编写函数fun,它的功能是:按分数的高低排列学生的记录,高分 在前。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花 括号中填入你编写的若干语句。#include <stdio.h>#define

40、 N 16typedef structchar num10;int s;STREC;void fun(STREC a)int main()(STREC sN="GA005",85,nGA003",76h "GA002",69),"GA004",85, "GAOO 1",91, "GA007",72, "GA008",64, "GA006",87, "GA015",85,"GA013",91 ,"G

41、A012",64), "GAO 14",91, "GAO 11",66, "GAO 17",64, "GA018",64,(,GA016”,72;int i;FILE *out;fun(s);printf("The data after sorted :n");for(i=0;i<N; i+) (if( (i)%4=0 )printf("n");printf("%s %4d ",si.num,si.s);)printf(HnH);out =

42、 fopen(Hout.datH/,wH);for(i=0;i<N; i+) if( (i)%4=0 && i) fprintf(out, "n");fprintf(out, "%4d ",si.s);)fprintf(out,"n");fclose(out);return 0;)6,学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构 体数组s中。编写函数fun,它的功能是:把指定分数范围内的学生数据放在h 所指的数组中,分数范围内的学生人数由函数值返回。例如,输入的分数为60 69,则应当把分数在6

43、0到69的学生数据输出(包 含60分和69分的学生数据)。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花 括号中填入你编写的若干语句。#inckide <stdio.h>#define N 16 typedef struct (char num10; int s;STREC;int fun(STREC *a,STREC *b,int 1 Jnt h)int main()(STREC sN= ”GA05”,85,“GA03”,76,"GA02*69, "GA04",85, “G AO 1 ”,91, “G A07”,72, &qu

44、ot;GA08",64), "GA06",87, ”G AO 15”,85, "GA013,;91),"GA012",64), "GA014,;91), "GA0H",91),"GA017",64), "GA018",64), "GAO 16",72;STREC hN;FILE *out;int i,n,low,heigh,t;printf(nEnter 2 interger number low & heigh:H); scanf(n%

45、d%d'&low,&heigh);if (heigh<low) t=heigh;heigh=low;low=t; n=fun(s,hjow,heigh);printf(HThe student's data between %d-%d:n",low,heigh); for(i=0;i<n;i+)printf("%s %4dn",hi.num,hi.s);printf(HnH);out=fopen(Hout.dat,wH);n=fun(s,h,80,98);fprintf(out/'%dn,n);for(i=0;i

46、<n;i+)fprintf(out,"%s %4dn",hi.num,hi.s); fclose(out);return 0;)7.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构 体数组s中。编写函数fun,它的功能是:把高于等于平均分的学生数据放在b 所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值 返回。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花 括号中填入你编写的若干语句。#include <stdio.h>#define N 12typedef stnjct(char num10;d

47、ouble s;STREC;double fun(STREC STREC *b, int *n)int main()(STREC sN=,'GA05",85),"GA03",76), ,GA02",69,GA04",85),'GA0r,91,"GA07'72, ,'GA08",64,'GA06",87, ,'GA09",60,GAir;79, "GA 12",73, "GA 10H,90);STREC hN, t;FILE *o

48、ut;int ij,n;double ave;ave=fun(s,h,&n);printf(HThe %d student data which is higher than %7.3f:n'n,ave);for(i=0;i<n; i+)printf("%s %4.1An",hi.num,hi.s);printf("n");out = fopen(,out.dat,',wM);fprintf(out, H%dn%7.3fn' n, ave);for(i=0;i<n-l;i+)for(j=i+l;j<n;j

49、+)if(hi<s<hU.s) t=hi ;hi=hUl; hj=t;for(i=0;i<n; i+)fprintf(out,H%4. lfn'hi.s);fclose(out);return 0;18.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构 体数组s中。编写函数fun,它的功能是:函数返回指定学号的学生数据,指定 的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空申,给 成绩置-1,作为函数值返回。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花 括号中填入你编写的若干语句。#include <stdio.h>#include <string.h>#define N 16typedef stiuct(char num10;int s;STREC;STREC fun(STREC *a, char *b)int main()(STREC sN= "GA005",85), "G

温馨提示

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

评论

0/150

提交评论