国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言自定義數(shù)據(jù)類型(二)使用結(jié)構(gòu)體數(shù)組

這篇具有很好參考價值的文章主要介紹了C語言自定義數(shù)據(jù)類型(二)使用結(jié)構(gòu)體數(shù)組。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一個結(jié)構(gòu)體變量中可以存放一組有關(guān)聯(lián)的數(shù)據(jù)(如一個學(xué)生的學(xué)號、姓名、成績等數(shù)據(jù))。如果有 10 個學(xué)生的數(shù)據(jù)需要參加運(yùn)算,顯然應(yīng)該用數(shù)組,這就是結(jié)構(gòu)體數(shù)組。結(jié)構(gòu)體數(shù)組與以前介紹過的數(shù)值型數(shù)組的不同之處在于每個數(shù)組元素都是一個結(jié)構(gòu)體類型的數(shù)據(jù),它們都分別包括各個成員項(xiàng)。

目錄

一、定義結(jié)構(gòu)體數(shù)組

1.1舉例說明

1.2定義

二、結(jié)構(gòu)體數(shù)組的應(yīng)用舉例


一、定義結(jié)構(gòu)體數(shù)組

1.1舉例說明

下面舉一個簡單的例子來說明怎樣定義和引用結(jié)構(gòu)體數(shù)組。

舉例:有 3 個候選人,每個選民只能投票選一人,要求編一個統(tǒng)計(jì)選票的程序,先后輸入被選人的名字,最后輸出各人得票結(jié)果。

解題思路:顯然,需要設(shè)一個結(jié)構(gòu)體數(shù)組,數(shù)組中包含 3 個元素,每個元素中的信息應(yīng)包括候選人的姓名(字符型)和得票數(shù)(整型)。輸入被選人的姓名,然后與數(shù)組元素中的 “ 姓名 ” 成員比較,如果相同,就給這個元素中的 “ 得票數(shù) ” 成員的值加 1。最后輸出所有元素的信息。

#include<stdio.h>
#include<string.h>
struct Person		//聲明結(jié)構(gòu)體類型
{
	char name[20];
	int count;
};

int main()
{
	struct Person leader[3] = { "zhang",0,"wang",0,"liu",0 };	//初始化結(jié)構(gòu)體變量
	char leader_name[20];
	for (int i = 0; i < 10; i++)
	{
		scanf_s("%s", leader_name, 20);		//輸入所選候選人姓名
		for (int j = 0; j < 3; j++)
		{
			if (strcmp(leader_name, leader[j].name) == 0)
				leader[j].count++;
		}
	}
	printf("結(jié)果是:\n");
	for (int j = 0; j < 3; j++)
	{
		printf("%5s:%d\n", leader[j].name, leader[j].count);
	}
	return 0;
}

運(yùn)行結(jié)果:

結(jié)構(gòu)體數(shù)組定義和使用,C語言,c語言,c++,數(shù)據(jù)結(jié)構(gòu),算法,結(jié)構(gòu)體數(shù)組

程序分析:

定義一個全局的結(jié)構(gòu)體數(shù)組 leader,它有 3 個元素,每一個元素包含兩個成員 name(姓名)和 count(票數(shù))。在定義數(shù)組時使之初始化,將 " Li " 賦給 leader[0].name,0 賦給 leader[0].count," Zhang "賦給 leader[1].name,0 賦給 leader[1].count," Sun " 賦給 leader[2].name,0 賦給 leader[2].count。這樣,3 位候選人的票數(shù)全部先置零。

在主函數(shù)中定義字符數(shù)組 leader_name,用它存放被選人的姓名。在每次循環(huán)中輸入一個被選人姓名,然后把它與結(jié)構(gòu)體數(shù)組中 3 個候選人姓名相比,看它和哪一個候選人的名字相同。注意leader_name 是和 leader 數(shù)組第 j 個元素的 name 成員相比。若 j 為某一值時,輸入的姓名與 leader[j].name 相等,就執(zhí)行 “ leader[j].count++”,由于成員運(yùn)算符 “.” 優(yōu)先于自增運(yùn)算符 “++”,因此它相當(dāng)于(leader[j].count)++,使 leader[j] 成員 count 的值加 1。在輸入和統(tǒng)計(jì)結(jié)束之后,將 3 人的名字和得票數(shù)輸出。

