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