#includestdio.h
公司主營業(yè)務(wù):網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出石臺(tái)免費(fèi)做網(wǎng)站回饋大家。
struct student //結(jié)構(gòu)體在函數(shù)外部定義
{
int num;
char Class[20];
char name[40];
float music;
float art;
float math;
};
void in(struct student stu[],int n); //函數(shù)聲明在函數(shù)外部,主函數(shù)向子函數(shù)傳遞stu、n,才能在子函數(shù)中使用stu、n
void ave(struct student stu); //函數(shù)聲明在函數(shù)外部,求平均數(shù)程序整體有些錯(cuò)誤,我給改了
void main()
{
struct student stu[100]; //已經(jīng)定義好的結(jié)構(gòu)體全名是struct +你定義的名字,鑒于內(nèi)存有限,100的長度已經(jīng)夠用了
int n,i;
printf("輸入人數(shù)\t"); //增強(qiáng)互動(dòng)性
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("輸入信息(學(xué)號(hào),班級(jí),姓名,音樂成績,藝術(shù)成績,數(shù)學(xué)成績)\n"); //增強(qiáng)互動(dòng)性
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、結(jié)構(gòu)體,函數(shù)聲明都在主函數(shù)外;
2、被調(diào)函數(shù)使用主調(diào)函數(shù)需要傳值;
3、結(jié)構(gòu)體名為struct +定義名;
4、程序注意互動(dòng)性。
可以的,不過傳入的是改結(jié)構(gòu)體的一個(gè)副本
如果需要在函數(shù)中更改結(jié)構(gòu)體內(nèi)容,可以把這個(gè)結(jié)構(gòu)體的指針作為參數(shù)傳入函數(shù),返回的也是該結(jié)構(gòu)體的指針
#include?stdio.h
#include?stdlib.h
#define?LINE_MAX?80
struct?body{
char?data[100];?//要定義成數(shù)組才可以,不然,還要去分配內(nèi)存
int?num;
};
void?create(struct?body?*bd);?//結(jié)構(gòu)體定義后,才能使用結(jié)構(gòu)體類型,所以,移動(dòng)到定義之后
int?main(int?argc,?char?*argv[])?{
int?choose;
struct?body?*bd;
bd?=?(struct?body*)malloc(sizeof(struct?body));
while(1)
{
printf("????????*******************歡迎來到文章編輯系統(tǒng)********************\n");
printf("1.???創(chuàng)建新文本\n");
printf("2.???統(tǒng)計(jì)文本\n");
printf("5.???退出系統(tǒng)\n");
printf("請(qǐng)選擇你需要的功能的序號(hào):");
scanf("%d",choose);
switch(choose)
{
case?1:
printf("創(chuàng)建新文本\n");
create(bd);
continue;
case?2:
printf("統(tǒng)計(jì)文本\n");
continue;
case?5:
printf("謝謝您的使用!\n");
break;
default:
printf("請(qǐng)正確輸入!\n");
continue;
}
if(choose?==?5)
break;
}
return?0;
}
void?create(struct?body?*bd)
{
printf("編輯文本,Enter鍵保存\n");
scanf("%s",bd-data);//結(jié)構(gòu)體指針引用成員用-,??同時(shí),格式串應(yīng)該是%s
printf("您輸入的文本是:%s\n",bd-data);?//同上
}
1.可以把結(jié)構(gòu)體作為參數(shù)啊,
2.不去取地址的意思,是引用的意思,函數(shù)執(zhí)行時(shí)修改L的值,就直接的修改了實(shí)參的值,相當(dāng)于地址傳遞了。
3.真正調(diào)用的時(shí),如下:
SqList
tempStruct;
InitList_Sq(tempStruct)
這樣就可以了。
呵呵