結構與聯合實驗實驗報告

2021-03-04 06:45:49 字數 2922 閱讀 2264

c語言程式設計實驗報告

專業:電腦科學與技術班級:電腦科學與技術創新實驗班日期:2012-1-4 成績:

實驗組別第次實驗指導教師:

學生姓名學號同組人姓名:

實驗名稱:結構與聯合實驗

1、實驗目的

1.熟悉和掌握結構的說明和引用、結構的指標、結構陣列、以及函式中使用結構的方法。

2.掌握動態儲存分配函式的用法,掌握自引用結構,單向鍊錶的建立、遍歷、結點的增刪、查詢等操作。

3.了解字段結構和聯合的用法。

2、實驗內容及要求

1.表示式求值的程式驗證題

設有說明:

char u="uvwxyz";

char v="xyz";

struct ta=,},*p=a;

請先自己計算下面表示式的值,然後通過程式設計計算來加以驗證。(各表示式相互無關)

下面所給源程式的功能是:給定一批整數,以0作為結束標誌且不作為結點,將其建成乙個先進先出的鍊錶,先進先出鍊錶的指頭指標始終指向最先建立的結點(鏈頭),先建結點指向後建結點,後建結點始終是尾結點。請完成以下工作:

(1) 源程式中存在什麼樣的錯誤(先觀察執行結果)?對程式進行修改、除錯,使之能夠正確完成指定任務。

(2) 修改替換create_list函式,將其建成乙個後進先出的鍊錶。後進先出鍊錶的頭指標始終指向最後建立的結點(鏈頭),後建結點指向先建結點,先建結點始終是尾結點。

源程式:

#include "stdio.h"

#include "stdlib.h"

struct s_list ;

void create_list (struct s_list *headp,int *p);

void main(void)

printf("\n");

}void create_list(struct s_list *headp,int *p)

tail->next=null; /* 對指標域賦null值 */

}headp=loc_head; /* 使頭指標headp指向新建立的鍊錶 */

}3.程式設計

編寫並上機除錯執行能實現以下功能的程式或函式:

(1)編寫乙個程式,實現以下功能:設計乙個字段結構struct bits,它將乙個8位無符號位元組從最低位向最高位宣告為8個字段,各欄位依次為bit0, bit1, …, bit7,且bit0的優先順序最高。同時設計8個函式,第i個函式以biti(i=0,1,2,…,7)為引數,並且在函式體內輸出biti的值。

將8個函式的名字存入乙個函式指標陣列p_fun。如果bit0為1,呼叫p_fun[0]指向的函式。如果struct bits中有多位為1,則根據優先順序從高到低依次呼叫函式指標陣列p_fun中相應元素指向的函式。

8個函式中的第0個函式可以設計為:

void f0(struct bits b)

(2)假設用單向鍊錶建立一張班級成績單,包括每個學生的學號、姓名、英語、高等數學、普通物理、c語言程式設計四門課程的成績。用函式程式設計實現下列功能:

(1) 輸入每個學生的各項資訊。

(2) 輸出每個學生的各項資訊。

(3) 修改指定學生的指定資料項的內容。

(4) 統計每個同學的平均成績(保留2位小數)。

(5) 輸出各位同學的學號、姓名、四門課程的總成績和平均成績。

4.選做題

(1)對上述程式設計題中第(2)題的程式,增加按照平均成績進行公升序排序的函式,試寫出用交換節點資料域的方法公升序排序的函式,排序可選擇用選擇法或冒泡法。

(2)對選做題第(1)題,進一步寫出用交換1節點指標域的方法公升序排序的函式。

(3)採用雙向鍊錶重做程式設計設計題中的第(2)題。

三、實驗步驟及結果

1.表示式求值的程式驗證

驗證程式:

#include

int main(void)

a=,},*p=a;

e=a[0].t;f=a[1].t;

printf("1.(++p)->x\t%d\n",(++p)->x);

p=a;*u=*m;*v=*n;a[0].t=e;a[1].t=f;

printf("2.p++,p->c\t%c\n",(p++,p->c));

p=a;*u=*m;*v=*n;a[0].t=e;a[1].t=f;

printf("3.*p++->t,*p->t\t%c\n",(*p++->t,*p->t));

p=a;*u=*m;*v=*n;a[0].t=e;a[1].t=f;

printf("4.*(++p)->t\t%c\n",(*(++p)->t));

p=a;*u=*m;*v=*n;a[0].t=e;a[1].t=f;

printf("5.*++p->t\t%c\n",(*++p->t));

p=a;*u=*m;*v=*n;a[0].t=e;a[1].t=f;

printf("6.++*p->t\t%c\n",(++*p->t));

return 0;

}2.源程式修改、替換

(1)#include

#include

struct s_list;

void creat_list(struct s_list **headp,int *p);

int main()

; creat_list(&head,s);

p=head;

while(p)

printf("\n");

return 0;

}void creat_list(struct s_list **headp,int *p)

tail->next=null;

}*headp=loc_head;

}(2)

#include

#include

struct s_list;

void creat_list(struct s_list **headp,int *p);

函式與程式結構實驗實驗報告

c語言程式設計實驗報告 專業 電腦科學與技術班級 電腦科學與技術創新實驗班日期 2011 12 12成績 實驗組別第次實驗指導教師 學生姓名學號同組人姓名 實驗名稱 函式與程式結構實驗 1 實驗目的 1 熟悉和掌握函式的定義 宣告,函式的呼叫和引數傳遞方法,以及函式返回值型別的定義和返回值的使用。2...

資料結構實驗報告實驗

實驗名稱 實驗四排序 題目1 學生姓名 班級 班內序號 學號 日期 2013年12月19日 1 實驗要求 實驗目的 學習 實現 對比各種排序演算法,掌握各種排序演算法的優劣,以及各種演算法使用的情況。實驗內容 使用簡單陣列實現下面各種排序演算法,並進行比較。排序演算法 1 插入排序 2 希爾排序 3...

演算法與資料結構實驗報告

學生實驗報告冊 課程名稱 演算法與資料結構 實驗專案名稱 順序表實驗學時 2 同組學生姓名實驗地點 工科樓a205 實驗日期 2013年10月16日實驗成績 批改教師批改時間 實驗1 順序表 一 實驗目的和要求 掌握順序表的定位 插入 刪除等操作。二 實驗儀器和裝置 turbo c 2.0 三 實驗...