MOOC C語言11 結構型別 列舉,結構,聯合

2021-06-23 03:48:49 字數 3143 閱讀 6041

列舉:

列舉是一種使用者定義的資料型別,它用關鍵字enum以如下語法來宣告:

enum 列舉型別名字 ;

列舉型別名字通常並不真的使用,要用的事在大括號裡的名字,因為它們就是常量符號。

結構:

宣告結構的形式:

struct point ;

struct point p1,p2;   //p1 p2是point的變數。

p1和p2都是point型別,裡面有x和y的值。

也可以宣告沒有名字的struct,比如沒有point。

變數也可以寫到後面就可以:

struct pointp1,p2;

結構的初始化與賦值:

用大括號,struct point p3 = ;

可以具體指明,struct point p4=;//如果給的值小於結構的成員,則自動補0等,和陣列差不多。

結構成員可以用.運算子(點運算子)和名字訪問其成員,比如 p4.x

強制轉換的賦值:

p1=(struct point);// p1.x=10; p1.y=20;

也可以直接賦值,p1=p2; 這是陣列所無法直接完成賦值的。

結構指標:

struct point *pd = &p1;

把結構當做引數傳給引數,傳送的是值,修改函式中的結構不會影響外面的原結構。

要在函式中中修改結構的值,可以返回結構就可以,因為可以直接賦值。

另外的修改方式:可以用結構指標作為引數。 這麼做也比傳整個結構高效。

用->表示指標所指的結構變數中的成員。(*p).month=12; 相當於  p->month=12;

聯合:union

儲存···所有的成員共享乙個空間

···同一時間只有乙個成員是有效的

···union的大小是其最大的成員

初始化···對第乙個成員做初始化

自定義資料型別:typedef

typedef int length; //length等價int型別

…………

下面是mooc.11習題

時間限制

400 ms

記憶體限制

32000 kb

**長度限制

8000 b

判題程式

standard

作者 喬林(清華大學)

本題要求編寫程式,計算兩個二維平面向量的和向量。

輸入格式:

輸入在一行中按照「x1 y1 x2 y2」的格式給出兩個二維平面向量v1=(x1, y1)和v2=(x2, y2)的分量。

輸出格式:

在一行中按照「(x, y)」的格式輸出和向量,座標輸出小數點後1位(注意不能輸出-0.0)。

輸入樣例:

3.5 -2.7 -13.9 8.7
輸出樣例:
(-10.4, 6.0)
/*

11.0平面向量加法

*/#include #include struct xl;

int main();

printf("(%.1f, %.1f)\n",(fabs(a.x) <0.05)?fabs(a.x):a.x ,(fabs(a.y) < 0.05)?fabs(a.y):a.y);

return 0;

} 9.8 -9.9 -9.81 0 0 -0.1 -0.01 3.5 -2.7 -13.9 8.7 0 0 -0.09 -0.09

解決-0.0問題,坑了好久好久好久……累感不愛

時間限制

400 ms

記憶體限制

32000 kb

**長度限制

8000 b

判題程式

standard

作者

喬林(清華大學)

通訊錄中的一條記錄包含下述基本資訊:朋友的姓名、出生日期、性別、固定**號碼、移動**號碼。 本題要求編寫程式,錄入n條記錄,並且根據要求顯示任意某條記錄。

輸入格式:

輸入在第1行給出正整數n(<=10);隨後n行,每行按照格式「姓名 生日 性別 固話 手機」給出一條記錄。其中「姓名」是不超過10個字元、不包含空格的非空字串;生日按「yyyy/mm/dd」的格式給出年月日;性別用「m」表示「男」、「f」表示「女」;「固話」和「手機」均為不超過15位的連續數字,前面有可能出現「+」。

在通訊錄記錄輸入完成後,最後一行給出正整數k,並且隨後給出k個整數,表示要查詢的記錄編號(從0到n-1順序編號)。數字間以空格分隔。

輸出格式:

對每一條要查詢的記錄編號,在一行中按照「姓名 固話 手機 性別 生日」的格式輸出該記錄。若要查詢的記錄不存在,則輸出「not found」。

輸入樣例:

3

chris 1984/03/10 f +86181779452 13707010007

laolao 1967/11/30 f 057187951100 +8618618623333

qiaolin 1980/01/01 m 84172333 10086

2 1 7

輸出樣例:
laolao 057187951100 +8618618623333 f 1967/11/30

not found

/*

11-1. 通訊錄的錄入與顯示(10)

*/#include struct xx;

int main()

else }

return 0;

}

這個沒什麼問題,注意下陣列大小就好了。

C語言 結構體 列舉型別 變數型別

一 結構體 多個相同型別的資料構成的集合叫做陣列,多個不同型別的資料構成的集合叫做結構體。結構體型別的作用域 定義在函式外面 全域性有效 從定義型別的那行開始,一直到檔案結尾 定義在函式 塊 內部 區域性有效 從定義型別的那行開始,一直到 塊結束 1 結構體的定義 struct是關鍵字,是結構體型別...

語言 構造型別(結構體 列舉)

42.構造型別 構造資料型別 陣列型別 結構體型別 共用體 聯合 型別。43.結構體 結構 是一種構造型別,它是由若干 成員 組成的。每乙個成員可以時乙個基本資料型別或者又是乙個構造型別。結構體可以把功能相同的資料組織起來,存在一起,用的時候方便,而且在呼叫函式時,若傳遞引數較多,傳乙個結構體相對而...

特殊型別結構 列舉

在數學和電腦科學理論中,乙個集的列舉是列出某些有窮序列集的所有成員的程式,或者是一種特定型別物件的計數。這兩種型別經常 但不總是 重疊。列舉在c c c 中,是乙個被命名的整型常數的集合,列舉在日常生活中很常見。例如表示星期的sunday,monday,tuesday,wednesday,thurs...