学习C语言的最后一节课了,原因嘛上一章的末尾说过了,其实写这篇博客的时候以后开始学习Java一个多月了,一直因为各种各样的原因没有坚持做到每天一篇学习记录,可能主要因为懒吧....也有点笨,Java的学习挺紧凑的,不努力学的话基本跟不上..所以很多时候回去以后只想躺在床上好好的休息一下..

不多说了开始写今天的内容.今天要学习的是C中的结构,学习的目标是理解并会利用结构去完成自己想要实现的内容.

什么是结构呢?

“结构” 是一种构造数据类型,它是由若干数据项组合而成的复杂数据对象,这些数据项称为结构的成员。

定义结构:

struct  structurename [A1] 

{

       datatype[A2]    variable1;[A3] 

       datatype   variable2;

       ...

};


 [A1]结构名

 [A2]C语言中有效数据类型

 [A3]结构成员

要记住:

结构定义并不预留内存

结构定义放置在程序的开始部分,位于头文件声明之后

结构定义仅描述了一个结构的形式。如果要在程序里使用结构,需要声明结构变量。

声明结构变量:

首先定义结构,再声明结构变量

示例:

 

struct student
{
     int num;
     char name[20];
     char sex;
     float score;
};
struct student student1,student2;
II.在定义结构类型的同时声明结构变量 
struct  student
{
     int num;
     char name[20];
     char sex;
     float score;
}student1,student2;

III. 直接声明结构变量 
struct  student
{
      int num;
      char name[20];
      char sex;
      float score;
}student1,student2;

嵌套结构

struct date

{

      int month;

      int day;

      int year;

};

 

struct{

       int num;

       char name[20];

       char sex;

       struct date[A1]  birthday;

       float score;

}student1,student2;

 


 [A1]引用date结构

表示结构变量成员的一般形式是:结构变量名.成员名

例如:student1.num、student2.sex、student1.birthday.month

示例:

#include <stdio.h>
//定义个描述学生信息的结构体
struct student
{
    int num;//学生学号 
    char *name;    //姓名
    char sex;//性别
    float score;//分数 
}student1,student2;//声明结构体的变量
void test1();
void test2();

void main()
{ 
    test2();
}
void test1(){
       //为结构体中的成员赋值:结构体变量名.成员=值; 
   student1.num=1;
   student1.name="lisi";
   student1.sex='F';
   student1.score=90;
   student2=student1;
   //声明结构体变量并赋值
   struct student  student3={3,"zhangsan",'M',80};
   //访问结构体中成员变量: 结构体变量名.成员
   printf("=====================================\n");
   printf("student1的学号为%d\n",student1.num); 
   printf("student1的姓名为%s\n",student1.name); 
   printf("student1的性别为%c\n",student1.sex);
   printf("student1的分数为%.1f\n",student1.score);   
   printf("=====================================\n");
   printf("student2的学号为%d\n",student2.num); 
   printf("student2的姓名为%s\n",student2.name); 
   printf("student2的性别为%c\n",student2.sex);
   printf("student2的分数为%.1f\n",student2.score);   
   printf("=====================================\n");
   printf("student3的学号为%d\n",student3.num); 
   printf("student3的姓名为%s\n",student3.name); 
   printf("student3的性别为%c\n",student3.sex);
   printf("student3的分数为%.1f\n",student3.score);  
}

void test2(){
     //声明结构体变量并对其进行初始化 
     struct student stu1={1,"成龙",'M',88};
     struct student stu2={2,"李连杰",'M',98};
     struct student stu3={3,"吴京",'M',68};
     if(stu1.score<60){
         printf("学号:%d\t姓名:%s\t性别:%c\t分数:%.2f\n",stu1.num,stu1.name,stu1.sex,stu1.score);
      }
      if(stu2.score<60){
         printf("学号:%d\t姓名:%s\t性别:%c\t分数:%.2f\n",stu2.num,stu2.name,stu2.sex,stu2.score);
      } 
       if(stu3.score<60){
         printf("学号:%d\t姓名:%s\t性别:%c\t分数:%.2f\n",stu3.num,stu3.name,stu3.sex,stu3.score);
      }
     if(stu1.score>=60&&stu2.score>=60&&stu3.score>=60){
         printf("没有挂科的学员!\n");
     }
 }    

结构数组

元素为结构类型的数组称为结构数组。

在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体。例如一个班的学员信息

  • struct student
    {
             int num;
             char* name;
             char sex;
             float score;
    }stu[30];

     

示例: 计算学员的总成绩,平均成绩和不及格人数

#include <stdio.h>
//定义一个结构数组
struct student{
    int num;
    char *name;
     char sex;
     float score;
}stus[5]={{1,"zhangsan",'M',80},{2,"zhangsan2",'M',88},{3,"zhangsan3",'M',58},{4,"zhangsan4",'M',50},{5,"zhangsan5",'M',80}}; 

void main()
{
    //计算学员的总成绩,平均成绩和不及格人数
    float sum=0,avg;
    int count=0;
    int i;
    for(i=0;i<5;i++){
        sum+=stus[i].score;//计算总成绩 
        if(stus[i].score<60){
            count++;//统计不及格人数 
        }
    }
    avg=sum/5;//计算平均成绩
    printf("总成绩:%.2f,平均成绩:%.2f,不及格人数:%d人\n",sum,avg,count);    
}

以上就是今天的内容了,比较少也不全面,主要是我记得的不多了...

往后的内容就会是Java的了,作为一个转行过来的人,要努力学习了,以后我会尽量一天一篇博文,写在这里,提醒自己!

posted on 2017-04-25 20:36  黯然回眸  阅读(418)  评论(0编辑  收藏  举报