学习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 app商城源码Android短信监听接收器

    wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...

  2. 剑指offer_数组中的逆序对

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P. 并将P对1000000007取模的结果输出. 即输出P%100 ...

  3. Java中的枚举的治理

    版权声明:本文为博主原创文章,转载请注明出处,欢迎使劲喷 一.为啥用枚举&为啥要对枚举进行治理 1.先来说说为啥用枚举 表中某个字段标识了这条记录的状态,我们往往使用一些code值来标识,例如 ...

  4. 写入soap消息以及与soap消息通信

    1.些了解一下soap消息的结构以及通信方式如下图:

  5. iOS开发之NSObject的多线程

    1.NSObject的多线程方法(用的时候要用@autoreleasepool{}包起来) 开启后台执行任务的方法: - (void)performSelectorInBackground:(SEL) ...

  6. spring学习起步

    1.搭载环境 去spring官网下载这几个包,其中commons-logging-1.2.jar是一个日志包,是spring所依赖的包,可以到apache官网上下载 也可以访问http://downl ...

  7. 一张图解析nvm,npm,nodejs之间的关系

  8. SSM项目整合基本步骤

    SSM项目整合 1.基本概念 1.1.Spring Spring 是一个开源框架, Spring 是于 2003  年兴起的一个轻量级的 Java  开发框架,由 Rod Johnson  在其著作  ...

  9. 利用php数组函数进行函数式编程

    因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 这段程序与那个BUG有密切的关系. 我来回反复的捉摸这段代码, 发现这段代码实现了两个功能 第一个是在一 ...

  10. Android 开发之开发插件使用:Eclipse 插件 SQLiteManger eclipse中查看数据内容--翻译

    最近研究了一段时间Android开发后发现,google自带的ADT工具,缺失一些开发常用的东西,希望可以构建一个类似使用JAVA EE开发体系一样开发的工具包集合,包括前台开发,调试,到后台数据库的 ...