学习C语言的最后一节课了,原因嘛上一章的末尾说过了,其实写这篇博客的时候以后开始学习Java一个多月了,一直因为各种各样的原因没有坚持做到每天一篇学习记录,可能主要因为懒吧....也有点笨,Java的学习挺紧凑的,不努力学的话基本跟不上..所以很多时候回去以后只想躺在床上好好的休息一下..
不多说了开始写今天的内容.今天要学习的是C中的结构,学习的目标是理解并会利用结构去完成自己想要实现的内容.
什么是结构呢?
“结构” 是一种构造数据类型,它是由若干数据项组合而成的复杂数据对象,这些数据项称为结构的成员。
定义结构:
struct structurename [A1]
{
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语言学习第九章的更多相关文章
-
C语言学习 第九次作业总结
本次作业练习的内容是二维数组.下面我先简单的说下二维数组的基本知识点: 二维数组其实这个中文概念颇有误导--会让人感觉这是一个两个维度的概念.所以很多的国外的C语言书籍上会称这种数组为多下标数组:即首 ...
-
C语言学习第二章
今天开始学习常量,变量,基本数据类型,printf()函数和scanf()函数,算术运算符. 首先常量:是在程序中保持不变的量 变量:编写程序时,常常需要将数据存储在内存中,方便后面使用这个数据或者修 ...
-
R语言学习 第九篇:plyr包
在数据分析中,整理数据的本质可以归纳为:对数据进行分割(Split),然后应用(Apply)某些处理函数,最后将结果重新组合(Combine)成所需的格式返回,简单描述为:Split - Apply ...
-
【转载】Gradle学习 第九章:Groovy快速入门
转载地址:http://ask.android-studio.org/?/article/17 To build a Groovy project, you use the Groovy plugin ...
-
Python爬虫学习==>;第九章:正则表达式基础
学习目的: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特点字符.及这些特点字符组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 正式步骤 Step1 ...
-
java并发学习--第九章 指令重排序
一.happns-before happns-before是学习指令重排序前的一个必须了解的知识点,他的作用主要是就是用来判断代码的执行顺序. 1.定义 happens-before是用来指定两个操作 ...
-
C语言入门---第九章 C语言指针
没学指针就是没学C语言! 指针是C语言的精华,也是C语言的难点. 所谓指针,也就是内存的地址,所谓指针变量,也就是保存了内存地址的变量.不过人们往往不会区分两者的概念,而是混淆在一起使用. ===== ...
-
UNP学习第九章 基本名字与地址转换
之前都用数值地址来表示主机(206.6.226.33),用数值端口号来标识服务器. 然而,我们应该使用名字而不是数值:名字比较容易记,数值地址可以改变但名字保持不变. 随着往IPv6上转移,数值地址变 ...
-
R语言学习 第四篇:函数和流程控制
变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...
随机推荐
-
VsFtpd配置文件详解
1.默认配置:1>允许匿名用户和本地用户登陆. anonymous_enable=YES local_enable=YES2>匿名用户使用的登陆名为ftp或anonymou ...
-
sublime2的快捷键
1.快速文件转换 与sublime2中搜索文件快捷键一样,ctrl+p ctrl + p //window comm + p //mac 2.在代码中搜索 在所有已加载的文件中查找一个特定的字符串,支 ...
-
Jersey(1.19.1) - Building URIs
A very important aspects of REST is hyperlinks, URIs, in representations that clients can use to tra ...
-
SSL握手流程
一.SSL是什么? 安全套接字(SSL)协议是Web浏览器和Web服务器之间安全交换信息的协议. SSL介于应用层和TCP层之间,应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层 ...
-
idea 使用问题总结
tomcat edit configurations配置问题: 在deployment选项卡内增加artifact到server,在Application context选择应 ...
-
一个 rsync同步文件脚本
#/bin/bash cd /root/phone echo "update guanwang phone version" git pull ]; then echo " ...
-
Pycharm中配置鼠标悬停快速提示方法参数
第一步: 第二步: 演示:
-
python实现目录大小计算(含子目录)
path=r"F:\\PYTHON\\day8\\ftp_server\\"#这里我直接写了固定地址,你可以自己输入 file_size = 0 def split_doc(pat ...
-
基于Python的多线程模块Threading小结
步入正题前,先准备下基本知识,线程与进程的概念. 相信作为一个测试人员,如果从理论概念上来说其两者的概念或者区别,估计只会一脸蒙蔽,这里就举个例子来说明下其中的相关概念. 平安夜刚过,你是吃到了苹果还 ...
-
通信——基于Xmpp协议实现的聊天室
前段时间写了个自定义通信协议的聊天室(即用\r\n标记字符串,作为一句话),总感觉自己弄的那个协议实现虽然简单,但是拓展性就太差了,只适合于发送聊天的内容,难以包含更多的信息.基于上述几点,于是就开始 ...