c语言结构体

C语言中可以构造自己想要的数据类型,这种类型可以叫做符合数据类型

 

结构体:是由一系列具有相同类型或者不同类型的数据构成的数据集合

结构体是一种可以由我们自己定义的数据类型

#include<stdio.h>
//定义结构体包含学生的序号,三门课成绩,平均分 
struct student{//student是结构体名称 
	int num;
	int score[3];
	float avg;
};
int main(){
	//int类型的形参赋值float类型会自动消除小数点后面的数字 
	struct student Tom={10,{63,78},88.22};
	struct student Mike{11,78,65,75};
	printf("Tom的序号是:%d\n",Tom.num);
	printf("Tom的成绩1:%d\n",Tom.score[0]);
	printf("Tom的成绩2:%d\n",Tom.score[1]);
	printf("Tom的成绩3:%d\n",Tom.score[2]);
	printf("Tom的平均分是:%f\n",Tom.avg);
	return 0;
}
#include<stdio.h>
//定义结构体包含学生的序号,c语言成绩,平均分 
struct student{//student是结果体名称 
	int num;
    float c;
     float math;
    double avg;
}Jerry,Mike;//定义多个结构体变量 
int main(){
	struct student Tom={10,65.5,89.2,75};
	Tom.num=14;
	Tom.c=88.5;
	Tom.avg=76;
	printf("Tom的序号:%d\n",Tom.num);
	printf("Tom的c语言成绩%f\n",Tom.c);
	printf("Tom的数学成绩是%f\n",Tom.math);
	printf("Tom的平均成绩是%lf\n",Tom.avg);

return 0; 
}

typedef的使用

注意:它不是创建一个类型,而是给已有的一个类型取一个别名

语法:typedef 已有的类型 别名;

 typedef与define的区别前者是定义类型的别名,后者是定义一个常量的别名。

结构体数组

 

 结构体数组的初始化

语法:struct 结构体名 数组名[数组长度] ={初始值列表};

#include<stdio.h>
#include<string.h>
#define N 5
struct books{  //图书结构 
	int bno;   //图书编号 
	char bname[20]; //书名 
	char field[10];  //专业领域 
	char author[10]; //作者 
	char publisher[30];//出版社 
	float price; //书的价格 
};
int main(){
	struct books book[N];//定义结构体数组保存N本图书信息
	int i,j,k;
	char isc='n',isb='n';
	int bno,count[N]={0};//数组count记录各种图书的订购数量
	float total =0,pp;
	printf("输入书号  书名  专业领域 作者  出版社  价格:\n");
	//输入图书信息
	for(i=0;i<N;i++){
		printf("NO.%d:",i+1);//提示输入第i个图书的信息
		scanf("%d%s%s%s%s%f",&book[i].bno,book[i].bname,
		book[i].field,book[i].author,book[i].publisher,&pp);
		book[i].price=pp;
	} 
	printf("\n----------------------------------------\n");
	printf("图书订单:\n");//购买图书
	do
	{
		printf("输入图书书号和数量:\n");//提示输入要购买图书的编号和数量
		scanf("%d%d",&bno,&k);
		isb='n';
		for(j=0;j<N;j++)
			if(bno==book[j].bno){
				count[j]+=k;
				isb='y';
			}
			if(isb=='n') printf("书号错误\n");
			printf("继续购买吗?(y/n):");
			scanf("%c",&isc);

		}while(isc=='y');
		printf("\n-------------------------------------\n");
		printf("购书清单\n");//输出购书清单
		printf("书号\t书名\t\t作者\t单价\t数量\n");
		for(i=0;i<N;i++){
			if(count[i]!=0)
			{printf("%d\t%s\t%s\t%.2f\t%d\n",book[i],bno,book[i].bname,
			book[i].author,book[i].price,count[i]);
			total+=count[i]*book[i].price;
			}
		} 
		printf("\n------------------------------------\n");
		printf("\t\t\t总价:%.2f\n",total);//输出总价格
		return 0; 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值