練習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 日的日期,修改為其...