標籤:info 結構體 訪問 int union -- china 設計 不同的
一、PTA實驗作業題目1:6-1 計算兩個複數之積1. 本題PTA提交列表
2. 設計思路
struct complex multiply(struct complex x, struct complex y){ struct complex product;用於存放結果 執行運算 product.real=x.real*y.real-x.imag*y.imag; product.imag=x.imag*y.real+x.real*y.imag;以得出結果的實部和虛部 返回product
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明。
題目2:7-1 計算職工工資1. 本題PTA提交列表
2. 設計思路
struct man{ char name[10]; float j,f,z;//分別為 基本工資 浮動工資 支出 實發工資 float s;};//該結構體表示人員,基本工資,浮動工資,支出,實發工資 輸入N表示N個人 for i=0 to i=n-1{ 輸入名字 基本工資 浮動工資 支出 op[i].s執行運算op[i].j+op[i].f-op[i].z} for i=0 to i=n-1{ 輸出名字和實發工資}
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明。
man op[]一開始寫的100000無法運行,改小後可以運行;起初 基本工資 浮動工資 支出都定義為了int型,答案錯誤;輸出的時候也沒有迴圈多次輸出。
題目3:7-5 有理數比較1. 本題PTA提交列表
2. 設計思路
struct fraction{ int m,n;//m為分母,n為分子 }; //該結構體表示分母和分子 struct fraction a,b;定義兩個數 double x;//用於計算兩分數相減 char ch;//用於輸出符號 輸入ab兩個數的分母和分子 x執行運算a.n*1.0/a.m-b.n*1.0/b.m;if x>0 則a>bif x<0 則a<bif x==0 則a=b輸出
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明。
x=a.n1.0/a.m-b.n1.0/b.m;起初沒有*1.0結果一直輸出“=”
二、本周題目集的PTA最後排名。
三、閱讀代碼
某習題
struct country { int num; char name[10]; }x[5]={1,"China",2,"USA",3,"France",4, "England",5, "Spanish"}; struct country *p; p=x+2; printf("%d,%c",p->num,(*p).name[2]);
p是指向結構體的指標,p = x + 2 就相當於:p = x[0 + 2] = x[2];p->num中->是指標訪問它的變數的運算子,(*p)就是相當於把p指向的記憶體取出裡面的資料,“.”運算子訪問它的變數name數組,x[2].name為"France",第一個F下標是0,那麼下標為2的字母是a
某習題
把高於等於平均分的學生資料放在b所指的數組中,高於等於平均分的學生人數通過形參n傳回,平均分通過函數值返回。
四、本周學習總結1.總結本周學習內容
1.結構體
struct 結構體名
{
成員表列
} 變數表列;
例:
struct data{int a;char b;double c;} s1;
2.共用體
union 共用體名
{
成員表列
} 變數表列;
列:
union data{int i;char ch;float f;} a, b, c;
- 3.結構體與共用體
結構體:結構體和數組一樣都是構造型資料類型,和數組不同的是,結構體可以處理不同類型的資料。
共用體:共用體是一種多變數共用儲存空間的構造類型,它允許幾種不同的變數共用同一儲存空間。
4.函數的嵌套調用,在主函數main()中調用函數cal()
2.羅列本周一些錯題。
答案d是錯誤的,因為調用函數中的實在參數為一個是整型變數n,一個是指標變數a[9]的地址,即為指標變數。因為函數的實在參數與形式參數應該類型相同,個數相同。而答案d中的兩個參數均為整型變數,所以d是錯誤答案。答案a中的m為整型變數,x是一個數群組類型的變數,而數組名代表數組的首地址,所以與形式參數類型相同。答案b與答案a原因相同。而答案c中的變數p為整型變數,變數s為指標類型的變數。
變數會被放在程式的全域儲存區中,這樣可以在下一次調用的時候還可以保持原來的賦值。這一點是它與堆棧變數和堆變數的區別。變數用static告知編譯器,自己僅僅在變數的作用範圍內可見。這一點是它與全域變數的區別。
C語言部落格作業--結構體