C語言實習(xí)報告_第1頁
C語言實習(xí)報告_第2頁
C語言實習(xí)報告_第3頁
C語言實習(xí)報告_第4頁
C語言實習(xí)報告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

.題目一 線性結(jié)構(gòu)的操作1.用線性表的順序存儲(數(shù)組)保存數(shù)據(jù)輸入要待查找的學(xué)號N輸入的與學(xué)生里面的學(xué)號是否相等Y輸出該信息輸出沒有此人算法的N-S圖或流程圖輸入待刪除的學(xué)號輸入的與學(xué)生里面的學(xué)號 N是否相等Y沒有該學(xué)生刪除該學(xué)生學(xué)號編輯版.2.用線性表的鏈?zhǔn)酱鎯Γㄦ湵恚┍4鏀?shù)據(jù)插入:sH^C1^C1 ^HH

SCi-1 C2 C1 ^?C1s p刪除:LA1?Ai-1-Ai?An^PLA1?AI-1AiAi+1?An^rinclude<stdio.h>#include<stdlib.h>typedefstruct{intnum;//學(xué)號編輯版.charname[10];//姓名}student; //定義的抽象元素類型 ElemtypetypedefstructNode /*結(jié)點(diǎn)類型定義*/{studentdata;structNode*next;}Node,*LinkList; /*LinkList為結(jié)構(gòu)指針類型*/staticintcount; //學(xué)生人數(shù)帶頭結(jié)點(diǎn)的尾插入法創(chuàng)建鏈表voidinsert(LinkListhead){LinkListp,q; //p代表的待插元素代入最后一個元素q=head;//q指向head結(jié)點(diǎn)printf("輸入學(xué)生人數(shù):");scanf("%d",&count);編輯版.for(inti=0;i<count;i++){printf("\n輸入第%d個學(xué)生信息:\n",i+1);p=(LinkList)malloc(sizeof(Node)); //結(jié)點(diǎn)p申請一個空間printf("輸入學(xué)號:");scanf("%d",&p->data.num);//輸入結(jié)點(diǎn)p的數(shù)據(jù)°學(xué)號printf("\n輸入姓名:");scanf("%s",p->);//輸入結(jié)點(diǎn)的數(shù)據(jù)域姓名 name為數(shù)組類型 數(shù)組名為首地址 所有此處不需要地ì址符號if(i==0){head->next=p;//i=0 鏈表中沒有元素只有頭節(jié)點(diǎn)把插入到 head之后}else{q->next=p; //鏈表中已有結(jié)點(diǎn)元素結(jié)點(diǎn)采用尾插入法}q=p; //每插入一個元素就賦值于 q q始終指向最后一個元素編輯版.}p->next=NULL;//設(shè)置next域為空}voidprint(LinkListhead){LinkListx; //定義一個鏈表結(jié)點(diǎn)x=head->next;//該節(jié)點(diǎn)指向第一個元素printf("學(xué)生信息如下\n");while(x)//存在結(jié)點(diǎn){printf("學(xué)號%d姓名%s\n",x->data.num,x->);//輸出該結(jié)點(diǎn)的數(shù)據(jù)域?qū)W號和姓名x=x->next;//下一個元素}printf("\n");}把鏈表中的文件信息放入文件中寫入語句編輯版.voidsavetofile(LinkListhead){FILE*fp;LinkListp;p=head->next;if((fp=fopen("d:\\st2.txt","wb+"))==NULL){printf("不能打開文件");return;}while(p){fprintf(fp,"%d%s\r\n",p->data.num,p->);p=p->next;}printf("\n寫入成功\n");}功能菜單提示性語句編輯版.voidmenu(){printf("\n0.退出1.輸入 2.輸出3.寫入\n");}voidmain(){intchoice;LinkListl;l=(LinkList)malloc(sizeof(Node));//頭結(jié)點(diǎn)申請空間l->next=NULL;//頭結(jié)點(diǎn)的next為空menu();while(1){scanf("%d",&choice);//輸入一個整數(shù)switch(choice){case1: insert(l);menu();break;編輯版.case2:print(l);menu();break;default:exit(0);}}}題目二 排序#include"stdio.h"#include"stdlib.h"#include"time.h"#defineTRUE1#defineFALSE0typedefintKeyType;typedefintOtherType;#defineMAXSIZE200/*線性表可能達(dá)到的最大長度 */typedefstruct編輯版.{KeyTypekey;OtherTypeother_data;}RecordType;voidInsSort(RecordTyper[],intlength)/* 對記錄數(shù)組 r做直接插入排序,length為數(shù)組中待排序記錄的數(shù)目 */{inti,j;for(i=2;i<=length;i++){r[0]=r[i];/*將待插入記錄存放到監(jiān)視哨 r[0]中*/j=i-1;while(r[0].key<r[j].key)/*尋找插入位置 */{r[j+1]=r[j];j=j-1;}r[j+1]=r[0]; /*將待插入記錄插入到已排序的序列中 */}}/*InsSort*/voidBubbleSort(RecordTyper[],intlength)/*對記錄數(shù)組 r做冒泡排序,length為數(shù)組的長度*/{編輯版.intn,i,j;intchange;RecordTypex;n=length;change=TRUE;for(i=1;i<=n-1&&change;++i){change=FALSE;for(j=1;j<=n-i;++j)if(r[j].key>r[j+1].key){x=r[j];r[j]=r[j+1];r[j+1]=x;change=TRUE;}}}/*BubbleSort*/voidSelectSort(RecordTyper[],intlength)/*對記錄數(shù)組 r做簡單選擇排序,length為數(shù)組的長度*/{編輯版.inti,j,k;intn;RecordTypex;n=length;for(i=1;i<=n-1;++i){k=i;for(j=i+1;j<=n;++j)if(r[j].key<r[k].key)k=j;if(k!=i){x=r[i];r[i]=r[k];r[k]=x;}}}/*SelectSort*/voidsqrand(RecordTyper[])//獲取隨機(jī)數(shù)據(jù){inti;intlen;編輯版.srand(time(NULL));//設(shè)置隨機(jī)數(shù)種子。for(i=1;i<=100;i++){r[i].key=rand()%101;}}voidout(RecordTyper[]){for(inti=1;i<=100;i++){printf("%5d",r[i].key);}}voidmenu(){printf("\n1 生成隨機(jī)數(shù) 2輸出隨機(jī)數(shù) 3插入排序 4冒泡排序 5簡單選擇排序其他退出\n");}intmain(){intlen,n;編輯版.RecordTyper[MAXSIZE];menu();len=100;while(1){scanf("%d",&n);switch(n){case1:sqrand(r);break;case2:out(r);break;case3:InsSort(r,len);break;case4:BubbleSort(r,len);break;case5:SelectSort(r,len);break;default:exit(0);break;}menu();}return0;}源程序清單宿舍結(jié)構(gòu)體順序存儲結(jié)構(gòu)定義如下:#defineMAXSIZE100編輯版.typedef struct //學(xué)生住宿記錄結(jié)構(gòu)體{chardormID[10];intstudentID;char name[10];charsex[2];intage;}dormitory;typedef struct //順序表的存儲結(jié)構(gòu){dormitorydorm[MAXSIZE]; //線性表占用的數(shù)組空間intlast;//最后一個元素在數(shù)組中的位置(下標(biāo)值),空表置為 -1}SeqList;宿舍結(jié)構(gòu)體鏈?zhǔn)酱鎯Y(jié)構(gòu)定義如下:typedef structdormitory//學(xué)生住宿記錄結(jié)構(gòu)體{chardormID[10];intstudentID;char name[10];charsex[2];intage;}dormitory;編輯版.typedef structNode//學(xué)生住宿記錄結(jié)點(diǎn){studentdata;struct Node *next;}Node,*LinkList; //LinkList為結(jié)構(gòu)體指針類型題目一 線性結(jié)構(gòu)的操作1.用線性表的順序存儲(數(shù)組)保存數(shù)據(jù)1)鍵盤輸入你所在宿舍的同學(xué)信息到數(shù)組;2)遍歷輸出所以學(xué)生數(shù)據(jù);3)按姓名查找并輸出指定學(xué)生數(shù)據(jù),統(tǒng)計查找的次數(shù);4)把數(shù)組內(nèi)容輸出到文件;5)從文件讀入學(xué)生數(shù)據(jù),按學(xué)號排序后顯示在屏幕;6)某同學(xué)調(diào)入你的宿舍,請增加其信息;并查看增加后的結(jié)果;7)某同學(xué)調(diào)離你的宿舍,請刪除其信息,并查看刪除后的結(jié)果;題目一 線性結(jié)構(gòu)的操作2.用線性表的鏈?zhǔn)酱鎯Γㄦ湵恚┍4鏀?shù)據(jù)1)鍵盤輸入你所在宿舍的同學(xué)信息到數(shù)組;2)遍歷輸出所以學(xué)生數(shù)據(jù);3)按姓名查找并輸出指定學(xué)生數(shù)據(jù),統(tǒng)計查找的次數(shù);4)把數(shù)組內(nèi)容輸出到文件;編輯版.5)從文件讀入學(xué)生數(shù)據(jù),按學(xué)號排序后顯示在屏幕;6)某同學(xué)調(diào)入你的宿舍,請增加其信息;并查看增加后的結(jié)果;7)某同學(xué)調(diào)離你的宿舍,請刪除其信息,并查看刪除后的結(jié)果;題目二排序?qū)嵙?xí)總結(jié)報告這次課程設(shè)計的心得體會通過實習(xí)我的收獲如下 :數(shù)據(jù)結(jié)構(gòu)是計算機(jī)很基礎(chǔ)的一門學(xué)科,但是學(xué)習(xí)就是要從基礎(chǔ)學(xué)起 .本次實訓(xùn)首先鞏固課本上重要知識點(diǎn),首先是一些基本操作,掌握線性表在單鏈存儲結(jié)構(gòu)中實現(xiàn)基本運(yùn)算(查找、插入、刪除、合并等)的算法,線性表在單向循環(huán)鏈表結(jié)構(gòu)中實現(xiàn)基本運(yùn)算 (查找、插入、刪除、合并等)的算法 1、鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運(yùn)用本課程所學(xué)知識的能力。2、培養(yǎng)了我選用參考書,查閱手冊及文獻(xiàn)資料的能力。培養(yǎng)獨(dú)立思考,深入研究,分析問題、解決問題的能力。 3、通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。 4、通過課程設(shè)計,培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng), 逐步建立正確的生產(chǎn)觀念、 經(jīng)濟(jì)觀念和全局觀念。從剛開始得覺得很難,到最后把這個做出來,付出了很多,也得到了很多,以前總以為自己對編程的地方還不行,現(xiàn)在,才發(fā)現(xiàn)只要認(rèn)真做,沒有什么不可能。編程時要認(rèn)真仔細(xì),出現(xiàn)錯誤要及時找出并改正, (其中對英語的要求也體現(xiàn)出來了,因為它說明錯誤的時候都是英語) 遇到問題要去查相關(guān)的資料。 反復(fù)的調(diào)試程序,最好是多找?guī)讉€同學(xué)來對你的程序進(jìn)行調(diào)試并聽其對你的程序的建議,在他們不知道程序怎么寫的時候完全以一個用戶的身份來用對你的用戶界面編輯版.做一些建議,正所謂當(dāng)局者迷旁觀者清, 把各個注意的問題要想到;同時要形成自己的編寫程序與調(diào)試程序的風(fēng)格, 從每個細(xì)節(jié)出發(fā),不放過每個知識點(diǎn),注意與理論的聯(lián)系和理論與實踐的差別。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論