|
Post by huangno1 on Mar 2, 2017 20:41:58 GMT -8
程式說明
練習結構指標、箭號運算子和傳遞指標。
#include <stdio.h>
#include <string.h>
// 定義結構資料型態 Student
// 每位 Student 含有姓名、性別、年齡和三個分數
struct Student {
char name [ 10 ] = { } ;
char gender = ' ' ;
int age = 0 ;
int scores [ 3 ] = { } ;
} ;
// 傳入一個 Student,依序列印姓名、性別、年齡和三個分數,每個項目後面有一個空白,
// 最後再加上一個換行。
void Print(Student s)
{
printf ( "%s %c %d " , s.name , s.gender , s.age ) ;
for ( int i = 0 ; i < 3 ; i += 1 ) { printf ( "%d " , s.scores [ i ] ) ; }
putchar ( '\n' ) ;
}
// 傳入一個 Student 指標,由使用者依序輸入姓名、性別、年齡和三個分數
void Scan(
Student *s
)
{
scanf("%s %c %d",
s -> name
,
&s -> gender
,
&s -> age
);
for (int i=0; i<3; i+=1) { scanf("%d",
&s -> scores [ i ]
); }
}
void Test(
Student *p
)
{
Scan(
p
);
Print(
*p
);
// 設定姓名為 Allen,性別為 M,年齡為 18,第一個分數為 100
strcpy(
p -> name
, "Allen");
p -> gender
= 'M';
p -> age
= 18;
p -> scores [ 0 ]
= 100;
// 列印姓名、性別、年齡與三個分數
printf("%s %c %d ",
p -> name
,
p -> gender
,
p -> age
);
for (int i=0; i<3; i+=1) { printf("%d ",
p -> scores [ i ]
); }
putchar('\n');
}
int main()
{
Student allen;
Test(&allen);
Print(allen);
return 0;
}
|
|