一耕渴、新知識點掌握摘要
(1)?????? 結構體類型的定義
Struct 結構體名{
成員表列}
(2)?????? 結構體類型變量的定義
Struct student? stu(student為結構體名齿兔,stu為結構體變量名)
(3)?????? 結構體類型變量的內(nèi)涵:當定義了結構體類型后分苇,系統(tǒng)不分配內(nèi)存空間,只有當定義了結構體類型變量之后医寿,系統(tǒng)才會為之分配內(nèi)存空間
4)?????? 結構體類型變量的引用遵循規(guī)則
a靖秩、 不能將一個結構體變量作為一個整體進行輸入和
輸出。例如,已定義student1和student2為結構體
變量并且它們已有值花颗。不能這樣引用:
printf (“%d,%s,%c,%d,%f,%s\n”,student1);只能
對結構體變量中的各個成員分別進行輸入和輸出惠拭。
b、對結構體變量的成員可以像普通變量一樣進行各
種運算(根據(jù)其類型決定可以進行的運算)棒呛。
c域携、可以引用結構體變量成員的地址涵亏,也可以引用結
構體變量的地址如:scanf("%d“,&student1.num);
printf(“%o”,&student1);但不能用以下語句整體
讀入結構體變量,如:
scanf("%d,%s,%c,%d,%f,%s“,&student1)拆内;
二宠默、作業(yè)難題積累
錄入結構體數(shù)組并找出每一刻成績最高分的同學輸出成績及學號
#include<stdio.h>
struct student
{
??int no;
?char name[20];
????float cj1;
float cj2;
??float cj3;
??} ;
struct student stu[5];
int main(){
?? int i,j;
?? int max1,max2,max3;
? for(i=0;i<5;i++){
????? printf("請輸入學號:");
??????????? scanf("%d",&stu[i].no);
??????????? printf("請輸入姓名:");
???????????????????? getchar();
??????????? gets(stu[i].name);
??????????? printf("請輸入成績1:");
??????????? scanf("%f",&stu[i].cj1);
??????????? printf("請輸入成績2:");
??????????? scanf("%f",&stu[i].cj2);
??????????? printf("請輸入成績3:");
??????????? scanf("%f",&stu[i].cj3);
??????????? printf("\n");
??????????? }
??????????? max1=0;max2=0;max3=0;
???? ????????? for(i=1;i<5;i++){
???? ?????????????????? if(stu[i].cj1>stu[max1].cj1)
???? ?????????????????? max1=i;
???? ?????????????????? if(stu[i].cj2>stu[max2].cj2)
???? ?????????????????? max2=i;
???? ?????????????????? if(stu[i].cj3>stu[max3].cj3)
???? ?????????????????? max3=i;
??????????? }printf("一顆成績最高的分數(shù)及學號抹沪;%f %d",stu[max1].cj1,stu[max1].no);
??????????? printf("第二顆成績最高的分數(shù)及學號;%f %d",stu[max2].cj2,stu[max2].no);
??????????? printf("第三顆成績最高的分數(shù)及學號敏弃;%f %d",stu[max3].cj3,stu[max3].no);
?? }