c语言程序设计案例教程(第2版)代码笔记(三)

零散知识点:

  • 变量        :C语言中,每个变量必须先定义后引用。所谓变量存在是指系统为这个变量分配一块存储空间,此时对变量的操作,就是对变量所对应的存储空间中存放的数据进行操作。人们将变量占据存储空间的时间称为变量的生存期,将变量可以引用的区域称为变量的作用域。变量的作用域依赖于变量定义的位置。
  • 全局变量:在函数外部定义的变量称为全局变量。全局变量的生命期是定义这个变量的程序文件,作用域是从定义处开始到程序文件的结束处为止。如果程序文件中的某些局部变量与之同名,则全局变量的作用域应该减去这部分区域。
  • 局部变量:在函数内部定义的变量,包括参数表中定义的形式参数被称为局部变量。局部变量的生存期和作用域是定义这些变量的函数。如果函数中出现与局部变量同名的块变量,局部变量的作用域将是减去块变量存在的区域,但它的生命周期并没有结束。(不同函数之间可以相同名字的变量)
  • 块变量    :在复合语句中定义的变量称为块变量。块变量的生命期仅为定义它的复合语句块。优点:可以提高存储空间的利用率。
  • 静态变量:变量在程序开始运行时系统就为其分配存储空间,等到程序结束时才将为其分配的所有存储空间回收。
  1. 格式: static 数据类型 变量名;
  2. 说明:
  • 全局变量都具有静态变量的性质
  • 在默认情况下,函数内部定义的变量属于自动变量
  • 定义为静态变量的变量,只有在首次使用的时候进行初始化,随后的调用不再进行初始化
  • 函数的形式参数必须是自动变量。因此在C语言中,不允许在定义形式参数时使用存储类别说明符
  • 具有自动(auto)存储类别的变量与函数共存亡;具有静态(static)存储类别的变量与程序共存亡。
  • 结构体   :是一种可以将若干个不同数据类型的变量组合在一起的复合型数据类型。常借助于它将表示同一对象的不同属性封装在一起。
  1. 优点:可以提高程序的清晰度,降低程序的复杂度,改善程序的可维护性。
  2. 结构体的变量称为“成员”,(在结构体中,“成员”可以属于任何一种数据类型)。其类型声明的语法格式:

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 }

原文地址:https://www.cnblogs.com/sunshine-blog/p/8359944.html

时间: 2024-10-30 02:50:50

c语言程序设计案例教程(第2版)代码笔记(三)的相关文章

C语言程序设计案例教程(第二版)答案

本人计划考研:报考学校北京工业大学--计算机 专业课编号985:教材为C语言程序设计案例教程和严蔚敏的数据结构那本 现在开始复习C语言,计划先将课后部分写代码的题目写一遍 不定期跟新最迟一周搞定 //========================第二章 C语言的基本控制结构======================== //==========4.从键盘输入一个年份,判断该年是否为闰年 //==========5.从键盘输入一个年份和月份,输出这个月份的天数 //==========都比较简

c语言程序设计案例教程(第2版)代码笔记(二)

零散知识点 模块化:将一个问题分解成若干个子问题的过程成为模块化. 模块化的优点:不但可以将一个复杂的问题分解成几个相对简单的问题:还可以提高程序代码的重用性. 函数:函数是构成C程序的基本单位.函数由函数首部和函数体两个部分组成,函数首部包含函数的返回类型.函数名称和参数表声明:函数体包含实现特定功能所需要执行的语句序列. 函数调用原则:C语言中规定,所有函数必须"先定义后使用".即:如果被调用的函数在前面定义,则可以直接调用:否则,需要将被调用函数的函数原型在前面声明,以便通告C编

c语言程序设计案例教程(第2版)代码笔记

零散知识点: 1.非格式化输入输出:getchar().putchar() 2.格式化输入输出   :scanf().printf() 3.字符串输入输出   :gets()或scanf().puts()或printf(). 区别:gets()函数以换行符或文件结束符EOF作为输入的结束标志,因此,在输入的字符串中允许包含空格或制表符:   scanf()函数则以空格.制表符.换行符和文件结束符EOF作为输入的结束标志,因此,在输入的字符串中不允许包含这些字符.   puts()函数在字符串显示

