版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构上机实验答案数据结构上机实验答案数据结构上机实验答案xxx公司数据结构上机实验答案文件编号:文件日期:修订次数:第1.0次更改批准审核制定方案设计,管理制度《数据结构实验指导书》答案实验一:请编写函数intfun(int*a,int*b),函数的功能是判断两个指针a和b所指存储单元的值的符号是否相同;若相同函数返回1,否则返回0。这两个存储单元中的值都不为0。在主函数中输入2个整数、调用函数fun、输出结果。#include<>intfun(int*a,int*b){if(*a*(*b)>0)return(1);elsereturn(0);}main(){intx,y;scanf("%d%d",&x,&y);if(fun(&x,&y))printf("yes\n");elseprintf("no");}计算1+2+3+……+100,要求用指针进行设计。即设计函数intfun(int*n)实现求1+2+3+……+*n,在主函数中输入、调用、输出结果。#include<>intfun(int*n){inti,sum=0;for(i=1;i<=*n;i++)sum+=i;return(sum);}main(){intx,sum;scanf("%d",&x);printf("thesumis%d\n",fun(&x));}函数的功能是求数组a中最大数的位置(位序号)。在主函数中输入10个整数、调用函数fun、输出结果。#defineN10#include<>voidinput(int*a,intn){inti;for(i=0;i<n;i++)scanf("%d",a+i);/*scanf("%d",&a[i]);*/}intfun(int*a,intn){inti,*max;max=a;for(i=1;i<n;i++) if(a[i]>*max)max=a+i;return(max-a);}main(){inta[N],maxi;input(a,N);maxi=fun(a,N);printf("\nthemaxpositionis%d\n",maxi);}4、请编写函数fun(int*a,intn,int*odd,int*even),函数的功能是分别求出数组a中所有奇数之和和所有偶数之和。形参n给出数组中数据的个数;利用指针odd和even分别返回奇数之和和偶数之和。在主函数中输入10个整数、调用函数fun、输出结果。#defineN10#include<>voidinput(int*a,intn){inti;for(i=0;i<n;i++)scanf("%d",a+i);/*scanf("%d",&a[i]);*/}voidfun(int*a,intn,int*odd,int*even){inti,sum1=0,sum2=0;for(i=0;i<n;i++){ if(a[i]%2==0)sum1+=a[i];elsesum2+=a[i];}*odd=sum1;*even=sum2;}main(){inta[N],odd,even;input(a,N);fun(a,N,&odd,&even);printf("theoddis%d\ttheevenis%d\n",odd,even);}5、请编写函数intfun(int*a,int*b,intn),函数的功能是把数组a中所有为偶数的数,放在另一个数组中b。在主函数中输入10个整数、调用函数fun、输出结果。#defineN10#include<>voidinput(int*a,intn){inti;for(i=0;i<n;i++)scanf("%d",a+i);/*scanf("%d",&a[i]);*/}voidoutput(int*a,intn){inti;printf("\ntheoddis:\n");for(i=0;i<n;i++)printf("%5d",*(a+i));/*printf("%d",a[i]);*/}intfun(int*a,int*b,intn){inti,j=0;for(i=0;i<n;i++) if(a[i]%2==0){b[j]=a[i];j++;}return(j);}main(){inta[N],b[N],m;input(a,N);m=fun(a,b,N);output(b,m);}6、请编写函数intfun(int*a,,intn),函数的功能是把数组a中最大数和最小数交换。在主函数中输入10个整数、调用函数fun、输出结果。#defineN10#include<>voidinput(int*a,intn){inti;for(i=0;i<n;i++)scanf("%d",a+i);/*scanf("%d",&a[i]);*/}voidoutput(int*a,intn){inti;printf("\ntheresultis:\n");for(i=0;i<n;i++)printf("%5d",*(a+i));/*printf("%d",a[i]);*/}voidfun(int*a,intn){inti,*max,*min,temp;max=min=a;for(i=1;i<n;i++) { if(a[i]>*max)max=a+i; if(a[i]<*min)min=a+i; }printf("themaxis%d,thepositionis%d\n",*max,max-a);printf("theminis%d,thepositionis%d\n",*min,min-a);if(max!=min) {temp=*max;*max=*min;*min=temp;}}main(){inta[N],m;input(a,N);fun(a,N);output(a,N);}7、请编写函数intfun(inta[4][4]),函数的功能是把矩阵a转置。在主函数中输入、调用函数fun、输出结果。#defineN4#include<>voidinput(inta[][4],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);}voidoutput(inta[][4],intn){inti,j;printf("\ntheresultis:\n");for(i=0;i<n;i++){printf("\n");for(j=0;j<n;j++) printf("%4d",*(*(a+i)+j));/*printf("%d",a[i][j]);*/}}voidfun(inta[][4],intn){inti,j,temp;for(i=0;i<n;i++) for(j=0;j<i;j++) {temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;}}main(){inta[N][N];input(a,N);fun(a,N);output(a,N);}请编写函数intfun(char*a),函数的功能是分别求出字符串a的长度。在主函数中输入1个字符串、调用函数fun、输出结果。#include<>intfun(char*a){inti=0;char*p;p=a;while(*p) {i++; p++; }return(i);}main(){charstr[20],*cp;cp=str;gets(cp);printf("thelengthof%sis%d\n",cp,fun(cp));}9、10、#include<>#include<>#defineN2typedefstructstudent/*定义数据结构(数据类型)*/{longnum;charname[10];intscore[3];/*存放三门课成绩*/floataverage;/*/平均成绩*/}stu;voidintput(stus[],intn)/*输入数据*/{inti,j;/*i表示处理学生的下标,J表示成绩编号*/for(i=0;i<n;i++){printf("inputnum:\n");scanf("%ld",&s[i].num);printf("inputname:\n");scanf("%s",s[i].name);printf("input3score:\n");for(j=0;j<3;j++)scanf("%d",&s[i].score[j]);}}voidstu_av(stus[],intn)/*求每个学生的平均成绩*/{inti,j,sum;for(i=0;i<n;i++){sum=0;for(j=0;j<3;j++)sum+=s[i].score[j];s[i].average=sum/;}}floatav(stus[],intn)/*求总平均成绩*/{inti;floatsum=,ave;for(i=0;i<n;i++)sum+=s[i].average;ave=sum/n;return(ave);}intmax(stus[],intn)/*求平均成绩最高学生的下标*/{inti,maxi=0;for(i=1;i<n;i++)if(s[i].average>s[maxi].average)maxi=i;return(maxi);}main(){intmaxi,j;stua[N];/*定义变量*/intput(a,N);stu_av(a,N);printf("thescoreaverageis%f\n",av(a,N));maxi=max(a,N);printf("themaxaveragestudentdata:\n");printf("%10ld",a[maxi].num);printf("%10s",a[maxi].name);for(j=0;j<3;j++)printf("%5d",a[maxi].score[j]);printf("%",a[maxi].average);getch();}实验二1、#include<>#defineMaxLen50typedefintelemtype;structdatatype{elemtype*elem;intlength;};typedefstructdatatypesqlist;voidcreate(sqlist*a){inti,n;a->elem=(elemtype*)malloc(MaxLen*sizeof(elemtype));printf("创建一个顺序表\n");printf("输入元素个数\n");scanf("%d",&a->length);for(i=0;i<a->length;i++){printf("输入第%d个元素值:",i+1);scanf("%d",a->elem+i);}}voidinvert(sqlist*a){intm=a->length/2,i;elemtypetemp;for(i=0;i<m;i++){temp=*(a->elem+i);*(a->elem+i)=*(a->elem+a->length-1-i);*(a->elem+a->length-1-i)=temp;}}voiddisp(sqlist*a){inti;for(i=0;i<a->length;i++)printf("%5d:%d\n",i+1,*(a->elem+i));getch();}voidmain(){sqlista;create(&a);disp(&a);invert(&a);disp(&a);}2、#include<>#include<>#defineNULL0typedefintelemtype;typedefstructlinknode{elemtypedata;structlinknode*next;}nodetype;nodetype*create(){elemtyped;nodetype*h,*s,*t;inti=1;h=NULL;printf("建立一个单链表\n");while(1){printf("输入第%d节点data域值:",i);scanf("%d",&d);if(d==0)break;/*以0表示输入结束*/if(i==1)/*建立第一个结点*/{h=(nodetype*)malloc(sizeof(nodetype));h->data=d;h->next=NULL;t=h;}else{s=(nodetype*)malloc(sizeof(nodetype));s->data=d;s->next=NULL;t->next=s;t=s;/*t始终指向生成的单链表的最后一个结点*/}i++;}returnh;}voiddisp(nodetype*h){nodetype*p=h;printf("输出一个单链表:\n");if(p==NULL)printf("空表");while(p!=NULL){printf("%d",p->data);p=p->next;}printf("\n");getch();}intlen(nodetype*h){inti=0;nodetype*p=h;while(p){i++;p=p->next;}return(i);}nodetype*invert(nodetype*h){nodetype*p,*q,*r;if(len(h)<=1){printf("逆置的单链表至少有2个节点\n");return(NULL);}else{p=h;q=p->next;while(q!=NULL){r=q->next;q->next=p;p=q;q=r;}h->next=NULL;h=p;returnh;}}voidmain(){nodetype*head;head=create();disp(head);head=invert(head);disp(head);}4、(1)#include<>#defineMaxLen50typedefstruct{longnum;intscore;}elemtype;typedefstructdatatype{elemtype*elem;intlength;}sqlist;voidcreate(sqlist*a){longi=0,n;ints;a->elem=(elemtype*)malloc(MaxLen*sizeof(elemtype));printf("创建一个顺序表\n");printf("输入学生学号和成绩:0作为结束标志\n");scanf("%ld%d",&n,&s);while(n!=0){(a->elem)[i].num=n;(a->elem)[i].score=s;i++;scanf("%ld%d",&n,&s);}a->length=i;}voiddisp(sqlist*a){inti;for(i=0;i<a->length;i++)printf("%5d:%ld%d\n",i+1,(a->elem)[i].num,(a->elem)[i].score);getch();}voidmain(){sqlista;create(&a);disp(&a);}(2)见5(2)5、(1)#include<>#defineMaxLen50typedefstruct{longnum;intscore;}elemtype;typedefstructdatatype{elemtype*elem;intlength;}sqlist;voidcreate(sqlist*a){longi=0,n;ints;a->elem=(elemtype*)malloc(MaxLen*sizeof(elemtype));printf("创建一个顺序表\n");printf("输入学生学号和成绩:0作为结束标志\n");scanf("%ld%d",&n,&s);while(n!=0){(a->elem)[i].num=n;(a->elem)[i].score=s;i++;scanf("%ld%d",&n,&s);}a->length=i;}voidsort(sqlist*a){inti,j,k,s;longn;for(i=0;i<a->length-1;i++){k=i;for(j=i+1;j<a->length;j++)if((a->elem)[j].score<(a->elem)[k].score)k=j;if(k!=i){n=(a->elem)[i].num;(a->elem)[i].num=(a->elem)[k].num;(a->elem)[k].num=n;s=(a->elem)[i].score;(a->elem)[i].score=(a->elem)[k].score;(a->elem)[k].score=s;}}}voiddisp(sqlist*a){inti;for(i=0;i<a->length;i++)printf("%5d:%ld%d\n",i+1,(a->elem)[i].num,(a->elem)[i].score);getch();}voidmain(){sqlista;create(&a);disp(&a);sort(&a);disp(&a);}(2)#include<>#include<>#defineNULL0typedefstructlinknode{longnum;intscore;structlinknode*next;}nodetype;nodetype*create(){longn;intsc;nodetype*h,*s,*t;h=(nodetype*)malloc(sizeof(nodetype));;h->next=NULL;t=h;printf("创建一个顺序表\n");printf("输入学生学号和成绩:0作为结束标志\n");scanf("%ld%d",&n,&sc);while(n!=0){s=(nodetype*)malloc(sizeof(nodetype));s->num=n;s->score=sc;t->next=s;t=s;scanf("%ld%d",&n,&sc);}t->next=NULL;returnh;}voiddisp(nodetype*h){nodetype*p=h->next;printf("输出一个单链表:\n");while(p!=NULL){printf("%ld%d\n",p->num,p->score);p=p->next;}printf("\n");getch();}nodetype*insertorder(nodetype*h,nodetype*s){nodetype*p,*q;q=h;p=q->next;while(p!=NULL&&s->score>p->score){q=p;p=p->next;}s->next=p;q->next=s;return(h);}nodetype*sort(nodetype*h){nodetype*p,*s;p=h->next;h->next=NULL;while(p!=NULL){s=p->next;h=insertorder(h,p);p=s;}returnh;}voidmain(){nodetype*head;head=create();disp(head);head=sort(head);disp(head);}实验三:7、试写一个算法,识别依次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中不包含字符’&’,且序列2是序列1的逆序列。例如,‘a+b&b+a’是属于该模式的字符序列,而‘1+2&2-1intIsReverse()0’(3)本小题中一条对角线是A[i][i],其中(0≤i≤m-1),另一条对角线是A[m-i-1,i],其中(0≤i≤m-1),因此用循环实现即可。实现本题功能的程序如下:#include<>/*实现(1)小题功能的函数*/voidproc1(maxixA){ints=0,i,j;for(i=0;i<m;i++)/*第一列*/s=s+A[i][1];for(i=0;i<m;i++)/*最后一列*/s=s+A[i][n];for(j=0;j<n;j++)/*第一行*/s=s+A[1][j];for(j=0;j<m;j++)/*最后一行*/s=s+A[m][j];for(j=0;j<n;j++)/*第一行*/s=s+A[1][j];for(j=0;j<m;j++)/*最后一行*/s=s+A[m][j];s=s-A[0][0]-A[0][n-1]-A[m-1][0]-A[m-1][n-1];/*减去4个角的重复元素值*/printf("s=%d\n",s);}/*实现(2)小题功能的函数*/voidproc2(maxixA){ints=0,i,j;i=0;while(i<m){j=0;while(j<n){s=s+A[i][j];j=j+2;/*跳过一列*/}i=i+2;/*跳过一行*/}printf("s=%d\n",s);}/*实现(3)小题功能的函数*/voidproc3(maxixA){inti,s;if(m!=n)printf("m≠n");else{s=0;for(i=0;i<m;i++)s=s+A[i][i];/*求第一条对角线之和*/for(i=0;i<n;i++)s=s+A[n-i-1][i];/*累加第二条对角线之和*/printf("s=%d\n",s);}}main(){intm,n,i,j;maxixA;printf("m,n:");scanf("%d,%d",&m,&n);printf("元素值:\n");for(i=0;i<m;i++)/*建立数组A*/for(j=0;j<n;j++)scanf("%d",&A[i][j]);proc1(A);/*调用proc1()*/proc2(A);/*调用proc2()*/proc3(A);/*调用proc3()*/}8、假设稀疏矩阵A采用三元组表示,编写一个函数计算其转置矩阵B,要求B也采用三元组表示。解:三元组表示中要求按行的顺序存放,所有转置过程不能直接将行下标和列下标
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北省省实验中学联考2025届高二物理第一学期期中学业水平测试模拟试题含解析
- 江苏泰兴一中2025届物理高一第一学期期中复习检测模拟试题含解析
- 福建省福州市八县协作校2025届高三上物理期中调研试题含解析
- 西藏日喀则区南木林高级中学2025届物理高一上期中达标测试试题含解析
- 2025届福建省云霄立人学校物理高三上期末预测试题含解析
- 2025届韶关市重点中学物理高三第一学期期末质量检测试题含解析
- 2025届江西省恒立中学高二物理第一学期期末统考模拟试题含解析
- 2025届福建省闽侯市第六中学物理高三第一学期期末达标测试试题含解析
- 2025届福建省龙岩市非一级达标校物理高二上期末监测模拟试题含解析
- 湖南省张家界市(2024年-2025年小学五年级语文)人教版竞赛题(上学期)试卷及答案
- 企业网站建设及维护服务合同
- 北师版八年级数学上册 第四章 一次函数(压轴专练)(十大题型)
- 住院医师规范化培训教学病例讨论教案(模板)
- 2023年合肥市轨道交通集团有限公司招聘笔试真题
- 地磅施工技术交底
- 民法Ⅱ学习通超星期末考试答案章节答案2024年
- 2024年安全教育培训变更新增记录
- 医学文献检索复习试题和答案解析(四)
- 校园消防安全宣传教育课件
- 2024-2025学年一年级语文上册第四单元测试卷(统编版2024新教材)
- 2024-2025形势与政策:促进高质量充分就业 为中国式现代化建设提供有力支撑
评论
0/150
提交评论