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

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

什么是结构呢?

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

定义结构:

struct  structurename [A1]

{

       datatype[A2]    variable1;[A3]

       datatype   variable2;

       ...

};


[A1]结构名

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

[A3]结构成员

要记住:

结构定义并不预留内存

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

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

声明结构变量:

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

示例:

struct student
{
int num;
char name[];
char sex;
float score;
};
struct student student1,student2;
II.在定义结构类型的同时声明结构变量
struct student
{
int num;
char name[];
char sex;
float score;
}student1,student2; III. 直接声明结构变量
struct student
{
int num;
char name[];
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=;
student1.name="lisi";
student1.sex='F';
student1.score=;
student2=student1;
//声明结构体变量并赋值
struct student student3={,"zhangsan",'M',};
//访问结构体中成员变量: 结构体变量名.成员
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={,"成龙",'M',};
struct student stu2={,"李连杰",'M',};
struct student stu3={,"吴京",'M',};
if(stu1.score<){
printf("学号:%d\t姓名:%s\t性别:%c\t分数:%.2f\n",stu1.num,stu1.name,stu1.sex,stu1.score);
}
if(stu2.score<){
printf("学号:%d\t姓名:%s\t性别:%c\t分数:%.2f\n",stu2.num,stu2.name,stu2.sex,stu2.score);
}
if(stu3.score<){
printf("学号:%d\t姓名:%s\t性别:%c\t分数:%.2f\n",stu3.num,stu3.name,stu3.sex,stu3.score);
}
if(stu1.score>=&&stu2.score>=&&stu3.score>=){
printf("没有挂科的学员!\n");
}
}

结构数组

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

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

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

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

#include <stdio.h>
//定义一个结构数组
struct student{
int num;
char *name;
char sex;
float score;
}stus[]={{,"zhangsan",'M',},{,"zhangsan2",'M',},{,"zhangsan3",'M',},{,"zhangsan4",'M',},{,"zhangsan5",'M',}}; void main()
{
//计算学员的总成绩,平均成绩和不及格人数
float sum=,avg;
int count=;
int i;
for(i=;i<;i++){
sum+=stus[i].score;//计算总成绩
if(stus[i].score<){
count++;//统计不及格人数
}
}
avg=sum/;//计算平均成绩
printf("总成绩:%.2f,平均成绩:%.2f,不及格人数:%d人\n",sum,avg,count);
}

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

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

C语言学习第九章的更多相关文章

  1. C语言学习 第九次作业总结

    本次作业练习的内容是二维数组.下面我先简单的说下二维数组的基本知识点: 二维数组其实这个中文概念颇有误导--会让人感觉这是一个两个维度的概念.所以很多的国外的C语言书籍上会称这种数组为多下标数组:即首 ...

  2. C语言学习第二章

    今天开始学习常量,变量,基本数据类型,printf()函数和scanf()函数,算术运算符. 首先常量:是在程序中保持不变的量 变量:编写程序时,常常需要将数据存储在内存中,方便后面使用这个数据或者修 ...

  3. R语言学习 第九篇:plyr包

    在数据分析中,整理数据的本质可以归纳为:对数据进行分割(Split),然后应用(Apply)某些处理函数,最后将结果重新组合(Combine)成所需的格式返回,简单描述为:Split - Apply ...

  4. 【转载】Gradle学习 第九章:Groovy快速入门

    转载地址:http://ask.android-studio.org/?/article/17 To build a Groovy project, you use the Groovy plugin ...

  5. Python爬虫学习==>第九章:正则表达式基础

    学习目的: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特点字符.及这些特点字符组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 正式步骤 Step1 ...

  6. java并发学习--第九章 指令重排序

    一.happns-before happns-before是学习指令重排序前的一个必须了解的知识点,他的作用主要是就是用来判断代码的执行顺序. 1.定义 happens-before是用来指定两个操作 ...

  7. C语言入门---第九章 C语言指针

    没学指针就是没学C语言! 指针是C语言的精华,也是C语言的难点. 所谓指针,也就是内存的地址,所谓指针变量,也就是保存了内存地址的变量.不过人们往往不会区分两者的概念,而是混淆在一起使用. ===== ...

  8. UNP学习第九章 基本名字与地址转换

    之前都用数值地址来表示主机(206.6.226.33),用数值端口号来标识服务器. 然而,我们应该使用名字而不是数值:名字比较容易记,数值地址可以改变但名字保持不变. 随着往IPv6上转移,数值地址变 ...

  9. R语言学习 第四篇:函数和流程控制

    变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...

随机推荐

  1. WeMall的Android app商城中的wemall doraemon代码

    WeMall-Android 包含SMSSDK/WeMall-Client/social_sdk_library_project三个项目以及Api目录下的client.php/update.xml接口 ...

  2. 1230: [Usaco2008 Nov]lites 开关灯

    1230: [Usaco2008 Nov]lites 开关灯 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1162  Solved: 589[Sub ...

  3. JavaScript tips:数组去重

    1.实现目标:数组去重 2.实现思路: (1)创建新数组. (2)遍历原数组,判断当前被遍历元素是否存在于新数组,如果存在于新数组,则判断当前被遍历元素是重复的:如果不存在于新数组,则判断当前被遍历元 ...

  4. 腾讯.NET面试题

    在整个面试过程中,作为面试者的你,角色就是小怪兽,面试官的角色则是奥特曼,更不幸的是,作为小怪兽的你是孤身一人,而奥特曼却往往有好几个~ 以下是网友发的关于腾讯的.NET面试题,不得不说还是有一定的难 ...

  5. El表达式的用法个人总结

    EL表达式的好处: 通过EL可以简化在JSP开发中对对象的引用,从而规范页面代码,增加程序的可读性及可维护性. EL表达式的几个特点:  1:可以与jsp标签库结合使用,也可以与javascript语 ...

  6. Alamofire源码解读系列(七)之网络监控(NetworkReachabilityManager)

    Alamofire源码解读系列(七)之网络监控(NetworkReachabilityManager) 本篇主要讲解iOS开发中的网络监控 前言 在开发中,有时候我们需要获取这些信息: 手机是否联网 ...

  7. “倔驴”一个h5小游戏的实现和思考(码易直播)——总结与整理

    3月23日晚上8点半(中国队火拼韩国的时候),做了一期直播分享.15年做的一个小游戏,把核心代码拿出来,现场讲写了一遍,结果后面翻车了,写错了两个地方,导致运行效果有点问题,直播边说话边写代码还真不一 ...

  8. eclipse项目导入到android studio中文乱码处理

    由于eclipse项目是gbk编码,Android studio默认用的是utf-8. 就会导致代码中的汉字,注释全部显示为乱码. 解决方法:在module的bulid.gradle中加入: comp ...

  9. MyBatis解决字段名与实体类属性名不相同的冲突(四)

    一.创建表和表数据 CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no ), order_price FLOA ...

  10. centos安装python2.7并安装easy_install,pip,ipython

    1.安装python 下载python2.7.10 # wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz # tar -z ...