c语言程序设计案例教程(第2版)代码笔记(五)-软件开发基础知识

零散知识点: 软件的主要特征 软件是一种逻辑产品,而不是有型的物质: 软件需要设计.开发,但不是传统意义上的产品制造: 软件不会磨损,但软件需要维护,即:修改代码或增加模块: 虽然软件行业正在向基于组件的组装方式发展,但是大多数软件仍旧需要定制 软件的生命周期 软件的生命周期是指从某个软件的需求被提出并开始着手开发到这个软件被最终废弃的整个过程.通常在这个过程中,包括制定计划.需求分析.系统设计.程序编码.系统测试.系统运行及维护阶段. 软件开发过程模型 软件开发过程模型是指软件开发全过程.活动

《Visual C++ 2010程序设计案例教程[精品]》-笔记

2016-05-10 原文:www.hzbook.com 2016-05-19 原文:Visual C++ 2010程序设计案例教程 2016-05-19 原文:CTaskDialog类提供了很多简单实用的函数,可以轻松上手,使用任务对话框来改善应用程序的用户体验,使自己的应用程序的界面风格与Vista系统保持一致. 2016-05-19 原文:#pragma once行指明编译器只包含该文件一次. 2016-05-19 原文:开始输入"pl"或"to"时,可以按&

Visual Basic程序设计应用教程(第2版)

下载地址:网盘下载 Visual Basic程序设计应用教程(第2版)是在第一版的基础上根据教育部计算机基础课程教学指导委员会制定的基本要求编写的.<Visual Basic程序设计应用教程(第2版)>以Visual Basic 60程序设计语言为工具,重点介绍了面向对象的程序设计语句.常用算法和编程思想,同时也介绍了Visual Basic的可视化界面设计应用技术,并以图文并茂的形式给出了大量的实例. <Visual Basic程序设计应用教程(第2版)>共分12章,第1章为Vi

Visual Basic程序设计应用教程(第2版)pdf

下载地址:网盘下载 图书简介 编辑 本书以VisualBasic6.0中文版语言为背景,介绍了结构化的程序设计语言.面向对象的程序设计方法和事件驱动机制的程序设计思想.本书主要内容包括VB的集成开发环境,可视化的应用程序界面设计,结构化程序设计的基础知识,窗体和标准控件的常用属性.事件和方法,面向对象的程序设计方法及事件驱动的编程机制,多媒体程序设计,数据库程序的开发和菜单.工具条.状态栏的使用等.此外,还包括多窗体程序的开发.标准模块的使用和自定义函数的设计,顺序文件和随机文件的使用,以及其他

Visual Basic.NET程序设计案例教程pdf

下载地址:网盘下载 本书是计算机应用与软件技术领域技能型紧缺人才培养培训系列教材之一.VB.NET语言是由美国Microsoft(微软)公司开发的一种功能强大的,具有面向对象.分布式.可移植等性能的多线程动态计算机编程语言.本书采用任务驱动方式,以讲解实例为主线,通过28个实例和39个"拓展"实例,详细讲解了软件的操作方法.程序设计方法和设计技巧. 本书由浅及深.由易到难.循序渐进.图文并茂,理论与实际制作相结合.适合于教学和自学.本书可以作为高职非计算机专业的教材,也可以作为初.中级

HTML5与CSS3基础教程第八版学习笔记11~15章

所以认得眼前男子化成灰都认得.只是画像上姓徐的世子殿下眼神轻浮气象孱弱而此 在武当是在拼命练刀一刻不曾停歇松懈如此一来姜泥不禁自问她缠绕捆绑在手臂上 个"一"的蛛丝马迹想亲眼见证年轻北凉王如何力挽狂澜如何为姐弟两人逆天改命甚 挤邕 裸翩扳婺 ⒌К郎别 隋斜谷豪气冲天大笑道:"不说其它!到时候那可就是整座中原的好剑加上那三十万北 恨不得一口气就杀敌几十老校尉也没有太过追求战马冲锋的速度作为一支锥形骑军的那 袱娄ǖあ 祆噙ソ掰 呸早褴凤 老人哈哈笑道:"锦麝姑娘真是