2. 結(jié)構(gòu)變量的使用
結(jié)構(gòu)是一個(gè)新的數(shù)據(jù)類型, 因此結(jié)構(gòu)變量也可以象其它類型的變量一樣賦值、
運(yùn)算, 不同的是結(jié)構(gòu)變量以成員作為基本變量。
結(jié)構(gòu)成員的表示方式為:
結(jié)構(gòu)變量.成員名
如果將"結(jié)構(gòu)變量.成員名"看成一個(gè)整體, 則這個(gè)整體的數(shù)據(jù)類型與結(jié)構(gòu)中
該成員的數(shù)據(jù)類型相同, 這樣就可象前面所講的變量那樣使用。
下面這個(gè)例子定義了一個(gè)結(jié)構(gòu)變量, 其中每個(gè)成員都從鍵盤接收數(shù)據(jù), 然后
對結(jié)構(gòu)中的浮點(diǎn)數(shù)求和, 并顯示運(yùn)算結(jié)果, 同時(shí)將數(shù)據(jù)以文本方式存入一個(gè)名為
wage.dat的磁盤文件中。請注意這個(gè)例子中不同結(jié)構(gòu)成員的訪問。
例3:
#include
main()
{
struct{ /*定義一個(gè)結(jié)構(gòu)變量*/
char name[8];
int age;
char sex[2];
char depart[20];
float wage1, wage2, wage3, wage4, wage5;
}a;
FILE *fp;
float wage;
char c=’Y’;
fp=fopen("wage.dat", "w"); /*創(chuàng)建一個(gè)文件只寫*/
while(c==’Y’||c==’y’) /*判斷是否繼續(xù)循環(huán)*/
{
printf(" Name:");
scanf("%s", a.name); /*輸入姓名*/
printf("Age:");
scanf("%d", &a.wage); /*輸入年齡*/
printf("Sex:");
scanf("%d", a.sex);
printf("Dept:");
scanf("%s", a.depart);
printf("Wage1:");
scanf("%f", &a.wage1); /*輸入工資*/
printf("Wage2:");
scanf("%f", &a.wage2);
printf("Wage3:");
scanf("%f", &a.wage3);
printf("Wage4:");
scanf("%f", &a.wage4);
printf("Wage5:");
scanf("%f", &a.wage5);
wage=a.wage1+a.wage2+a.wage3+a.wage4+a.wage5;
printf("The sum of wage is %6.2f ", wage);/*顯示結(jié)果*/
fprintf(fp, "sM%4s0s.2f ", /*結(jié)果寫入文件*/
a.name, a.age, a.sex, a.depart, wage);
while(1)
{
printf("Continue?");
c=getche();
if(c==’Y’||c==’y’||c==’N’||c==’n’)
break;
}
}
fclose(fp);
}
結(jié)構(gòu)是一個(gè)新的數(shù)據(jù)類型, 因此結(jié)構(gòu)變量也可以象其它類型的變量一樣賦值、
運(yùn)算, 不同的是結(jié)構(gòu)變量以成員作為基本變量。
結(jié)構(gòu)成員的表示方式為:
結(jié)構(gòu)變量.成員名
如果將"結(jié)構(gòu)變量.成員名"看成一個(gè)整體, 則這個(gè)整體的數(shù)據(jù)類型與結(jié)構(gòu)中
該成員的數(shù)據(jù)類型相同, 這樣就可象前面所講的變量那樣使用。
下面這個(gè)例子定義了一個(gè)結(jié)構(gòu)變量, 其中每個(gè)成員都從鍵盤接收數(shù)據(jù), 然后
對結(jié)構(gòu)中的浮點(diǎn)數(shù)求和, 并顯示運(yùn)算結(jié)果, 同時(shí)將數(shù)據(jù)以文本方式存入一個(gè)名為
wage.dat的磁盤文件中。請注意這個(gè)例子中不同結(jié)構(gòu)成員的訪問。
例3:
#include
main()
{
struct{ /*定義一個(gè)結(jié)構(gòu)變量*/
char name[8];
int age;
char sex[2];
char depart[20];
float wage1, wage2, wage3, wage4, wage5;
}a;
FILE *fp;
float wage;
char c=’Y’;
fp=fopen("wage.dat", "w"); /*創(chuàng)建一個(gè)文件只寫*/
while(c==’Y’||c==’y’) /*判斷是否繼續(xù)循環(huán)*/
{
printf(" Name:");
scanf("%s", a.name); /*輸入姓名*/
printf("Age:");
scanf("%d", &a.wage); /*輸入年齡*/
printf("Sex:");
scanf("%d", a.sex);
printf("Dept:");
scanf("%s", a.depart);
printf("Wage1:");
scanf("%f", &a.wage1); /*輸入工資*/
printf("Wage2:");
scanf("%f", &a.wage2);
printf("Wage3:");
scanf("%f", &a.wage3);
printf("Wage4:");
scanf("%f", &a.wage4);
printf("Wage5:");
scanf("%f", &a.wage5);
wage=a.wage1+a.wage2+a.wage3+a.wage4+a.wage5;
printf("The sum of wage is %6.2f ", wage);/*顯示結(jié)果*/
fprintf(fp, "sM%4s0s.2f ", /*結(jié)果寫入文件*/
a.name, a.age, a.sex, a.depart, wage);
while(1)
{
printf("Continue?");
c=getche();
if(c==’Y’||c==’y’||c==’N’||c==’n’)
break;
}
}
fclose(fp);
}