可以在外部定义结构体类型,然后在主函数内部定义该类型的变量。在输入输出函数调用时,以结构体变量指针做为参数传递。
三水ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
参考代码如下:
#include stdio.h
struct test
{
int a;
};//定义结构体类型struct test。
void input(struct test* p)//输入函数,以指针作为参数。
{
scanf("%d",p-a);
}
void output(struct test *p)//输出函数,以指针作为参数。这里也可以以结构体变量作为参数,不过用指针效率更高。
{
printf("%d\n", p-a);
}
int main()
{
struct test v;//定义结构体变量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[] = {"数学","物理","化学","生物","语文","外语","政治","历史","体育","美术","音乐"}; //科目名称列表 可调整顺序
#define SUBJECT 2 //科目数 可设定 1 - 11门,超过11门时得添加上行科目名称列表
#define STUDENTS_MAX 100 //最大可输入的学生数量 根据实际情况调整
typedef struct student{char name[12]; float core[SUBJECT+1];} Student;//最长姓名只许有五个汉字长度,超长会出错 改一下这个名字长度或规定名字最长5个字多余的不输入也成
Student Stu[STUDENTS_MAX]; //结构体数组 全局变量 虽可以不用全局的,要是你自己写了很多函数,都要访问它们,不如就让它们做全局变量的好
void main()
{
int total,i,j,k;
printf("请输入学生总数[1-%d]:",STUDENTS_MAX);
scanf("%d",total);
if(totalSTUDENTS_MAX){printf("超出设计总数了");exit(-1);}
else if(total1){printf("没有学生统计个屁呀"); exit(-1);}
printf("请输入学生成绩,格式:\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); //清输入缓冲区
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不及格情况统计:\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);//分数
}
if(flag)
{
printf("%s %d门不及格\n",putbuf,flag); //有不及格则输出
k++; //统计不及格人数
}
}
if(!k)
printf("没有不及格的学生");
else
printf("有不及格科目的学生个数:%d",k);
}
//常看到有要这类程序的,今天写一个,给大家参考,别天天上来要程序啊,仿照这个自己编吧
//程序在VC7.1下编译通过,测试运行正常
首先你要明确第4个的st并不是指针,并且结构体并不能直接给一个结构体,他不是基本类型。
第2个,的结构体是在堆里边的,需要,释放。
第3个是在栈中的变量。
要做链表的话一定要用2;一般的使用3即可。
第一个明显不合理,第一行分配的空间有什么用呢?
在另外一个函数里面使用的源代码如下:
#include"stdio.h"
#include "conio.h" //-------添加这个头文件,因为getch()函数来自它,否则编译会有警告
struct student /*定义结构体*/
{
void main()
{
void data_in(struct student putin[]);
void data_out(struct student *p);
void data_pout(struct student *s1);
data_in(pers); /*调用指针输入函数*/
data_out(sp); /*调用指针输出函数*/
data_pout(sp); /*调用函数名输出函数*/
getch();
}
扩展资料
1、函数是C语言的基本组成元素,当我们调用一个函数时,需要明确函数名和实参列表。实参列表中的参数可以是常量、变量、表达式或者空,并且各参数之间要使用英文逗号分隔开来。
2、在C语言中,函数的定义是独立的,一个函数不能定义在另一个函数内部。但在调用函数时,可以在一个函数中调用另一个函数,这就是函数的嵌套调用。接下来我们通过一个案例来演示函数的嵌套调用。
#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!");
}