1.2定義

(1)定義結(jié)構(gòu)體數(shù)組一般形式是

struct 結(jié)構(gòu)體名
{

????????成員表列

} 數(shù)組名[數(shù)組長度];

先聲明一個結(jié)構(gòu)體類型(如 struct Person),然后再用此類型定義結(jié)構(gòu)體數(shù)組:

結(jié)構(gòu)體類型 數(shù)組名[數(shù)組長度];

如:

struct Person leader[3];????????//leader是結(jié)構(gòu)體數(shù)組名

(2)對結(jié)構(gòu)體數(shù)組初始化的形式是在定義數(shù)組的后面加上:

= {初值表列};

如:

struct Person leader[3] = {"zhang", 0, "wang", 0, "liu", 0};

二、結(jié)構(gòu)體數(shù)組的應(yīng)用舉例

舉例:有 n 個學(xué)生的信息(包括學(xué)號、姓名、成績),要求按照成績的高低順序輸出各學(xué)生的信息。

解題思路:用結(jié)構(gòu)體數(shù)組存放 n 個學(xué)生信息,采用選擇法對各元素進(jìn)行排序(進(jìn)行比較的是各元素中的成績)。

#include<stdio.h>
struct Student		//聲明結(jié)構(gòu)體類型
{
	int num;
	char name[20];
	float score;
};

int main()
{
	const int n = 5;		//定義常變量
	struct Student stu[n] = { 1001,"wang",88,1002,"li",85,1003,"liu",98,1004,"zhao",95,1005,"wu",87 };
	for (int i = 0; i < n - 1; i++)		//選擇排序
	{
		int k = i;
		for (int j = i + 1; j < n; j++)
		{
			if (stu[j].score > stu[k].score)
				k = j;
		}
		if (k != i)		//stu[k]和stu[i]互換
		{
			Student temp;
			temp = stu[i];
			stu[i] = stu[k];
			stu[k] = temp;
		}
	}
	printf("排序?yàn)椋篭n");
	for (int i = 0; i < n; i++)
	{
		printf("%6d %8s %6.2f\n", stu[i].num, stu[i].name, stu[i].score);
	}
}

運(yùn)行結(jié)果:?

結(jié)構(gòu)體數(shù)組定義和使用,C語言,c語言,c++,數(shù)據(jù)結(jié)構(gòu),算法,結(jié)構(gòu)體數(shù)組

程序分析:

(1)程序中第 11 行定義了常變量 n,在程序運(yùn)行期間它的值不能改變。如果學(xué)生數(shù)改為 30 人,只須把第 11 行改為即可。

也可以不用常變量,而用符號常量,可以取消第 11 行,同時在第 2 行前加一行:

# define N 5

(2)在定義結(jié)構(gòu)體數(shù)組時進(jìn)行初始化,為清晰起見,將每個學(xué)生的信息用一對花括號包起來,這樣做,閱讀和檢查比較方便,尤其當(dāng)數(shù)據(jù)量多時,這樣是有好處的。

(3)在執(zhí)行第 1 次外循環(huán)時i的值為0,經(jīng)過比較找出 5 個成績中最高成績所在的元素的序號為 k,然后將 stu[k] 與 stu[i] 對換(對換時借助臨時變量temp)。執(zhí)行第 2 次外循環(huán)時i的值為 1,參加比較的只有 4 個成績了,然后將這 4 個成績中最高的所在的元素與 stu[1] 對換。其余類推。注意臨時變量 temp 也應(yīng)定義為 struct Student 類型,只有同類型的結(jié)構(gòu)體變量才能互相賦值。程序 21 行是將 stu[k] 元素中所有成員和 stu[i] 元素中所有成員整體互換(而不必人為地指定一個一個成員地互換)。從這點(diǎn)也可以看到使用結(jié)構(gòu)體類型的好處。文章來源地址http://www.zghlxwxcb.cn/news/detail-804691.html

