结构
基本数据类型都是单一的,只能表示一些简单的事物。例如:整数类型、浮点类型、字符串类型。但现实世界是复杂的如果我们需要一个类型来表示一个人的多种信息,例如姓名、身高、成绩等等,那么就需要用到c语言提供的结构类型。
结构数据类型可以把基本的数据类型和派生类型组合起来,从而描述复杂的事物。结构体的使用需要我们自己声明,一但声明了结构类型,就可以像使用"int"那样进行变量、指针、数组的定义。
结构类型的声明
结构类型的声明需要一个关键字“struct”结构如下:
struct [结构类型名] {成员列表} [ 变量名];
例如:想要定义一个结构类型来包含表示位置坐标的x,y那么可以如下声明
struct coord
{
int x;
int y;
}first , sdcond;
利用“typedef”关键字为结构类型定义一个名称,此后便可以利用重新定义的名称来定义变量、指针、数组等内容。例如:
typedef struct coord Coord;
以上便是声明结构类型的方法。
访问结构成员
定义完结构类型,需要使用成员运算符(.)来访问结构成员。成员运算符也称为点运算符。例如通过变量first表示屏幕位置(50,100),可以这样写:
first.x = 50;
first.y = 100;
同时结构类型也支持在相同类型的结构间通过简单的赋值表达式复制信息:
second = first;
对结构成员进行输入输出时可以通过输入输出函数来进行操作
scanf("%d %d",&first.x , &first.y);
printf("%d %d ",first.x , first.y);
以上就是结构类型的基本操作,下面给大家分享一个练习的题目
输出平均分最高的学生信息
假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(1<=n<=10)个学生的成绩信息,计算并输出平均分最高的学生信息,平均分保留两位小数。如果平均分最高的学生有多个,按输入顺序输出第一个学生的信息。
输入格式:
输入整数n(1<=n<=10),在下面n行输入n个学生的信息,包括学号、姓名、三门课程成绩(整数)。
输出格式:
在一行中输出平均分最高的学生信息:学号、姓名、平均分(保留两位小数)
输入样例:
3
101 Zhang 78 87 85
102 Wang 91 88 90
103 Li 75 90 84
输出样例:
num:102,name:Wang,average:89.67
代码示例如下:
#include<stdio.h>
struct chengji
{
int num;
char name[10];
double x,y,z;
double m;
};
int main()
{
int n,i,j=0;
scanf("%d",&n);
struct chengji xinxi[n];
for(i=0;i<n;i++)
{
scanf("%d %s %lf %lf %lf",&xinxi[i].num,xinxi[i].name,&xinxi[i].x,&xinxi[i].y,&xinxi[i].z);
xinxi[i].m=(xinxi[i].x+xinxi[i].y+xinxi[i].z)/3;
}
for(i=1;i<n;i++)
{
if(xinxi[i].m>xinxi[j].m)
j=i;
}
printf("num:%d,name:%s,average:%.2f",xinxi[j].num,xinxi[j].name,xinxi[j].m);
return 0;
}
感谢阅读,与君共勉,顶峰相见!!!