下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)上機(jī)實(shí)驗(yàn)答案數(shù)據(jù)結(jié)構(gòu)上機(jī)實(shí)驗(yàn)答案數(shù)據(jù)結(jié)構(gòu)上機(jī)實(shí)驗(yàn)答案xxx公司數(shù)據(jù)結(jié)構(gòu)上機(jī)實(shí)驗(yàn)答案文件編號(hào):文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計(jì),管理制度《數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)書(shū)》答案實(shí)驗(yàn)一:請(qǐng)編寫(xiě)函數(shù)intfun(int*a,int*b),函數(shù)的功能是判斷兩個(gè)指針a和b所指存儲(chǔ)單元的值的符號(hào)是否相同;若相同函數(shù)返回1,否則返回0。這兩個(gè)存儲(chǔ)單元中的值都不為0。在主函數(shù)中輸入2個(gè)整數(shù)、調(diào)用函數(shù)fun、輸出結(jié)果。#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");}計(jì)算1+2+3+……+100,要求用指針進(jìn)行設(shè)計(jì)。即設(shè)計(jì)函數(shù)intfun(int*n)實(shí)現(xiàn)求1+2+3+……+*n,在主函數(shù)中輸入、調(diào)用、輸出結(jié)果。#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));}函數(shù)的功能是求數(shù)組a中最大數(shù)的位置(位序號(hào))。在主函數(shù)中輸入10個(gè)整數(shù)、調(diào)用函數(shù)fun、輸出結(jié)果。#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、請(qǐng)編寫(xiě)函數(shù)fun(int*a,intn,int*odd,int*even),函數(shù)的功能是分別求出數(shù)組a中所有奇數(shù)之和和所有偶數(shù)之和。形參n給出數(shù)組中數(shù)據(jù)的個(gè)數(shù);利用指針odd和even分別返回奇數(shù)之和和偶數(shù)之和。在主函數(shù)中輸入10個(gè)整數(shù)、調(diào)用函數(shù)fun、輸出結(jié)果。#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、請(qǐng)編寫(xiě)函數(shù)intfun(int*a,int*b,intn),函數(shù)的功能是把數(shù)組a中所有為偶數(shù)的數(shù),放在另一個(gè)數(shù)組中b。在主函數(shù)中輸入10個(gè)整數(shù)、調(diào)用函數(shù)fun、輸出結(jié)果。#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、請(qǐng)編寫(xiě)函數(shù)intfun(int*a,,intn),函數(shù)的功能是把數(shù)組a中最大數(shù)和最小數(shù)交換。在主函數(shù)中輸入10個(gè)整數(shù)、調(diào)用函數(shù)fun、輸出結(jié)果。#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、請(qǐng)編寫(xiě)函數(shù)intfun(inta[4][4]),函數(shù)的功能是把矩陣a轉(zhuǎn)置。在主函數(shù)中輸入、調(diào)用函數(shù)fun、輸出結(jié)果。#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);}請(qǐng)編寫(xiě)函數(shù)intfun(char*a),函數(shù)的功能是分別求出字符串a(chǎn)的長(zhǎng)度。在主函數(shù)中輸入1個(gè)字符串、調(diào)用函數(shù)fun、輸出結(jié)果。#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/*定義數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)類(lèi)型)*/{longnum;charname[10];intscore[3];/*存放三門(mén)課成績(jī)*/floataverage;/*/平均成績(jī)*/}stu;voidintput(stus[],intn)/*輸入數(shù)據(jù)*/{inti,j;/*i表示處理學(xué)生的下標(biāo),J表示成績(jī)編號(hào)*/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)/*求每個(gè)學(xué)生的平均成績(jī)*/{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)/*求總平均成績(jī)*/{inti;floatsum=,ave;for(i=0;i<n;i++)sum+=s[i].average;ave=sum/n;return(ave);}intmax(stus[],intn)/*求平均成績(jī)最高學(xué)生的下標(biāo)*/{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();}實(shí)驗(yàn)二1、#include<>#defineMaxLen50typedefintelemtype;structdatatype{elemtype*elem;intlength;};typedefstructdatatypesqlist;voidcreate(sqlist*a){inti,n;a->elem=(elemtype*)malloc(MaxLen*sizeof(elemtype));printf("創(chuàng)建一個(gè)順序表\n");printf("輸入元素個(gè)數(shù)\n");scanf("%d",&a->length);for(i=0;i<a->length;i++){printf("輸入第%d個(gè)元素值:",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("建立一個(gè)單鏈表\n");while(1){printf("輸入第%d節(jié)點(diǎn)data域值:",i);scanf("%d",&d);if(d==0)break;/*以0表示輸入結(jié)束*/if(i==1)/*建立第一個(gè)結(jié)點(diǎn)*/{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始終指向生成的單鏈表的最后一個(gè)結(jié)點(diǎn)*/}i++;}returnh;}voiddisp(nodetype*h){nodetype*p=h;printf("輸出一個(gè)單鏈表:\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個(gè)節(jié)點(diǎn)\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("創(chuàng)建一個(gè)順序表\n");printf("輸入學(xué)生學(xué)號(hào)和成績(jī):0作為結(jié)束標(biāo)志\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)見(jiàn)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("創(chuàng)建一個(gè)順序表\n");printf("輸入學(xué)生學(xué)號(hào)和成績(jī):0作為結(jié)束標(biāo)志\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("創(chuàng)建一個(gè)順序表\n");printf("輸入學(xué)生學(xué)號(hào)和成績(jī):0作為結(jié)束標(biāo)志\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("輸出一個(gè)單鏈表:\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);}實(shí)驗(yàn)三:7、試寫(xiě)一個(gè)算法,識(shí)別依次讀入的一個(gè)以@為結(jié)束符的字符序列是否為形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中不包含字符’&’,且序列2是序列1的逆序列。例如,‘a(chǎn)+b&b+a’是屬于該模式的字符序列,而‘1+2&2-1intIsReverse()0’(3)本小題中一條對(duì)角線(xiàn)是A[i][i],其中(0≤i≤m-1),另一條對(duì)角線(xiàn)是A[m-i-1,i],其中(0≤i≤m-1),因此用循環(huán)實(shí)現(xiàn)即可。實(shí)現(xiàn)本題功能的程序如下:#include<>/*實(shí)現(xiàn)(1)小題功能的函數(shù)*/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個(gè)角的重復(fù)元素值*/printf("s=%d\n",s);}/*實(shí)現(xiàn)(2)小題功能的函數(shù)*/voidproc2(maxixA){ints=0,i,j;i=0;while(i<m){j=0;while(j<n){s=s+A[i][j];j=j+2;/*跳過(guò)一列*/}i=i+2;/*跳過(guò)一行*/}printf("s=%d\n",s);}/*實(shí)現(xiàn)(3)小題功能的函數(shù)*/voidproc3(maxixA){inti,s;if(m!=n)printf("m≠n");else{s=0;for(i=0;i<m;i++)s=s+A[i][i];/*求第一條對(duì)角線(xiàn)之和*/for(i=0;i<n;i++)s=s+A[n-i-1][i];/*累加第二條對(duì)角線(xiàn)之和*/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++)/*建立數(shù)組A*/for(j=0;j<n;j++)scanf("%d",&A[i][j]);proc1(A);/*調(diào)用proc1()*/proc2(A);/*調(diào)用proc2()*/proc3(A);/*調(diào)用proc3()*/}8、假設(shè)稀疏矩陣A采用三元組表示,編寫(xiě)一個(gè)函數(shù)計(jì)算其轉(zhuǎn)置矩陣B,要求B也采用三元組表示。解:三元組表示中要求按行的順序存放,所有轉(zhuǎn)置過(guò)程不能直接將行下標(biāo)和列下標(biāo)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 混合動(dòng)力電動(dòng)汽車(chē)結(jié)構(gòu)原理與檢修 第2版 課件 學(xué)習(xí)情景2 混合動(dòng)力電動(dòng)汽車(chē)高壓維修操作安全
- 年末晚會(huì)活動(dòng)策劃方案(3篇)
- 牛雜店工人管理制度范本(3篇)
- 甲醇爐燃?xì)獍踩芾碇贫?3篇)
- 獸藥質(zhì)檢培訓(xùn)
- 線(xiàn)上幫辦團(tuán)隊(duì)管理制度內(nèi)容(3篇)
- 蔬菜種植后期管理制度(3篇)
- 通信網(wǎng)管中心管理制度(3篇)
- 飯店協(xié)會(huì)檔案管理制度(3篇)
- 《GA 1016-2012槍支(彈藥)庫(kù)室風(fēng)險(xiǎn)等級(jí)劃分與安全防范要求》專(zhuān)題研究報(bào)告
- 2025年廣東省中考語(yǔ)文試卷真題(含答案解析)
- 燙熨治療法講課件
- 2025至2030中國(guó)模塊化變電站行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢(xún)研究報(bào)告
- 電廠清潔生產(chǎn)管理制度
- 2025年江蘇省事業(yè)單位招聘考試教師招聘體育學(xué)科專(zhuān)業(yè)知識(shí)試題
- 機(jī)械設(shè)計(jì)年終述職報(bào)告
- 可信數(shù)據(jù)空間解決方案星環(huán)科技
- 建筑工程監(jiān)理服務(wù)承諾書(shū)范文
- 知榮明恥主題班會(huì)課件
- 職業(yè)技術(shù)學(xué)院工業(yè)機(jī)器人技術(shù)高職技能考核標(biāo)準(zhǔn)1022(簡(jiǎn)化版)
- 聲學(xué)基礎(chǔ)課后題答案
評(píng)論
0/150
提交評(píng)論