日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单学C——第五天

發布時間:2023/11/30 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单学C——第五天 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

結構體

? 首先明確,結構體是一種構造的數據類型,是一種由多個數據類型如 int,char,double,數組或者結構體......組成的類型,現在告訴大家如何定義一個結構體。在定義int整型變量時,大家肯定都知道 int a; ??即定義了一個int 型變量,系統會自動分配 存int這么大的空間,但是對于結構體而言,它是由許多個不確定的類型組成的,所以在定義它的時候需要指明它是由哪些數據類型組成的.定義格式有多種,此處只說一種較為簡單的,定義格式如下.

struct 名字 {由哪些數據類型組成 };//注意末尾的分號一定要有

?

例如:我要定義一個學生,學生需要值得注意的屬性都有什么呢? 假設需要統計這名學生的 1學號,2姓名,3性別,4班級,5電話,6期末成績,此時為了簡潔且處理方便,就需要用到結構體

struct student //結構體名 {long long number,tel; // 學號和電話int score; //成績char name[20],sex[4],clas[20]; //姓名,性別和班級 };

如上,就成功定義了一個關于學生信息的結構體,下面實現具體的輸入輸出操作

#include<stdio.h> struct student {long long number,tel; // 學號和電話int score; //成績char name[20],sex[4],clas[20]; //姓名,性別和班級 };int main() {struct student tiantian; //聲明了一個名為tiantian的變量,聲明可以與定義同時進行//現在可以輸入scanf("%lld%s%s%s%lld%d",&tiantian.number,tiantian.name,tiantian.sex,tiantian.clas,&tiantian.tel,&tiantian.score);//輸出printf("%lld %s %s %s %lld %d",tiantian.number,tiantian.name,tiantian.sex,tiantian.clas,tiantian.tel,tiantian.score);return 0; }

運行結果:

?

或許在看了上面的之后,你會想,這也太麻煩了吧,我隨便定義6個獨立的變量,把它輸入再輸出出來,這樣效果是一樣的,而且代碼也會簡潔很多,不用在用每個變量時都再前面加上聲明結構體時聲明的變量。對于上面這個這樣想當然沒錯,不過我現在要說,請統計一下全班所有的人他們各自的 ?1學號,2姓名,3性別,4班級,5電話,6期末成績,這時就能體會到結構體的作用之大了,具體看下面的代碼。

?

#include<stdio.h> struct student //結構體名,定義 {long long number,tel; // 學號和電話int score; //成績char name[20],sex[4],clas[20]; //姓名,性別和班級 };int main() {//假設此班的學生低于100名,聲明了一個名為stu的數組變量,//數組中的每一個元素都可以存放下一個學生的六個信息struct student stu[100];int i;//輸入,,用循環,j假設有續名學生for(i=0;i<5;i++)scanf("%lld%s%s%s%lld%d",&stu[i].number,stu[i].name,stu[i].sex,stu[i].clas,&stu[i].tel,&stu[i].score);//輸出for(i=0;i<5;i++)printf("%lld %s %s %s %lld %d\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].clas,stu[i].tel,stu[i].score);return 0; }

運行結果:

?

觀察上面的結果,輸入了五組數據,按下回車,輸出存儲在數組中的結果,每個學生一行,每個學生的信息之間空一格。當數字較小的時候或許還看不出優勢,可是如果當記錄的學生數據達到上千組,無疑,用結構體記錄學生數據是較好的方案。

?

比如我要在上述結構體中再添加一個信息,學生的出生年月日,此時應該怎么做呢??

可以用到結構體的嵌套,在c語言中,許多的東西都是可以嵌套的。修改上述結構體的定義可得:

#include<stdio.h> struct date //表示日期的結構體 {int year,month,day; }; struct student //結構體名,定義 {long long number,tel; // 學號和電話int score; //成績char name[20],sex[4],clas[20]; //姓名,性別和班級struct date bri_day; //將上面的表達日期的結構體套到學生結構體中表達學生的出生年月日 }; int main() {struct student stu[100]; //聲明//內容 }

由上面的變化可以發現有一個問題,訪問年月日的時候怎么辦呢?當然也是層層訪問,如訪問學生的出生年,就應該是:stu[i].bri_day.year;另外可以看到我在主函數里面即main()

里面只申明了student結構體,并沒有聲明 date結構體,那么是不是就不用聲明date結構體呢?肯定不是的,注意..在student結構體的內部,我已經進行了date結構體的聲明,且聲明變量為bri_day.

當然,與結構體類似的類型還有共用體union和枚舉型enum,用法都大同小異,理解了結構體之后再看看他們就是小case了。

轉載于:https://www.cnblogs.com/stffer/p/4872960.html

總結

以上是生活随笔為你收集整理的简单学C——第五天的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。