《明解C語言》筆記及課後習題答案 第十二章

2021-08-20 14:53:15 字數 3436 閱讀 5675

練習12-1

/*---編寫顯示物件takao各成員位址的程式。---*/ 

#include #define name_len 64

struct student ;

int main (void) ;

printf("姓名 = %p\n", &takao.name);

printf("姓名 = %d\n", &takao.name);

printf("身高 = %d\n", &takao.height);

printf("體重 = %d\n", &takao.weight);

printf("獎學金 = %d\n", &takao.schols);

return 0;

}

練習12-2

/*---改寫程式,宣告時不為其賦初始值,而且各成員的值從鍵盤輸入。---*/

#include #define name_len 64

typedef struct student student;

void hiroko (student *std)

int main(void)

練習12-3

/*---從鍵盤輸入int型,long型和double型的值,將這些值作為xyz結構體的成員,返回該結構體的值。---*/

#include struct xyz ;

struct xyz scan_xyz(int a, double b, long c)

int main (void) ;

scanf("%d %lf %ld", &a, &b, &c);

s2 = scan_xyz(a, b, c);

printf("%d %f %ld", s2.a, s2.b, s2.c);

return 0;

}

練習12-4

/*---程式改寫---*/

#include #include #define number 5

#define name_len 64

typedef struct student;

void swap_student (student *x, student *y)

void sort_by_height(student a, int n)

} if(choice == 1) }}

int main (void)

sort_by_height(std, number);

for (i = 0; i < number; i++)

printf("%s %d %f %ld\n", std[i].name, std[i].height, std[i].weight, std[i].schols);

return 0;

}

練習12-5

/*---以對話形式移動汽車的程式---*/

#include #include #define sqr(n) ((n) * (n))

typedef struct point;

typedef struct car;

double distance_of (point pa, point pb)

void put_info (car c)

int move(car *c, point dest)

int main(void)

, 90.0};

while (1)

if(choice == 0)

if (!move(&mycar, dest))

puts("\a燃料不足無法行使。");

} return 0;

}

示例

/*---表示日期的結構體和表示人的結構體---*/

#include #define name_len 128

struct date ;

typedef structhuman;

void print_human(human *h)

int main(void)

}, },

}, };

printf("請輸入今天的日期。\n");

printf("年:"); scanf("%d", &today.y);

printf("月:"); scanf("%d", &today.m);

printf("日:"); scanf("%d", &today.d);

printf("今天是%d年%d月%d日。\n", today.y, today.m, today.d);

printf("---會員一覽表---\n");

for(i = 0; i < sizeof(member) / sizeof(member[0]); i++)

print_human(&member[i]);

return 0;

}

結構體:結構體的名字student稱為結構名。中宣告的name,height等稱為結構體成員

結構體成員和 . 運算子:訪問結構體物件的各個成員時使用.運算子,該運算子稱為句點運算子

成員的初始化:為結構題賦初始值的形式與陣列相同。各個結構體成員的初始值依次排列在裡面,並用逗號進行分割。

運算子將 (*p).m 簡寫為 p ->m。

結構體和typedef:在型別名「struct student」中,同義詞「student」被作為typedef名定義。因此,單獨的「student」 可作為型別名發揮作用。

返回結構體的函式:

具有結構體成員的結構體:eg:

《明解C語言》筆記及課後習題答案 第五章

練習5 1 從頭順次為陣列中的元素賦值0,1,2,3,4 include int main void return 0 練習5 2 從頭順次為陣列中的元素賦值5,4,3,2,1。include int main void return 0 練習5 3 修改程式,從頭開始依次使用5,4,3,2,1進行...

《明解C語言》筆記及課後習題答案 第十一章

練習11 1 將 清單進行修改 include int main void 練習11 2 將 中的常量用程式計算出來 include int count const char c int main void char p for i 0 i count a i printf a d s n i,a ...

《明解C語言》筆記及課後習題答案 第十章

練習10 1 編寫函式adjust point,如果n指向的值小於0,就將其改為0 如果值大於100,就將其改為100 如果是0 100的值,則不修改 include void adjust point int n int main void 練習10 2 將 y 年 m 月 d 日的日期,修改為其...