初學c語言資料結構第一次實驗----------複數的簡單運算
筆者是一名高校在讀生,最近在學習資料結構,迷迷茫茫,在課本中的**中一點點探索。
以此篇作為部落格的開篇,望各位朋友指點。
這裡用的教材是老師推薦的嚴蔚敏教授主編的《資料結構(c語言版)》,許多**思路**於對此書的理解。
實驗內容:
複數型別的建立,複數取實部和虛部操作,複數相加相減的c語言控制台介面實現。
首先用結構體定義複數型別。
typedef
struct
complex;
這裡定義complex結構體型別,內含有兩個部分,後續可引用。
接下來是對於複數的運算的構造:
void
create
(complex &c,
float x,
float y)
float
getreal
(complex &c)
float
getimag
(complex &c)
complex add
(complex c1,complex c2)
complex sub
(complex c1,complex c2)
以上****於教材內,但直接應用於程式中行不通,所以稍加修改,「&」這個符號應在函式定義時注意,有時不加此符號,不能向主函式傳遞引數。若主函式內呼叫無果卻不報錯,可於此查錯。一定要注意區分「實參」「形參」的區別。
簡單的函式定義之後編寫主函式如下:
int
main()
switch
(choice)
else
if(tem==2)
else
printf
("任意鍵退出\n");
getch()
;break
;case2:
printf
("請輸入你要取哪個複數的虛部(1或2):");
int abc;
scanf
("%d"
,&abc);if
(abc==1)
else
if(abc==2)
else
printf
("任意鍵回主選單\n");
getch()
;break
;case3:
complex sum;
sum=
add(c1,c2)
;printf
("%f+%fj\n"
,sum.realpart,sum.imagpart)
;printf
("任意鍵回主選單\n");
getch()
;break
;case4:
complex sub;
sub=
sub(c1,c2)
;printf
("%f+%fj\n"
,sub.realpart,sub.imagpart)
;printf
("任意鍵回主選單\n");
getch()
;break;}
system
("cls");
}getch()
;}
主函式的邏輯關鍵之處在於要先產生兩個複數,才有後續的運算,所以先構造並建立兩個複數:
float a,b,c,d;
printf
("請建立複數1和複數2\n");
complex c1,c2;
printf
("輸入c1的實部:\n");
scanf
("%f"
,&a)
;printf
("輸入c1的虛部(不用寫j):\n");
scanf
("%f"
,&b)
;printf
("輸入c2的實部:\n");
scanf
("%f"
,&c)
;printf
("輸入c2的虛部(不用寫j):\n");
scanf
("%f"
,&d)
;create
(c1,a,b)
;create
(c2,c,d)
;
由於可設計為多次迴圈完成操作,不必多次開啟,所以設計while(1){}的結構進行無限迴圈控制。
當引用複數的實部和虛部時,要注意值為float型,輸出時可用「%f」,c.realpart這樣的形式輸出。
歡迎各位大神和同道學習的朋友指導!
練習 資料結構C語言描述(1 19)
1.19 試編寫演算法,計算i 2 i i 0,1,n 1 的值並分別存入陣列a arrsize 的各個分量中。假設計算機中允許的整數最大值為maxint,則當n arrsize或對某個k 0 k n 1 使k 2 k maxint時,應按出錯處理。注意選擇你認為較好的出錯處理方法。include ...
資料結構 2 鍊錶 C語言練習
用p從頭到尾掃瞄單鏈表,pre指向 p節點的前驅。若p的節點是x則刪除,並讓p後移,否則,pre和p同時移動 void del x 1 linklist l,elemtype x else 尾插法 值不為x則接入l,否則釋放 void del x 2 linklist l,elemtype x el...
資料結構 鏈棧小練習(c語言)
0.棧的建立及標頭檔案宣告 include includestruct stack struct stack init stack struct stack struct stack push stack struct stack int int pop stack struct stack int...