您的位置:首页 > 编程语言 > C语言/C++

C语言结构体课堂总结

2017-07-20 08:39 225 查看
假设班级有10名学生,在一次考试后我想录入他们的姓名、学号及数学语文和英语成绩,录入完成后想让电脑自动计算并按总成绩由高到低的顺序输出成绩单。

要解决以上问题我们先看看数据得如何定义,按我们目前学习的知识得定义好几个数组分别用来存储各科成绩和学号,姓名就更难存储了,因为一个姓名就得是一个字符数组。

如果有一个数据类型能够一次存储一个学生的信息就好了。

下面就来讲解构建这样的结构类型。

1. typedef 命令

这个命令用来给一个数据类型起新的名称。

如果你在编程中不喜欢打int 那你可以给int 起一个别名例如zhengshu,请看下面的例子。

#include "stdlib.h"

#include "stdio.h"

typedef int zhengshu; //给int 这个数据类型起个另外的称呼 zhengshu,注意这里以分号为结尾。main()

{

zhengshu a;//这里跟int a是一样的

zhengshu b;

zhengshu c;

printf("请输入第一个整数:");

scanf("%d",&a);

printf("请输入第二个整数:");

scanf("%d",&b);

c=a+b;

printf("两个整数的和是%d ",c);

}

通过这个小例子你也许明白了typedef就是给已经存在的数据类型起一个新的名称。

2. struct 结构定义命令

结构简单说就是若干基础数据类型的组合,比如我定义一个由整型和浮点型组成的结构就可以这样写:struct { int a; float b; }

这样写有两个意思

1》表示这个结构是由一个整型和一个浮点型组成的。

2》用变量a来表示这个整数用变量b来表示这个浮点数。

但这个结构还没有名字,我们可以用tepdef来给这个结构类型起名字。

tepdef struct { int a; float b; } T;

这样以后在程序中T就表示一个结构数据类型,定义变量就可以这样写: T t1;

t1就是一个结构变量,t1可以存储一个整数和一个浮点数,其中的整数是t1里的a,浮点数是t1里的b。

3. 成员访问运算符"."

上面说的t1里的a 就写成t1.a ,t1里的b 就写成t1.b

请看下面的小例子:

#include "stdlib.h"

#include "stdio.h"

typedef struct{ int a; float b; } T;

main()

{

T t1;

printf("请输入一个整数:");

scanf("%d",&t1.a);

printf("请输入一个浮点数");

scanf("%f",&t1.b);

printf("T是一个结构类型,t1是一个结构类型的变量,t1里的整数是%d,t1里的浮点数是%f ",t1.a,t1.b);

}

上面的小例子明白了后,我们就可以定义一个学生类型的结构了。请看下面的例子:

typedef struct{

char name[10];//姓名

char no[5];//学号

float math;//数学成绩

float chinese;//语文成绩

float english;//英语成绩

}Student;//学生结构类型名

main()

{

Student stu1;//定义一个学生结构类型变量stu1,你可以认为stu1是由5个变量组成的复合变量 printf("输入姓名:");

scanf("%s",stu1.name);//访问stu1里的name成员变量,注意这里name是字符数组所以不加&

printf("输入学号:");

scanf("%s",stu1.no);//访问stu1里的no成员变量

printf("输入数学成绩:");

scanf("%f",&stu1.math);//访问stu1里的math成员变量

printf("输入语文成绩:");

scanf("%f",&stu1.chinese);//访问stu1里的chinese成员变量

printf("输入英语成绩:");

scanf("%f",&stu1.english);//访问stu1里的english成员变量

printf("%s的总分是%.2f ",stu1.name,stu1.math+stu1.chinese+stu1.english);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息