学习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. [OpenGL] mac上运行NateRobin的OpenGL教程找不到 data file 解决方案

    之前买的OpenGL编程指南第七版一直没看,最近开始看了,然后按照教程推荐的去指定网址下载NateRobin的OpenGL教程,但发现网址已经提示Error:404了, 然后谷歌搜索到可用的下载网址为 ...

  2. PHP数据访问修改和多条件查询(20161030)

    查询分为关键字查询和准确查询 1.没有提交的时候--查所有 2.两个输入都为空--查所有3.第一个条件有,第二个为空--根据第一个条件查4.第一个没有,第二个有--根据第二个条件查5.两个都有--根据 ...

  3. [UWP]了解模板化控件(1):基础知识

    1.概述 UWP允许开发者通过两种方式创建自定义的控件:UserControl和TemplatedControl(模板化控件).这个主题主要讲述如何创建和理解模板化控件,目标是能理解模板化控件常见的知 ...

  4. Android权限解释

    属性 说明 android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问 "properties"表在checkin数据库中,改值可以修改 ...

  5. @RequestParam--SpringMVC 注解系列文章(一)

    概述 RequestParam 注解是使用 SpringMVC 开发过程中,比较常用的一个注解,用于映射请求参数. 代码 package rex.springmvc.handlers; import ...

  6. iOS用户行为追踪——无侵入埋点

    本文章系作者原创文章,如需转载学习,请注明该文章的原始出处和网址链接.  在阅读的过程中,如若对该文章有不懂或值得优化的建议,欢迎大家加QQ:690091622 进行技术交流和探讨. 前言:  前几日 ...

  7. shell中的条件表达式

    条件表达式返回的结果都为布尔型 真为1,假为0 条件测试的表达式 [expression] [[expression]] test expression 这三种条件表达式的效果是一样的 比较符 整数比 ...

  8. 服务器证书安装配置指南(SLB)

    一.生成证书请求  1.下载CSR生成工具 您需要使用CSR生成工具来创建证书请求.  下载AutoCSR: http://www.itrus.cn/soft/autocsr.rar  2.生成服务器 ...

  9. 在docker container中运行docker-compose

    为了保持宿主主机的环境干净,因此将docker-compose安装到一个基于centos7.3的容器之中,因为tianchao屏蔽了amazonaws,最后选择了通过pip方式来安装,这也是官方推荐的 ...

  10. eclipse如何安装插件

    eclipse安装插件以springsource-tool-suite为例 打开eclipse,找到help/About Eclipse/ 然后点击右下角图标 找到EclipsePlatform对应的 ...