結構體的輸入輸出與一般的一樣,但是不能整體對結構體進行輸入輸出,只能對其成員分個輸入輸出,比如結構體struct
創新互聯公司的客戶來自各行各業,為了共同目標,我們在工作上密切配合,從創業型小企業到企事業單位,感謝他們對我們的要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業領域包括做網站、成都網站建設、電商網站開發、微信營銷、系統平臺開發。
student{
int
number;
char
name[20]}..................輸入學號可以用scanf("%d",number);輸入姓名scanf("%s",name);........................當然,你也可以使用gets();之類的,只要記住對其成員輸入輸出就行,純手打,滿意請采納,謝謝O(∩_∩)O~
#?includestdio.h
#?includemalloc.h
struct?stu????//結構體
{
int?age;
float?score;
char?name[100];
};
void?shuru?(int?len,?stu?*?pArr)??
{
int?i;
for(i?=?0;?ilen;?i++)
{
printf("請輸入第%d個學生的信息\n",i+1);
printf("name?=?");
scanf("%s",pArr[i].name);
printf("age?=?");
scanf("%d",?pArr[i].age);
printf("score?=?");
scanf("%f",?pArr[i].score);
}
return;
}?
int?main(void)
{
int?len?,i;
struct?stu?*?pArr,t;
printf("請輸入學生的個數:\n");
printf("人數=?");
scanf("%d",len);
pArr?=?(struct?stu?*)malloc(len?*?sizeof(struct?stu));??
shuru(len,?pArr);
for(i=0;?ilen;?i++)
{
if(pArr[i].score??pArr[i+1].score)
{
t?=?pArr[i+1];
pArr[i+1]?=?pArr[i];
pArr[i]?=?t;
}
}
i?=0;
printf("\n\n排序后的學生信息為\n\n");
for(i=0;?ilen;?i++)
{
printf("name?=?%s\n",pArr[i].name);
printf("age?=?%d\n",pArr[i].age);
printf("score?=?%f\n",pArr[i].score);
printf("\n\n");
}
return?0;
}
這樣就行了,你的排序還沒實現, 仿照輸入的函數實現就OK
#includestdio.h
struct student //結構體在函數外部定義
{
int num;
char Class[20];
char name[40];
float music;
float art;
float math;
};
void in(struct student stu[],int n); //函數聲明在函數外部,主函數向子函數傳遞stu、n,才能在子函數中使用stu、n
void ave(struct student stu); //函數聲明在函數外部,求平均數程序整體有些錯誤,我給改了
void main()
{
struct student stu[100]; //已經定義好的結構體全名是struct +你定義的名字,鑒于內存有限,100的長度已經夠用了
int n,i;
printf("輸入人數\t"); //增強互動性
while(scanf("%d",n)!=0)
{
in(stu,n);
for(i=0;in;i++)
{
printf("%s ",stu[i].name);
ave(stu[i]);
}
}
}
void in(struct student stu[],int n)
{
int i;
printf("輸入信息(學號,班級,姓名,音樂成績,藝術成績,數學成績)\n"); //增強互動性
for(i=0;in;i++)
{
scanf("%d %s %s %f %f %f",stu[i].num,stu[i].Class,stu[i].name,stu[i].math,stu[i].music,stu[i].art);
}
}
void ave(struct student stu)
{
float average;
average=(stu.music+stu.math+stu.art)/3.000;
printf("%5.lf\n",average);
}
1、結構體,函數聲明都在主函數外;
2、被調函數使用主調函數需要傳值;
3、結構體名為struct +定義名;
4、程序注意互動性。
C
語言中,結構體(struct)是一種數據結構,是C語言中聚合數據類型(aggregate data type)的一類。結構體可以被聲明為變量、指針或數組等,用以實現較復雜的數據結構。
結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。
定義與聲明
結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標志,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體聲明的變量。
在實際應用中,C語言結構體數組常被用來表示一個擁有相同數據結構的群體,比如一個班的學生、一個車間的職工等。
在C語言中,定義結構體數組和定義結構體變量的方式類似;
例:
struct stu{
char*name;//姓名
int num;//學號
int age;//年齡
char group;//所在小組
float score;//成績
}class[5];
表示一個班級有5個學生。
擴展資料:
結構體數組的引用與引用一個結構體變量在原理上是一樣的。只不過結構體數組中有多個結構體變量,我們只需利用for循環一個一個地使用結構體數組中的元素。
下面編寫一個程序,編程要求:從鍵盤輸入5個學生的基本信息,如姓名、年齡、性別、學號,然后將學號最大的學生的基本信息輸出到屏幕。
#includelt;stdio.hgt;
#includelt;string.hgt;
struct STU
{
char name[20];
int age;
char sex;
char num[20];
};
void OutputSTU(struct STU stu[5]);
//函數聲明,該函數的功能是輸出學號最大的學生信息
int main(void)
{
int i;
struct STU stu[5];
for(i=0;ilt;5;++i)
{
printf("請輸入第%d個學生的信息:",i+1);
scanf("%s%d%c%s",
stult;igt;.name,
stult;igt;
.age,stult;igt;
.sex,stult;
igt;.num);/*%c
前面要加空格,不然輸入時會將空格賦給%c*/
}
OutputSTU(stu);
return 0;
}
void OutputSTU(struct STU stu[5])
{
struct STU stumax=stu[0];
int j;
for(j=1;jlt;5;++j)
{
if(strcmp(stumax.num,stu[j]
.num)lt;0)//strcmp函數的使用
{
stumax=stu[j];
}
}
printf("學生姓名:%s學生年齡:%d學生性別:%c學生學號:
%s\n",stumax.name,
stumax.age,stumax.
sex,stumax.num);
}
輸出結果是:
請輸入第1個學生的信息:小紅22 F Z1207031
請輸入第2個學生的信息:小明21 M Z1207035
請輸入第3個學生的信息:小七23 F Z1207022
請輸入第4個學生的信息:小欣20 F Z1207015
請輸入第5個學生的信息:小天19 M Z1207024
學生姓名:小明學生年齡:21學生性別:M學生學號:Z1207035
參考資料:
百度百科——結構體
分享名稱:c語言結構體輸入用函數,c語言函數調用結構體
本文來源:http://m.newbst.com/article24/dssiice.html
成都網站建設公司_創新互聯,為您提供網站策劃、Google、響應式網站、網站改版、定制開發、網站設計公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