欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言中結(jié)構(gòu)體和共用體實例教程

 更新時間:2021年06月30日 12:00:02   作者:Jasmine-Lily  
這篇文章主要給大家介紹了關(guān)于C語言中結(jié)構(gòu)體和共用體的相關(guān)資料,結(jié)構(gòu)體是一種自定義的復(fù)合數(shù)據(jù)類型,共用體也叫聯(lián)合體,使幾個不同類型的變量共占一段內(nèi)存(相互覆蓋),需要的朋友可以參考下

一、實驗?zāi)康?br />

  • 掌握結(jié)構(gòu)體類型變量的定義和使用;
  • 掌握結(jié)構(gòu)體類型數(shù)組的概念和應(yīng)用;
  • 掌握鏈表的概念,初步學(xué)會對鏈表進行操作;
  • 掌握共用體的概念與使用;
  • 掌握指向結(jié)構(gòu)體變量的指針。
  • 掌握指向結(jié)構(gòu)體數(shù)組的指針的應(yīng)用。

二、實驗內(nèi)容

編寫下列程序,然后上機調(diào)試運行。

  1. 對候選人得票的統(tǒng)計程序。設(shè)有3個候選人,每次輸入一個得票的候選人的名字,要求最后輸出各人得票結(jié)果。
  2. 編寫一個函數(shù)print,打印一個學(xué)生的成績數(shù)組,該數(shù)組中有5個學(xué)生的數(shù)據(jù)記錄,每個記錄包括num、name、score[3],用主函數(shù)輸入這些記錄,用print函數(shù)輸出這些記錄。
  3. 建立一個鏈表,每個結(jié)點包括:學(xué)號、姓名、性別、年齡。輸入一個年齡,如果鏈表中的結(jié)點所包含的年齡等于此年齡,則將此結(jié)點刪去。(選作)

三、實驗記錄

3.1 候選人選票統(tǒng)計

(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)輸入為#時,表示投票結(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)運行結(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)運行結(jié)果截圖

3.3 鏈表

(1)源代碼

# include <stdio.h>
# include <malloc.h>
//定義了一個鏈表節(jié)點的數(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é)點
	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)運行結(jié)果截圖

總結(jié)

到此這篇關(guān)于C語言中結(jié)構(gòu)體和共用體的文章就介紹到這了,更多相關(guān)C語言結(jié)構(gòu)體和共用體內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言鏈表案例學(xué)習(xí)之通訊錄的實現(xiàn)

    C語言鏈表案例學(xué)習(xí)之通訊錄的實現(xiàn)

    為了將所學(xué)到的鏈表的知識進行鞏固學(xué)習(xí),做到學(xué)以致用,本文將利用鏈表制作一個簡單的通訊錄。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-10-10
  • C++?STL容器與函數(shù)謂詞示例分析講解

    C++?STL容器與函數(shù)謂詞示例分析講解

    這篇文章主要介紹了C++?STL容器與函數(shù)謂詞示例,STL是“Standard?Template?Library”的縮寫,中文譯為“標(biāo)準模板庫”。STL是C++標(biāo)準庫的一部分,不用單獨安裝
    2022-11-11
  • C++如何獲取系統(tǒng)信息 C++獲取IP地址、硬件信息等

    C++如何獲取系統(tǒng)信息 C++獲取IP地址、硬件信息等

    這篇文章主要為大家詳細介紹了C++如何獲取系統(tǒng)信,C++獲取IP地址、硬件信息等,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • c++線程池實現(xiàn)方法

    c++線程池實現(xiàn)方法

    這篇文章主要介紹了c++線程池實現(xiàn)方法,實例分析了C++線程池的原理與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • 淺談C++STL之雙端隊列容器

    淺談C++STL之雙端隊列容器

    deque雙端隊列容器與vector很類似,采用線性表順序存儲結(jié)構(gòu)。但與vector區(qū)別,deque采用分塊的線性存儲結(jié)構(gòu)來存儲數(shù)據(jù),每塊的大小一般為512B,將之稱為deque塊,所有的deque塊使用一個map塊進行管理,每個map數(shù)據(jù)項記錄各個deque塊的首地址。
    2021-06-06
  • C++面試題之?dāng)?shù)a、b的值互換(不使用中間變量)

    C++面試題之?dāng)?shù)a、b的值互換(不使用中間變量)

    這篇文章主要介紹了不使用中間變量,C++實現(xiàn)數(shù)a、b的值互相轉(zhuǎn)換操作,感興趣的小伙伴們可以參考一下
    2016-07-07
  • C++?超詳細分析數(shù)據(jù)結(jié)構(gòu)中的時間復(fù)雜度

    C++?超詳細分析數(shù)據(jù)結(jié)構(gòu)中的時間復(fù)雜度

    時間復(fù)雜度一般指時間復(fù)雜性。?在計算機科學(xué)中,時間復(fù)雜性,又稱時間復(fù)雜度,算法的時間復(fù)雜度是一個函數(shù),它定性描述該算法的運行時間
    2022-03-03
  • 深入解析C++中的虛函數(shù)與多態(tài)

    深入解析C++中的虛函數(shù)與多態(tài)

    對C++ 了解的人都應(yīng)該知道虛函數(shù)(Virtual Function)是通過一張?zhí)摵瘮?shù)表(Virtual Table)和一個指向虛函數(shù)表的指針(vptr)來實現(xiàn)的
    2013-09-09
  • 一篇文章帶你了解論C語言中算法的重要性

    一篇文章帶你了解論C語言中算法的重要性

    最近一直在學(xué)數(shù)據(jù)結(jié)構(gòu)與算法,深深的感受到我們學(xué)習(xí)語言,永遠都只是一項工具,方法才是其中最重要的部分。這篇文章我將會通過幾個例子來說明算法,也就是寫程序的思路在程序中的重要意義
    2021-08-08
  • C++中的extern聲明變量詳解

    C++中的extern聲明變量詳解

    這篇文章主要介紹了C++中的extern聲明變量詳解,本文講解了聲明和定義、extern聲明全局變量、extern聲明函數(shù)等內(nèi)容,需要的朋友可以參考下
    2015-03-03

最新評論