c语言程序设计案例教程(第2版)笔记(三)—变量、结构体
零散知识点:
- 变量 :C语言中,每个变量必须先定义后引用。所谓变量存在是指系统为这个变量分配一块存储空间,此时对变量的操作,就是对变量所对应的存储空间中存放的数据进行操作。人们将变量占据存储空间的时间称为变量的生存期,将变量可以引用的区域称为变量的作用域。变量的作用域依赖于变量定义的位置。
- 全局变量:在函数外部定义的变量称为全局变量。全局变量的生命期是定义这个变量的程序文件,作用域是从定义处开始到程序文件的结束处为止。如果程序文件中的某些局部变量与之同名,则全局变量的作用域应该减去这部分区域。
- 局部变量:在函数内部定义的变量,包括参数表中定义的形式参数被称为局部变量。局部变量的生存期和作用域是定义这些变量的函数。如果函数中出现与局部变量同名的块变量,局部变量的作用域将是减去块变量存在的区域,但它的生命周期并没有结束。(不同函数之间可以相同名字的变量)
- 块变量 :在复合语句中定义的变量称为块变量。块变量的生命期仅为定义它的复合语句块。优点:可以提高存储空间的利用率。
- 静态变量:变量在程序开始运行时系统就为其分配存储空间,等到程序结束时才将为其分配的所有存储空间回收。
- 格式: static 数据类型 变量名;
- 说明:
- 全局变量都具有静态变量的性质
- 在默认情况下,函数内部定义的变量属于自动变量
- 定义为静态变量的变量,只有在首次使用的时候进行初始化,随后的调用不再进行初始化
- 函数的形式参数必须是自动变量。因此在C语言中,不允许在定义形式参数时使用存储类别说明符
- 具有自动(auto)存储类别的变量与函数共存亡;具有静态(static)存储类别的变量与程序共存亡。
结构体 :是一种可以将若干个不同数据类型的变量组合在一起的复合型数据类型。常借助于它将表示同一对象的不同属性封装在一起。
- 优点:可以提高程序的清晰度,降低程序的复杂度,改善程序的可维护性。
- 结构体的变量称为“成员”,(在结构体中,“成员”可以属于任何一种数据类型)。其类型声明的语法格式:
struct <结构体类型名> {
<数据类型> <成员1>;
<数据类型> <成员2>;
……
<数据类型> <成员n>
};
- 在C语言中,允许用户为已经存在的数据类型起一个别名,格式为:typedef 原数据类型名 新数据类型名;
- 例如:typedef int INTEGER;
- 优点:可以提高程序的清晰度、增加程序的可读性
- 结合后:
typedef struct point_type {
Int x;
Int y;
} POINT
POINT p1, p2
等价于:
struct point_type p1, p2;
等价于:
struct point_type{
Int x;
Int y;
} p1, p2;
- 结构体类型变量的初始化:struct point_type p1 = {10,20};
- 结构体类型变量的引用:p1.x; p1.y
- 结构体类型变量的输入:scanf(“%d%d”,&p1.x,&p1.y);
- 结构体类型变量的输出:printf(“%d %d”,p1.x,p1.y);
- 结构体类型变量的赋值:p1.x=6; p1.y=8;
- 结构体代码实例:
功能描述:通过键盘输入30名学生的基本信息,并在上输出。然后,通过键盘输入一个月份和日期,查找并输出本年度在这个给定日期之后过生日的学生信息。
代码实例:
1 #include<stdio.h> 2 #pragma warning(disable:4996) 3 #define NUM 20 4 typedef struct{ 5 int year; /*年*/ 6 int month; /*月*/ 7 int day; /*日*/ 8 } DATE; 9 10 typedef struct{ 11 int num; /*学号*/ 12 char name[24]; /*姓名*/ 13 DATE birthday; /*出生日期*/ 14 char department[48]; /*所属院系*/ 15 char major[32]; /*主修专业*/ 16 } STUDENTINFO; 17 void inputINFO(STUDENTINFO s[]); 18 void outINFO(STUDENTINFO s[]); 19 void searchInfo(STUDENTINFO s[], DATE date); 20 21 main() 22 { 23 STUDENTINFO s[NUM]; 24 DATE date; 25 inputINFO(s); 26 outINFO(s); 27 printf("\n Enter a date(month,day):\n"); 28 scanf("%d%d", &date.month, &date.day); 29 searchInfo(s, date); 30 } 31 32 void inputINFO(STUDENTINFO s[]) 33 { 34 int i; 35 printf("Enter %d studennts information (name,birthday,department,major):\n", NUM); 36 for (i = 0; i < NUM; i++){ 37 s[i].num = i + 1; 38 scanf("%s", s[i].name); 39 scanf("%d%d%d", &s[i].birthday.year, &s[i].birthday.month, &s[i].birthday.day); 40 scanf("%s", s[i].department); 41 scanf("%s", s[i].major); 42 putchar('\n'); 43 } 44 } 45 46 void outINFO(STUDENTINFO s[]) 47 { 48 int i; 49 printf("\n Num Name Birthday Department Major\n"); 50 for (i = 0; i < NUM; i++){ 51 printf("%4d %14s %4d/%2d/%2d %16s %16s", 52 s[i].num, s[i].name, s[i].birthday.year, s[i].birthday.month, s[i].birthday.day, 53 s[i].department, s[i].major); 54 putchar('\n'); 55 } 56 } 57 58 void searchInfo(STUDENTINFO s[], DATE date) 59 { 60 int i; 61 for (i = 0; i < NUM; i++){ 62 if (s[i].birthday.month>date.month){ 63 printf("\n%4d %16s %2d/%2d", s[i].num,s[i].name, s[i].birthday.month, 64 s[i].birthday.day); 65 continue; 66 } 67 if (s[i].birthday.month == date.month && s[i].birthday.day>date.day){ 68 printf("\n%4d %16s %2d/%2d", s[i].num, s[i].name, s[i].birthday.month, 69 s[i].birthday.day); 70 } 71 } 72 }
本博客内容为原创,版权所有违者必究,转载请注明来源 http://www.cnblogs.com/sunshine-blog/
转载于:https://www.cnblogs.com/sunshine-blog/p/8359944.html
c语言程序设计案例教程(第2版)笔记(三)—变量、结构体相关推荐
- c语言教程的辅导书,清华大学出版社-图书详情-《C语言程序设计案例教程学习辅导》...
01C语言是国内广泛使用的计算机语言,是很多高等学校计算机及相关专业的核心课程,以及其他理工科专业的计算机通识基础课程.于延.周国辉主编的<C语言程序设计案例教程>(清华大学出版社出版)采 ...
- c语言实验5上机刘若慧2017年,《《 C语言程序设计案例教程》》.ppt
<< C语言程序设计案例教程>>.ppt 课堂练习: 7.求三个整数之和: 1 只用main函数 2 用求两个整数之和的函数实现 main int a, b, c, sum; ...
- python3程序设计基础答案刘德山_北京大学出版社《Java程序设计案例教程》答案【python程序设计案例教程微课版答案】...
北京大学出版社<Java程序设计案例教程>答案 哎,我也在找不过时北京交通大学出版的 求大学python3程序设计基础答案 刘德山主编 网上找不到 希望大家帮帮忙 答案我也没有,如果你是计 ...
- c语言程序设计北京大学出版社,C语言程序设计案例教程
C语言程序设计案例教程 (2008年11月北京大学出版社出版的图书) 编辑 锁定 讨论 上传视频 <C语言程序设计案例教程>是2008年11月北京大学出版社出版的图书,作者是徐翠霞.[1] ...
- c语言程序开发教程,C语言程序设计案例教程(第2版)
模块1 初识C语言 案例引入 1.1 C语言简介 1.1.1 计算机语言概述 1.1.2 C语言概述 1.2 C程序介绍 1.2.1 C程序的总体结构 1.2.2 C程序的书写规则 1.3 ...
- c语言程序设计案例教程肖利群,C语言程序设计案例教程
C语言是一门入门语言,是学习其他计算机语言的基础.本书共10章,内容包括:初识C语言,C语言案例概述,基本数据类型.运算符和表达式,数据的输入/输出,结构化程序设计,数组,函数,自定义数据类型,指针, ...
- c语言程序设计刘会超答案,C语言程序设计案例教程
章认识C语言1 案例一用计算机求解圆的面积1 相关知识3 案例二MicrosoftVisualC++6.0的使用5 相关知识--C程序结构9 知识拓展9 本章小结16 习题17 实训项目17 第2章简 ...
- c语言程序设计例案教程,C语言程序设计案例教程
图书简介 本书从学生的特点出发,在充分了解了他们对知识的认知状况的前提下,以任务驱动,承前启后.步步深入的方式进行程序设计主要思想的描述.程序设计的实现以C语言为载体,任务以活动的方式进行,有任务描述 ...
- c语言程序案例教程(第2版)答案,C语言案例教程(第2版)(附光盘)
摘要: 本书为C语言程序设计课的试用教材,是结合中等职业教育的教学实际编写的,适合各中职学校计算机应用专业教学使用. 本书针对中等职业学校计算机应用专业教学实际,在C语言的语法规则说明上追求精练,在编 ...
- c语言程序设计教程2014版,C语言程序设计案例教程(第3版)
领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...
最新文章
- linux shell unlink,linux shell中,unlink和rm命令有什么区别
- 算法与数据结构(part2)--Python内置类型性能分析
- 移植Linux3.4.2版本内核到mini2440
- poj3335 半平面交
- windows xp 下的putty不能使用小键盘的问题
- 时速云入选2018中国企业服务创新成长50强
- LLVM Bitcode File Format - LLVM 比特流文件格式
- 机器学习基础(五十四)—— 支持向量机(SVM)
- Maple 教程(一)---初认识
- 用跨进程子类化技术实现对其它进程消息的拦载
- acmer退役小作文
- Android RenRen SDK 接入教程
- 当我们遇到100亿次请求?该如何设计后端架构?
- 【从0开始自学C/C++并在2023年10月之前找到一份工作之C++基础】
- java毕业设计创新创业竞赛管理系统2021Mybatis+系统+数据库+调试部署
- 3dsmax小车模型
- dart语言基础_变量声明
- BetaFlight模块设计之三十三:Pid模块分析
- Python必学知识
- 使用HM NIS Edit将pyinstaller后的exe打包成安装包
热门文章
- HDU 1544 Palindromes(回文子串)
- Android系统Surface机制的SurfaceFlinger服务的线程模型分析
- nginx同IP、同端口、不同域名时的转发
- 常用地理数据平台及环境数据资源 (GIS)
- R语言报错:Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, : n行没有x元素
- python 项目构建工具_python的构建工具setup.py
- linux脚本控制,linux控制脚本
- cdh 安装_CDH 中为spark 安装 python3
- 15.QT布局管理及示例
- 在Windows下使用make命令