1. 程式人生 > >第22節 C語言結構體之結構體巢狀、結構體指標與結構體陣列的程式碼實現

第22節 C語言結構體之結構體巢狀、結構體指標與結構體陣列的程式碼實現

結構體

#include <stdio.h>
//第一步
struct Student
{
	//學號
	int no;
	//姓名
	char name[20];
	//性別
	char sex[10];
	//成績
	double score;	
};


int main(void)
{
	//2.宣告結構體型別的變數
	struct Student rui = {2013001,”銳哥","男",98.5};
	//rui才分配了記憶體空間
	
	//如何取訪問結構體變數中的成員變數 "."
	
	//3.動態的賦值  變數.成會員變數名;
	printf("請輸入學生學號:如 2013001\n");
	scanf(“%d”,&rui.no);
	printf("請輸入學生姓名:如 銳哥\n");
	scanf("%s",rui.name);
	printf("請輸入學生性別:如 男\n");
	scanf("%s",rui.sex);
	printf("請輸入學生成績:如 98.5\n");
	scanf("%lf",&rui.score);
	
	//輸出
	printf("----------輸出---------\n");
	printf("學號:%d\n”,rui.no);
	printf("姓名:%s\n”,rui.name);
	printf("性別:%s\n”,rui.sex);
	printf("成績:%.2lf\n",rui.score);

	return 0;
}


結構體巢狀

#include <stdio.h>
//結構體的巢狀
//結構體型別的變數做另一個結構體的成員變數
struct Birthday
{
   int y;
   int m;
   int d;	
};

struct Student
{
  int no;
  char name[20];
  int age;//年齡
  struct Birthday birth;//生日
};

int main(void)
{
	struct Student rui = {1306001,"銳哥",22,
	{1990,1,1}};
	
	printf("學號:%d\n",rui.no);
	printf("%d年 -%d月 -%d日\n",rui.birth.y 
                  ,rui.birth.m,
	           rui.birth.d);
	
	
	return 0;
}


結構體陣列

#include <stdio.h>
//要有一個結構體型別
struct Student
{
   int no;
   char name[20];	
};//沒寫分號



int main(void)
{
	//2.宣告一個結構體陣列
	struct Student stu[5] = {0};
	//就能夠儲存5個學員的資訊
	//迴圈給結構體陣列中得資料賦值
	for(int i=0;i<5;i++)
	{
		printf("學生的學號:\n");
		scanf("%d",&stu[i].no);
		printf("學生的姓名:\n");
		scanf("%s",stu[i].name);
	}
	//取值  遍歷結構體陣列
	printf("--------輸出--------\n");
	for(int j=0;j<5;j++)
	{
		printf("學生的學號:");
		printf("%d\n",stu[j].no);
		printf("學生的姓名:");
		printf("%s\n",stu[j].name);
	}
	
	
	return 0;
}

結構體指標

#include <stdio.h>
//第一步

struct Student
{
	//學號
	int no;
	//姓名
	char name[20];
	//性別
	char sex[10];
	//成績
	double score;	
};//不要丟分號


int main(void)
{
	//2.宣告結構體型別的變數
	struct Student rui = {2013001,”銳哥","男",98.5};
	//rui才分配了記憶體空間
	
	//如何取訪問結構體變數中的成員變數 "."
	//結構體型別的指標變數 指向 結構體變數
	struct Student * point = &rui;
	
	//3.動態的賦值  變數.成會員變數名;
	printf("請輸入學生學號:如 2013001\n");
	scanf("%d",&point->no);
	printf("請輸入學生姓名:如 銳哥\n");
	scanf("%s",point->name);
	printf("請輸入學生性別:如 男\n");
	scanf("%s",point->sex);
	printf("請輸入學生成績:如 98.5\n");
	scanf("%lf",&point->score);
	
	//輸出
	printf("----------輸出---------\n");
	printf("學號:%d\n",point->no);
	printf("姓名:%s\n",point->name);
	printf("性別:%s\n",point->sex);
	printf("成績:%.2lf\n",point->score);
	
	
	return 0;
}

相關推薦

22 C語言結構結構結構指標結構陣列程式碼實現

結構體 #include <stdio.h> //第一步 struct Student { //學號 int no; //姓名 char name[20]; //性別 char

C語言中三種迴圈的和比較

1、迴圈的巢狀 一個迴圈體內又包含另一個完整的迴圈結構,稱為迴圈的巢狀。內嵌的迴圈中還可以巢狀迴圈,這就是多層迴圈。各種語言中關於迴圈的巢狀的概念都是一樣的。   C語言中3種迴圈(while迴圈、do…while迴圈和for迴圈)可以互相巢狀。例如,下面幾種都是合法的形式: (1)wh

C語言簡單入門結構和連結串列

C語言的連結串列也是一個很重要很難啃的骨頭,我是這麼覺得的! 以下只是個人對連結串列的總結和記錄方便日後複習所用,如有錯誤,請留言狠批,謝謝! 先說下連結串列的簡單實現:  如上圖,我們定義一個結構體: 1,2,3,4,5是結構體資料。a,b,c,d,e則是指標變

C語言知識點學習結構成員變數後加冒號

typedef struct xx {        unsigned int a:2;      unsigned int b:3; }Xx; //“unsigned int a:2;“中後面的":2"表示成員a只佔倆個位,而不是我們傳統認為的佔 //4個位元組這樣整個結構體大小就為4個位元組而不是8

c# 9 數據類型值類型

font post http 浮點 style 數據類型 clas 現象 什麽 本節內容: 1:數據類型是什麽 1:數據類型是什麽 2:數據類型--值類型 3:值類型和引用類型的區分 畫圖現象: 3:值類型的種類

c# 9 數據類型引用類型

類型 數據 分享 bubuko 賦值 OS http pos 字符 本節內容: 1:數據類型之引用類型 2:字符串要註意的兩點: 1:數據類型之引用類型 實例: 2:字符串要註意的兩點: 對變量進行重新賦值:其原本的字符串並沒有銷毀

c語言——線性表順序結構

#include <stdio.h> #include <stdlib.h> #include <conio.h> //線性表——順序儲存 #define LIST_INIT_SIZE 10 #define LISTINCREMENT 10 #define ERR

三講 微控制器C語言12864液晶顯示

上一講我們探索了12864的文字模式,這一講我們來看看繪圖模式。上一講中我們給出了繪圖模式的點陣圖(見下圖),是由512組每組16個點構成的點陣。螢幕分為上下兩半,其中每一半佔256組;上半部分X軸方向(0-7),Y軸方向(0-31);下半部分X軸方向(8-15),Y軸方向

C語言:Struct結構陣列以及結構

一、結構陣列為什麼要使用結構陣列?舉個例子來說,假如我們定義了一個結構體book,顯然每一本書都可以用一個book型別的結構體來描述。要描述兩本書就需要用兩個這樣的結構變數,以此類推,如果我們要處理10本,100本,1000本...我們難道要一個一個定義嗎?我們想到陣列這種資

資料結構C語言)學習路(1)——緒論

小白學習資料結構,從基礎知識開始整理起。 1.資料結構是什麼? 2.資料結構在哪裡用? 3.資料結構怎麼用? 小白在開始學習資料結構,提出了這三個問題,希望到學習完成之後可以解決這三個問題。 小白從《大話資料結構》這本書開始學習。 基本概念: 資

《PTA——C語言原始碼》1008題

題目介紹 一個數組A中存有N(N&gt0)個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向右移M(M>=0)個位置,即將A中的資料由(A~0~ A~1~……A~N-1~)變換為(A~N-M~ …… A~N-1~ A~0~ A~1~……A

C語言程式設計入門--三章編寫一個C語言程式

    導讀:一般學一門計算機語言的第一堂上機課(“上機”顧名思義,上計算機,機你太美),就是往螢幕輸出“hello world”,本章也不例外。   1.1 Hello,World!   這一節和讀者一起來編寫第一段C語言程式,過程

C語言程式設計入門--四章C語言基本資料型別

    導讀:C語言程式中經常涉及一些數學計算,所以要熟悉其基本的資料型別。資料型別學習起來比較枯燥,不過結合之前的記憶體概念,以及本節的位元組概念,相信資料型別也就不難理解了。本章從二進位制的基本概念開始,然後介紹機器語言通用的計算單位位元組,最後再介紹C語言中基本的資料型別及其基本概念。 &

C語言程式設計入門--五章C語言基本運算和表示式-part1

  導讀:程式要完成高階功能,首先要能夠做到基本的加減乘除。本章從程式中變數的概念開始,結合之前學的輸出函式和新介紹的輸入函式製作簡單人機互動程式,然後講解最基礎的加減法運算,自制簡單計算器程式練手。    5.1 變數 5.1.1 變數宣告定義與賦值表示式   上一章講了資料型別,資料型別要和變數結合在一起

C語言程式設計入門--五章C語言基本運算和表示式-part2

5.1.4 再來一個C庫函式getchar吸收回車鍵   回車鍵也是一個字元,在使用scanf的時候,輸入完畢要按下回車鍵,這時候回車鍵也會被輸入到stdin流中,會搞亂我們的程式。   注意:stdin是輸入流,stdout是輸出流,這兩個流就是在記憶體中流進流出的資料,根據流向不同命名也不同。   比如以

C語言程式設計入門--五章C語言基本運算和表示式-part3

5.3  挑幾個運算子來講     常用的運算子除了加減乘除(+-*/)外,還有如下:   注意:以下運算子之間用逗號隔開,C語言中也有逗號運算子,這裡不講逗號運算子。  1. 賦值運算子 =,+=,*=   2. 一元運算子 +

C語言數組冒泡排序+折半查找法(二分查找)

不存在 次數 存在 是否 .com int count 結束 如果 冒泡排序算法 1 int num[5]; 2 int i; 3 //循環接收用戶輸入的元素 4 for(i=0;i<5;i++){ 5 pr

C語言的陷阱typedef

c語言的陷阱之typedeftypedef是一個關鍵字,可以重命名一些數據類型也可以重定義一些新的數據類型。我們從以下幾個角度去理解typedef。1.typedef和普通數據類型類型typedef int MYINT;int a = 10; MYINT B = 20;123123我們給int重命名成MYIN

C++語言筆記系列十八——虛函數(1)

自己 語言 數據類型 說明 出現 adium 重定義 angle rac 1.C++中的多態 (1)多態性:同一個函數的調用能夠進行不同的操作,函數重載是實現多態的一種手段。 (2)聯編:在編譯階段進行聯接。即是在編譯階段將一個函數的調用點和函數

C++語言筆記系列二十——模版

輸出 類模板 pos 有一個 class 初始 個數 創建對象 example 1.隨意輸入兩個數x和y,輸出最大值max。 int max(int x, int y) {return x>y?x:y;} 2.函數模版 (1)用一種或者多