十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
可以在外部定義結(jié)構(gòu)體類型,然后在主函數(shù)內(nèi)部定義該類型的變量。在輸入輸出函數(shù)調(diào)用時,以結(jié)構(gòu)體變量指針做為參數(shù)傳遞。
三水ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
參考代碼如下:
#include?stdio.h
struct?test
{
int?a;
};//定義結(jié)構(gòu)體類型struct?test。
void?input(struct?test*?p)//輸入函數(shù),以指針作為參數(shù)。
{
scanf("%d",p-a);
}
void?output(struct?test?*p)//輸出函數(shù),以指針作為參數(shù)。這里也可以以結(jié)構(gòu)體變量作為參數(shù),不過用指針效率更高。
{
printf("%d\n",?p-a);
}
int?main()
{
struct?test?v;//定義結(jié)構(gòu)體變量v。
input(v);//輸入。
output(v);//輸出。
return?0;
}
#include?stdio.h??
struct?complex??
{??
int?re;??
int?im;??
};??
void?add(struct?complex?a,?struct?complex??b,?struct?complex?*c)
{
c-re=a.re+b.re;
c-im=a.im+b.im;
}
void?minus(struct?complex?a,?struct?complex??b,?struct?complex?*c)
{
c-re=a.re-b.re;
c-im=a.im-b.im;
}
int?main()??
{??
struct?complex?x,y,s,p;??
scanf("%d%d",x.re,x.im);??
scanf("%d%d",y.re,y.im);??
add(x,y,s);?
printf("???sum=%5d+%5di\n",s.re,s.im);??
minus(x,y,p);
printf("???product=%5d+%5di\n",p.re,p.im);??
return?0;??
}
#include stdio.h
char *SubjectName[] = {"數(shù)學(xué)","物理","化學(xué)","生物","語文","外語","政治","歷史","體育","美術(shù)","音樂"}; //科目名稱列表 可調(diào)整順序
#define SUBJECT 2 //科目數(shù) 可設(shè)定 1 - 11門,超過11門時得添加上行科目名稱列表
#define STUDENTS_MAX 100 //最大可輸入的學(xué)生數(shù)量 根據(jù)實際情況調(diào)整
typedef struct student{char name[12]; float core[SUBJECT+1];} Student;//最長姓名只許有五個漢字長度,超長會出錯 改一下這個名字長度或規(guī)定名字最長5個字多余的不輸入也成
Student Stu[STUDENTS_MAX]; //結(jié)構(gòu)體數(shù)組 全局變量 雖可以不用全局的,要是你自己寫了很多函數(shù),都要訪問它們,不如就讓它們做全局變量的好
void main()
{
int total,i,j,k;
printf("請輸入學(xué)生總數(shù)[1-%d]:",STUDENTS_MAX);
scanf("%d",total);
if(totalSTUDENTS_MAX){printf("超出設(shè)計總數(shù)了");exit(-1);}
else if(total1){printf("沒有學(xué)生統(tǒng)計個屁呀"); exit(-1);}
printf("請輸入學(xué)生成績,格式:\n\t姓名 ");
for(j=0;jSUBJECT;j++) printf("%s ",SubjectName[j]);
printf("\n");
for(i=0;itotal;i++)
{
Stu[i].core[SUBJECT]=0.0;//平均分
printf("No.%-3d ",i+1);
fflush(stdin); //清輸入緩沖區(qū)
scanf("%s %f",Stu[i].name,Stu[i].core[0]); //至少有一門科目的
for(j=1;jSUBJECT;j++) //其它科目 定義了多少就輸入多少
{
scanf("%f",Stu[i].core[j]);
Stu[i].core[SUBJECT] += Stu[i].core[j];
}
Stu[i].core[SUBJECT] /= SUBJECT; //平均分 只是求了沒有輸出
}
printf("\n不及格情況統(tǒng)計:\n");
for(k=0,i=0;itotal;i++)
{
char putbuf[128],buf1[5];
int flag = 0;
strcpy(putbuf,Stu[i].name); //記下名字
for(j=0;jSUBJECT;j++)
if(Stu[i].core[j]60)
{
flag++;
strcat(putbuf," ");
strcat(putbuf,SubjectName[j]);//不及格的科目名稱
strcat(putbuf,":");
sprintf(buf1,"%4.1f",Stu[i].core[j]);strcat(putbuf,buf1);//分?jǐn)?shù)
}
if(flag)
{
printf("%s %d門不及格\n",putbuf,flag); //有不及格則輸出
k++; //統(tǒng)計不及格人數(shù)
}
}
if(!k)
printf("沒有不及格的學(xué)生");
else
printf("有不及格科目的學(xué)生個數(shù):%d",k);
}
//??吹接幸@類程序的,今天寫一個,給大家參考,別天天上來要程序啊,仿照這個自己編吧
//程序在VC7.1下編譯通過,測試運(yùn)行正常
首先你要明確第4個的st并不是指針,并且結(jié)構(gòu)體并不能直接給一個結(jié)構(gòu)體,他不是基本類型。
第2個,的結(jié)構(gòu)體是在堆里邊的,需要,釋放。
第3個是在棧中的變量。
要做鏈表的話一定要用2;一般的使用3即可。
第一個明顯不合理,第一行分配的空間有什么用呢?
在另外一個函數(shù)里面使用的源代碼如下:
#include"stdio.h"
#include "conio.h" //-------添加這個頭文件,因為getch()函數(shù)來自它,否則編譯會有警告
struct student ? /*定義結(jié)構(gòu)體*/
{
void main()
{
void data_in(struct student putin[]);
void data_out(struct student *p);
void data_pout(struct student *s1);
data_in(pers); ? ? ?/*調(diào)用指針輸入函數(shù)*/
data_out(sp); ? ? /*調(diào)用指針輸出函數(shù)*/
data_pout(sp); ? /*調(diào)用函數(shù)名輸出函數(shù)*/
getch();
}
擴(kuò)展資料
1、函數(shù)是C語言的基本組成元素,當(dāng)我們調(diào)用一個函數(shù)時,需要明確函數(shù)名和實參列表。實參列表中的參數(shù)可以是常量、變量、表達(dá)式或者空,并且各參數(shù)之間要使用英文逗號分隔開來。
2、在C語言中,函數(shù)的定義是獨(dú)立的,一個函數(shù)不能定義在另一個函數(shù)內(nèi)部。但在調(diào)用函數(shù)時,可以在一個函數(shù)中調(diào)用另一個函數(shù),這就是函數(shù)的嵌套調(diào)用。接下來我們通過一個案例來演示函數(shù)的嵌套調(diào)用。
#includestdio.h
#includestring.h
#includestdlib.h
struct telephone
{
char name[10];
char telno[20];
};
void search(struct telephone b[], char *x, int n);
int main()
{
int i,n;
struct telephone b[100];
char nane[100];
for(i=0;;i++)
{
printf("Please input name:");
gets(b[i].name);
if(b[i].name[0]=='#')
break;
printf("Please input telephone:");
gets(b[i].telno);
}
n=i;
printf("Please input you want to find name:");
gets(nane);
search(b,nane[0],n);
return 0;
}
void search(struct telephone b[],char *x,int n)
{
int i;
int find=0;
for(i=0;in;i++)
{
if(strcmp(x,b[i].name)==0)
{
printf("the telephone is %s\n",b[i].telno);
find=1;
}
}
if(find==0)
printf("Not found!");
}