zoukankan      html  css  js  c++  java
  • C语言学习第九章

    学习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("=====================================
    ");
       printf("student1的学号为%d
    ",student1.num); 
       printf("student1的姓名为%s
    ",student1.name); 
       printf("student1的性别为%c
    ",student1.sex);
       printf("student1的分数为%.1f
    ",student1.score);   
       printf("=====================================
    ");
       printf("student2的学号为%d
    ",student2.num); 
       printf("student2的姓名为%s
    ",student2.name); 
       printf("student2的性别为%c
    ",student2.sex);
       printf("student2的分数为%.1f
    ",student2.score);   
       printf("=====================================
    ");
       printf("student3的学号为%d
    ",student3.num); 
       printf("student3的姓名为%s
    ",student3.name); 
       printf("student3的性别为%c
    ",student3.sex);
       printf("student3的分数为%.1f
    ",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	姓名:%s	性别:%c	分数:%.2f
    ",stu1.num,stu1.name,stu1.sex,stu1.score);
          }
          if(stu2.score<60){
             printf("学号:%d	姓名:%s	性别:%c	分数:%.2f
    ",stu2.num,stu2.name,stu2.sex,stu2.score);
          } 
           if(stu3.score<60){
             printf("学号:%d	姓名:%s	性别:%c	分数:%.2f
    ",stu3.num,stu3.name,stu3.sex,stu3.score);
          }
         if(stu1.score>=60&&stu2.score>=60&&stu3.score>=60){
             printf("没有挂科的学员!
    ");
         }
     }    

    结构数组

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

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

    • 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人
    ",sum,avg,count);    
    }

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

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

  • 相关阅读:
    react-native 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
    Hibernate HQL和原生SQL查询的一点区别
    JPA project Change Event Handler问题解决[转]
    Webstorm2016激活码[ 转]
    [支付]微信NATIVE扫码支付JAVA实现
    jeecms附件标签用法
    Eclipse查找类路径快捷方式
    第4条:用辅助函数来取代复杂的表达式
    关于python2中的unicode和str以及python3中的str和bytes
    第2条:遵循PEP8风格指南
  • 原文地址:https://www.cnblogs.com/fengyeyu/p/6764214.html
Copyright © 2011-2022 走看看