C語言中結(jié)構(gòu)體和共用體實(shí)例教程
一、實(shí)驗(yàn)?zāi)康?br />
- 掌握結(jié)構(gòu)體類型變量的定義和使用;
- 掌握結(jié)構(gòu)體類型數(shù)組的概念和應(yīng)用;
- 掌握鏈表的概念,初步學(xué)會(huì)對(duì)鏈表進(jìn)行操作;
- 掌握共用體的概念與使用;
- 掌握指向結(jié)構(gòu)體變量的指針。
- 掌握指向結(jié)構(gòu)體數(shù)組的指針的應(yīng)用。
二、實(shí)驗(yàn)內(nèi)容
編寫下列程序,然后上機(jī)調(diào)試運(yùn)行。
- 對(duì)候選人得票的統(tǒng)計(jì)程序。設(shè)有3個(gè)候選人,每次輸入一個(gè)得票的候選人的名字,要求最后輸出各人得票結(jié)果。
- 編寫一個(gè)函數(shù)print,打印一個(gè)學(xué)生的成績(jī)數(shù)組,該數(shù)組中有5個(gè)學(xué)生的數(shù)據(jù)記錄,每個(gè)記錄包括num、name、score[3],用主函數(shù)輸入這些記錄,用print函數(shù)輸出這些記錄。
- 建立一個(gè)鏈表,每個(gè)結(jié)點(diǎn)包括:學(xué)號(hào)、姓名、性別、年齡。輸入一個(gè)年齡,如果鏈表中的結(jié)點(diǎn)所包含的年齡等于此年齡,則將此結(jié)點(diǎn)刪去。(選作)
三、實(shí)驗(yàn)記錄
3.1 候選人選票統(tǒng)計(jì)
(1)源代碼
# include <stdio.h> typedef struct node { char name; int cnt; }candt; int main(void) { candt A,B,C; char vote; A.name='A',A.cnt=0; B.name='B',B.cnt=0; C.name='C',C.cnt=0; while(vote!='#')/*當(dāng)輸入為#時(shí),表示投票結(jié)束。*/ { printf("Please enter the candidate:\n"); scanf("%c",&vote); getchar(); switch(vote) { case 'A':A.cnt++;break; case 'B':B.cnt++;break; case 'C':C.cnt++;break; default:printf("Input error!\n"); } } printf("A'note:%d\n",A.cnt); printf("B'note:%d\n",B.cnt); printf("C'note:%d\n",C.cnt); return 0; }
(2)運(yùn)行結(jié)果截圖
3.2 print函數(shù)
(一)源代碼
# include <stdio.h> # define N 5 struct student { char num[6]; char name[10]; int score[4]; }stu[N]; void print(struct student stu[6]); int main(void) { int i,j; for(i=0;i<N;i++) { printf("\nInput data of student:\n"); printf("NO.: "); scanf("%s",stu[i].num); printf("name: "); scanf("%s",stu[i].name); for(j=0;j<3;j++) { printf("score %d:",j+1); scanf("%d",&stu[i].score[j]); } } print(stu); return 0; } void print(struct student stu[6]) { int i,j; printf(" NO. name score1 score2 score3\n"); for(i=0;i<N;i++) { printf("%5s%10s",stu[i].num,stu[i].name); for(j=0;j<3;j++) printf("%9d",stu[i].score[j]); printf("\n"); } }
(2)運(yùn)行結(jié)果截圖
3.3 鏈表
(1)源代碼
# include <stdio.h> # include <malloc.h> //定義了一個(gè)鏈表節(jié)點(diǎn)的數(shù)據(jù)類型 struct student { char num[10]; char name[6]; char sex[2]; int age;//數(shù)據(jù)域 struct student *next; //指針域 }stu[10]; int main(void) { struct student *p,*pt,*head; int i,length,iage,flag=1; int find=0; while(flag==1) { printf("Please enter the length of the list(<10):"); scanf("%d",&length); if(length<10) flag=0; } //建立鏈表 for(i=0;i<length;i++) { p=(struct student *)malloc(sizeof(struct student)); if(i==0) head=pt=p; else pt->next=p; pt=p; printf("NO.:"); scanf("%s",&p->num); printf("name:"); scanf("%s",&p->name); printf("sex:"); scanf("%s",&p->sex); printf("age:"); scanf("%d",&p->age); } p->next=NULL; p=head; printf("\nNO. name sex age\n"); while(p!=NULL) { printf("%4s%8s%6s%6d\n",p->num,p->name,p->sex,p->age); p=p->next; } //刪除結(jié)點(diǎn) printf("Input age:"); scanf("%d",&iage); pt=head; p=pt; if(pt->age==iage)/*鏈頭是待刪元素*/ { p=pt->next; head=pt=p; find=1; } else/*鏈頭不是待刪元素*/ pt=pt->next; while(pt!=NULL) { if(pt->age==iage) { p->next=pt->next; find=1; } else p=pt; pt=pt->next; } if(!find) printf("Not found%d.\n",iage); p=head; printf("\nNO. name sex age\n"); while(p!=NULL) { printf("%4s%8s",p->num,p->name); printf("%6s%6d\n",p->sex,p->age); p=p->next; } return 0; }
(2)運(yùn)行結(jié)果截圖
總結(jié)
到此這篇關(guān)于C語言中結(jié)構(gòu)體和共用體的文章就介紹到這了,更多相關(guān)C語言結(jié)構(gòu)體和共用體內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言鏈表案例學(xué)習(xí)之通訊錄的實(shí)現(xiàn)
為了將所學(xué)到的鏈表的知識(shí)進(jìn)行鞏固學(xué)習(xí),做到學(xué)以致用,本文將利用鏈表制作一個(gè)簡(jiǎn)單的通訊錄。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-10-10C++如何獲取系統(tǒng)信息 C++獲取IP地址、硬件信息等
這篇文章主要為大家詳細(xì)介紹了C++如何獲取系統(tǒng)信,C++獲取IP地址、硬件信息等,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04C++面試題之?dāng)?shù)a、b的值互換(不使用中間變量)
這篇文章主要介紹了不使用中間變量,C++實(shí)現(xiàn)數(shù)a、b的值互相轉(zhuǎn)換操作,感興趣的小伙伴們可以參考一下2016-07-07C++?超詳細(xì)分析數(shù)據(jù)結(jié)構(gòu)中的時(shí)間復(fù)雜度
時(shí)間復(fù)雜度一般指時(shí)間復(fù)雜性。?在計(jì)算機(jī)科學(xué)中,時(shí)間復(fù)雜性,又稱時(shí)間復(fù)雜度,算法的時(shí)間復(fù)雜度是一個(gè)函數(shù),它定性描述該算法的運(yùn)行時(shí)間2022-03-03