资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
填空填空结构体结构体195 建立一个带头结点的单向链表并输出到文件“out98.dat”和屏幕上,各结点的值为对应的下标,链表的结点数及输出的文件名作为参数传入。void fun(int n,char*filename)NODE *h,*p,*s;FILE *pf;int i;h=p=(NODE *)malloc(sizeof(NODE);h-data=0;for(i=1;idata=i;p-next=s;p=p-next;p-next=NULL;if(pf=fopen(filename,“w“)=NULL)printf(“Can not open out98.dat!“);exit(0);p=h;fprintf(pf,“n*THE LIST*n“);printf(“n*THE LIST*n“);while(p)fprintf(pf,“%3d“,p-data);printf(“%3d“,p-data);if(p-next!=NULL)fprintf(pf,“-“);printf(“-“);p=p-next;fprintf(pf,“n“);printf(“n“);fclose(pf);p=h;while(p)s=p;p=p-next;free(s);196 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据从小到大顺序链接。函数的功能是:把形参 x 的值放入一个新结点并插入到链表中,插入后各结点仍保持从小到大顺序排列。void fun( SLIST *h, int x)SLIST *p, *q, *s;s=(SLIST *)malloc(sizeof(SLIST);s-data=x;q=h;p=h-next;while(p!=NULL p=p-next;s-next=p;q-next=s;197 对 N 名学生的学习成绩,按从高到低的顺序找出前 m(m10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。STU *fun(STU a, int m)STU bN,*tt;int i,j,k;tt=(STU*)malloc(sizeof(STU)*m);for(i=0;ibj.order)j=i;ttk=bj;bj.order=0;return tt;198 函数的功能是将存学生数据的结构体数组,按照姓名的字典序(从小到大排序)void fun(struct student a,int n)struct student t;int i,j;for(i=0;i0)t=ai;ai=aj;aj=t;199 给定程序中已建立一个带有头结点的单向链表,在 main 函数中将多次调用 fun 函数,每调用一次 fun 函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。void fun( SLIST *p)SLIST *t,*s;t=p-next;s=p;while(t-next!=NULL)s=t;t=t-next;printf(“%d “,t-data);s-next=NULL;free(t);200 已知学生的记录由学号和学习成绩构成,N 名学生的数据已存入a 结构体中,给定程序的功能是找出成绩最低的学生记录,通过形参返回主函数。fun(STU a,STU *s)STU h;int i;h=a0;for(i=1;inext;if(p!=NULL)q=p-next;while(q!=NULL)if(p-data=q-data)p-next=q-next;free(q);q=p-next;else p=q;q=q-next;202 建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数 fun 的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。int fun(NODE *h)int sum=0;NODE *p;p=h-next;while(p)if(p-data%2=0)sum+=p-data;p=p-next;return sum;203 在带有头结点的单向链表中,查找数据域中值为 ch 的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch 的结点,函数返回 0 值。void outlist(SLIST *);int fun(SLIST *h, char ch)SLIST *p; int n=0;p=h-next;while(p!=0)n+;if(p-data=ch)return n;else p=p-next;return 0;main()SLIST *head;int k;char ch;char aN=;head=creatlist(a);outlist(head);printf(“Enter a letter:“);scanf(“%c“,k=fun(head,ch);if(k=0) printf(“nNot found!n“);else printf(“The sequence number is : %dn“,k);204 统计出带有头结点的单向链表中结点的个数,存放在形参 n 所指的存储单元中。void fun(SLIST *h,int *n)SLIST *p;(*n)=0;p=h-next;while(p)(*n)+;p=p-next;main()SLIST *head;int aN=,num;head=creatlist(a); outlist(head);fun(head,printf(“nnumber=%dn“,num);205 计算出带有头结点的单向链表中各结点数据域之和作为函数值返回。int fun(SLIST *h)SLIST *p;int s=0;p=h-next;while(p)s+=p-data;p=p-next;return s;main()SLIST *head;int aN=;head=creatlist(a);outlist(head);printf(“nsum=%dn“, fun(head);206 人员的记录由编号和出生年、月、日组成,N 名人员的数据已在主函数中存入结构体数组 std 中,且编号唯一。函数 fun 的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。STU fun(STU *std,char *num)int i;STU a=“,9999,99,99;for(i=0;iscorei*=a;main( )STU std=;float a;printf(“);show(std);printf(“nInput a number:“);scanf(“%f“,modify(printf(“nA result of modifying:n“);show(std);209 将形参指针所指结构体数组中的三个元素按 num 成员进行升序排列。void fun(PERSON std3)PERSON temp;if(std0.numstd1.num)temp=std0;std0=std1;std1=temp;if(std0.numstd2.num)temp=std0;std0=std2;std2=temp;if(std1.numstd2.num)temp=std1;std1=std2;std2=temp;main()PERSON std =;int i;fun(std);printf(“nThe result is :n“);for(i=0; isno=10002;strcpy(a-name,”LiSi”);for(i=0;iscorei+=1;return a;213 程序通过定义学生结构体变量,存储了学生的学号、姓名和 3门课的成绩。函数 fun 的功能是将形参 b 所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。例如:b 所指变量t 的学号、姓名和三门课的成绩依次是:10002、 “ZhangQi” 、95、85、87,修改后输出 t 中的数据应为:10004、 “LiJie” 、93、85、87。void fun(struct student b)b-sno=10004;strcpy(b-name,”LiJie”);main()struct student t=100287;int i;printf();printf();for(i=0;inext;while(p)q=p-next;while(q)if(p-data=q-data)t=p-data;p-data=q-data;q-data=t;q=q-next;p=p-next;215 将不带头节点的单向链表结点数据域中的数据从小到大排序,即若原链表结点数据为:10,4,2,8,6,排序后链表结点数据域从头尾的数值为:2,4,6,8,10。void fun(NODE *h)NODE *p,*q;int t;while(p)q=p-next;while(q)if(p-dataq-data)t=p-data;p-data=q-data;q-data=t;q=q-next;p=p-next;216 将不带头节点的单向链表逆置,即若原链表中从头至尾结点数据域依次为 2,4,6,8,10;逆置后,从头至尾结点数据域依次为:10,8,6,4,2。void fun(NODE *h)NODE *p,*q,*r;p=h-next;if(p=0)return 0;q=p-next;p-next=NULL;while(q)r=q-next;q-next=p;p=q;q=r;h-next=p;五、文件题:217 把文本文件 B 中的内容追加到文本文件 A 的内容之后。例如,文件 B 的内容为“Im ten.” ,文件 A 的内容为“Im a student!” ,追加之后文件 A 的内容为“Im a student ! Im ten.”main()FILE *fp,*fp1,*fp2;int i;char cN,t,ch;if(fp=fopen(“A.dat“,“r“)=NULL)printf(“file A cannot be openedn“);exit(0);printf(“n A contents are : nn“);for(i=0;(ch=fgetc(fp)!=EOF;i+)ci=ch;putchar(ci);fclose(fp);if(fp=fopen(“B.dat“,“r“)=NULL)printf(“file B cannot be openedn“);exit(0);printf(“nnnB contents are : nn“);for(i=0;(ch=fgetc(fp)!=EOF;i+)ci=ch;putchar(ci);fclose(fp);if(fp1=fopen(“A.dat“,“a“)elseprintf(“Can not open A B !n“);fclose(fp2);fclose(fp1);printf(“n*new A contents*nn“);if(fp=fopen(“A.
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号