C语言学习第九章
学习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中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...
随机推荐
- 2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛
2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 252 Solved: 1 ...
- 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通
1638: [Usaco2007 Mar]Cow Traffic 奶牛交通 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 618 Solved: 217 ...
- webpack和webpack-dev-server安装配置(遇到各种问题的解决方法)
跟着Webpack傻瓜式指南(一)这个教程在安装webpack和webpack-dev-server的时候遇到很多问题,查了很多终于一一找到解决办法. 主要参考了这三篇博文: moudule.js:3 ...
- 前端总结·基础篇·JS(二)数组深拷贝、去重以及字符串反序和数组(Array)
目录 这是<前端总结·基础篇·JS>系列的第二篇,主要总结一下JS数组的使用.技巧以及常用方法. 一.数组使用 1.1 定义数组 1.2 使用数组 1.3 类型检测 二.常用技巧 2.1 ...
- 【微信公众平台SDK(链式调用)】经过半个月的迭代,今天抽空写了个Demo
这个项目是在实际开发中逐渐完善的,开发过程基于ASP.Net Core 1.1,实际生成会兼容Net4.5. 写有完善的代码提示,怎么用就不多做解释了,引用好实例中的命名空间基本上就可以通过智能提示了 ...
- mysql语句sum求和为null的问题
select sum(price) as price from order where status='SUCCESS'; 如果price对应的所有的值为0,那么算出来的和为null: 可以采用ifn ...
- React中父组件与子组件之间的数据传递和标准化的思考
React中父组件与子组件之间的数据传递的的实现大家都可以轻易做到,但对比很多人的实现方法,总是会有或多或少的差异.在一个团队中,这种实现的差异体现了每个人各自的理解的不同,但是反过来思考,一个团队用 ...
- 第一篇Active Directory疑难解答概述(1)
后期预告:从接下来我会给大家讲解,Active Directory 活动目录重要性,以及在日常管理运维中如和去排查问你题.俗话说,一个不健康的Active Directory环境是不健康的Exchan ...
- Git远程仓库(二)
昨天讲了Git安装使用和基本的命令,今天我说一下如何通过Git将本地管理的仓库添加到远程库 首先我们需要在www.github.com(如果打不开网页,请注意科学上网)上注册一个免费的账号,邮箱验证完 ...
- Python快速入门(5)
os模块:操作系统接口 应该用 import os 风格而非 from os import * .这样可以保证随操作系统不同而有所变化的 os.open() 不会覆盖内置函数 open() 在使用一些 ...