例如有一種情況,我們需要存儲5名學生的數(shù)據(jù)。我們可以使用下面給出的結(jié)構(gòu)來存儲它。
#include<stdio.h> struct student { char name[20]; int id; float marks; }; void main() { struct student s1,s2,s3; int dummy; printf("輸入學生1的姓名,身份證和分數(shù) "); scanf("%s %d %f",s1.name,&s1.id,&s1.marks); scanf("%c",&dummy); printf("輸入學生2的姓名,身份證和分數(shù) "); scanf("%s %d %f",s2.name,&s2.id,&s2.marks); scanf("%c",&dummy); printf("輸入學生3的姓名,身份證和分數(shù) "); scanf("%s %d %f",s3.name,&s3.id,&s3.marks); scanf("%c",&dummy); printf("輸出詳細信息....\n"); printf("%s %d %f\n",s1.name,s1.id,s1.marks); printf("%s %d %f\n",s2.name,s2.id,s2.marks); printf("%s %d %f\n",s3.name,s3.id,s3.marks); }
輸出結(jié)果
輸入學生1的姓名,身份證和分數(shù) James 90 90 輸入學生2的姓名,身份證和分數(shù) Adoms 90 90 輸入學生3的姓名,身份證和分數(shù) Nick 90 90 輸出詳細信息.... James 90 90.000000 Adoms 90 90.000000 Nick 90 90.000000
在上面的程序中,我們在結(jié)構(gòu)中存儲了3個學生的數(shù)據(jù)。但是,如果有20名學生,則該程序的復雜性將增加。在這種情況下,我們將必須聲明20個不同的結(jié)構(gòu)變量,并將其一一存儲。這將一直很困難,因為每次添加學生時都必須聲明一個變量。記住所有變量的名稱也是一項非常棘手的任務。但是,C語言中我們能夠使用聲明結(jié)構(gòu)的數(shù)組,從而避免聲明不同的結(jié)構(gòu)變量;相反,我們可以創(chuàng)建一個包含所有存儲不同實體信息的結(jié)構(gòu)的集合。
C語言中的結(jié)構(gòu)數(shù)組可以定義為多個結(jié)構(gòu)變量的集合,其中每個變量都包含有關(guān)不同實體的信息。C語言中的結(jié)構(gòu)數(shù)組用于存儲有關(guān)不同數(shù)據(jù)類型的多個實體的信息。結(jié)構(gòu)的陣列也稱為結(jié)構(gòu)的集合。
讓我們看一下存儲5個學生的信息并打印出來的結(jié)構(gòu)數(shù)組的示例。
#include<stdio.h> #include <string.h> struct student{ int rollno; char name[10]; }; int main(){ int i; struct student st[5]; printf("輸入5個學生數(shù)據(jù)"); for(i=0;i<5;i++){ printf("\n輸入序號:"); scanf("%d",&st[i].rollno); printf("\n輸入姓名:"); scanf("%s",&st[i].name); } printf("\n學生信息列表:"); for(i=0;i<5;i++){ printf("\n序號:%d, 姓名:%s",st[i].rollno,st[i].name); } return 0; }
輸出:
輸入5個學生數(shù)據(jù) 輸入序號:1 輸入姓名:Sonoo 輸入序號:2 輸入姓名:Ratan 輸入序號:3 輸入姓名:Vimal 輸入序號:4 輸入姓名:James 輸入序號:5 輸入姓名:Sarfraz 學生信息列表: 序號:1, 姓名:Sonoo 序號:2, 姓名:Ratan 序號:3, 姓名:Vimal 序號:4, 姓名:James 序號:5, 姓名:Sarfraz