到了這里,關(guān)于C語言自定義數(shù)據(jù)類型(二)使用結(jié)構(gòu)體數(shù)組的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 結(jié)構(gòu)體和數(shù)據(jù)結(jié)構(gòu)--從基本數(shù)據(jù)類型到抽象數(shù)據(jù)類型、結(jié)構(gòu)體的定義

    結(jié)構(gòu)體和數(shù)據(jù)結(jié)構(gòu)--從基本數(shù)據(jù)類型到抽象數(shù)據(jù)類型、結(jié)構(gòu)體的定義

    ? ? ? ? 在馮-諾依曼體系結(jié)構(gòu)中,程序代碼和數(shù)據(jù)都是以二進(jìn)制存儲的,因此對計(jì)算機(jī)系統(tǒng)和硬件本身而言,數(shù)據(jù)類型的概念其實(shí)是不存在的。 ? ? ? ? 在高級語言中,為了有效的組織數(shù)據(jù),規(guī)范數(shù)據(jù)的使用,提高程序的可讀性,方便用戶使用,引入了整型、實(shí)型等基本數(shù)

    2024年02月11日
    瀏覽(23)
  • 使用純C語言定義通用型數(shù)據(jù)結(jié)構(gòu)的方法和示例

    使用純C語言定義通用型數(shù)據(jù)結(jié)構(gòu)的方法和示例

    最近一段時間在復(fù)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法,用的C語言,不得不說,不學(xué)個高級語言再回頭看C語言根本不知道C語言的強(qiáng)大和完美,不過相比之下也有許多不便利的地方,尤其是以下兩個方面: 沒有異常處理機(jī)制 沒有泛型 其中第一方面之前就解決了,詳情請看在C語言中實(shí)現(xiàn)類似面

    2024年02月09日
    瀏覽(26)
  • 數(shù)據(jù)結(jié)構(gòu)之線性表的類型運(yùn)用Linear Lists: 數(shù)組,棧,隊(duì)列,鏈表

    定義 一個最簡單,最基本的數(shù)據(jù)結(jié)構(gòu)。一個線性表由多個相同類型的元素穿在一次,并且每一個元素都一個前驅(qū)(前一個元素)和后繼(后一個元素)。 線性表的類型 常見的類型:數(shù)組、棧、隊(duì)列、鏈表 這些不同數(shù)據(jù)結(jié)構(gòu)的特性可以解決不同種類的問題 題面 題目描述 有

    2024年02月12日
    瀏覽(26)
  • python常見的數(shù)據(jù)類型與數(shù)據(jù)結(jié)構(gòu)(一)數(shù)字類型 字符串類型 布爾類型 列表 集合 字典 的定義與常規(guī)操作方法

    數(shù)字類型有int(整數(shù)),float(浮點(diǎn)數(shù))和complex(復(fù)數(shù)型),其中int與float被大家所常用并且可以使用int()和float()函數(shù)相互轉(zhuǎn)換。如果字符串只包含數(shù)字和小數(shù)點(diǎn)也可以被這兩種函數(shù)強(qiáng)制轉(zhuǎn)換。復(fù)數(shù)型,則少被人們使用,大都是用在數(shù)學(xué)公式和物理公式的計(jì)算上。 字符串類型較為簡單

    2024年02月21日
    瀏覽(31)
  • C語言數(shù)據(jù)結(jié)構(gòu)一:動態(tài)數(shù)組

    先說一個概念:數(shù)組是一段 連續(xù) 的內(nèi)存空間。存儲相同的數(shù)據(jù)類型。 數(shù)組的兩個關(guān)鍵點(diǎn): 連續(xù)內(nèi)存; 相同類型。 首先連續(xù)內(nèi)存:所以為了找到動態(tài)數(shù)組我們必須找到一個 首元素 地址。(內(nèi)存 首地址 。) 如果不知道首地址,那無法找到并操作內(nèi)存空間。 知道首地址了,

    2024年02月06日
    瀏覽(26)
  • 【C語言 數(shù)據(jù)結(jié)構(gòu)】數(shù)組與對稱矩陣的壓縮存儲

    【C語言 數(shù)據(jù)結(jié)構(gòu)】數(shù)組與對稱矩陣的壓縮存儲

    提到數(shù)組,大家首先會想到的是:很多編程語言中都提供有數(shù)組這種數(shù)據(jù)類型,比如 C/C++、Java、Go、C# 等。但本節(jié)我要講解的不是作為數(shù)據(jù)類型的數(shù)組,而是數(shù)據(jù)結(jié)構(gòu)中提供的一種叫數(shù)組的存儲結(jié)構(gòu)。 和線性存儲結(jié)構(gòu)相比,數(shù)組最大的不同是:它存儲的數(shù)據(jù)可以包含多種“一

    2024年02月04日
    瀏覽(26)
  • 頭歌(C語言)-數(shù)據(jù)結(jié)構(gòu)與算法-數(shù)組(共7關(guān))

    任務(wù)描述 本關(guān)任務(wù):將十個數(shù)進(jìn)行從大到小的順序進(jìn)行排列。 相關(guān)知識(略) 編程要求 根據(jù)提示,在右側(cè)編輯器 Begin-End 處補(bǔ)充代碼。 輸入 輸入十個整數(shù)。 輸出 以從大到小的順序輸出這個十個數(shù)。 測試說明 樣例輸入: 1 2 3 4 5 6 7 8 9 10 樣例輸出: 10 9 8 7 6 5 4 3 2 1 代碼:

    2024年02月11日
    瀏覽(31)
  • 數(shù)據(jù)結(jié)構(gòu)與算法教程,數(shù)據(jù)結(jié)構(gòu)C語言版教程?。ǖ谖宀糠?、數(shù)組和廣義表詳解)三

    數(shù)據(jù)結(jié)構(gòu)與算法教程,數(shù)據(jù)結(jié)構(gòu)C語言版教程?。ǖ谖宀糠?、數(shù)組和廣義表詳解)三

    數(shù)組和廣義表,都用于存儲邏輯關(guān)系為“一對一”的數(shù)據(jù)。 數(shù)組存儲結(jié)構(gòu),99% 的編程語言都包含的存儲結(jié)構(gòu),用于存儲不可再分的單一數(shù)據(jù);而廣義表不同,它還可以存儲子廣義表。 本章重點(diǎn)從矩陣的角度討論二維數(shù)組的存儲,同時講解廣義表的存儲結(jié)構(gòu)以及有關(guān)其廣度和

    2024年01月21日
    瀏覽(29)
  • 數(shù)據(jù)結(jié)構(gòu)與算法教程,數(shù)據(jù)結(jié)構(gòu)C語言版教程?。ǖ谖宀糠?、數(shù)組和廣義表詳解)五

    數(shù)據(jù)結(jié)構(gòu)與算法教程,數(shù)據(jù)結(jié)構(gòu)C語言版教程?。ǖ谖宀糠帧?shù)組和廣義表詳解)五

    數(shù)組和廣義表,都用于存儲邏輯關(guān)系為“一對一”的數(shù)據(jù)。 數(shù)組存儲結(jié)構(gòu),99% 的編程語言都包含的存儲結(jié)構(gòu),用于存儲不可再分的單一數(shù)據(jù);而廣義表不同,它還可以存儲子廣義表。 本章重點(diǎn)從矩陣的角度討論二維數(shù)組的存儲,同時講解廣義表的存儲結(jié)構(gòu)以及有關(guān)其廣度和

    2024年01月23日
    瀏覽(26)
  • 【C語言】結(jié)構(gòu)體類型的定義與使用

    目錄 一、結(jié)構(gòu)體 二、結(jié)構(gòu)體的定義 1.最基本的定義 2.有 typedef 的定義 3.定義即對象方式 4.定義即對象指針方式(涉及指針就會稍微復(fù)雜一點(diǎn)) 5. typedef結(jié)構(gòu)體和結(jié)構(gòu)體指針方式 三、結(jié)構(gòu)體的使用 ? ? ? ? 結(jié)構(gòu)體是用戶自定義的一種類型,這種類型里面可以聲明不同的數(shù)據(jù)類

    2024年02月12日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包