C语言变量的作用域
一、变量的作用域
作用域是程序中定义的变量存在(或生效)的区域,超过该区域变量就不能被访问。C语言中有四种地方可以定义变量。
1)在所有函数外部定义的是全局变量。
2)在头文件中定义的是全局变量。
3)在函数或语句块内部定义的是局部变量。
4)函数的参数是该函数的局部变量。
顺便解释一下,函数的声明和函数的定义是两个概念,但是,变量的定义和变量的声明是同一概念,或定义变量和声明变量也行,取决于程序员的表达习惯。
二、全局变量
全局变量是定义在函数外部,通常是在程序的顶部(其它地方也可以)。全局变量在整个程序生命周期内都是有效的,在定义位置之后的任意函数中都能访问。
全局变量在主程序退出时由系统收回内存空间。
示例(book37.c)
1234567891011121314151617181920212223/* * 程序名:book37.c,此程序用于演示全局变量的作用域 * 作者:C语言技术网(www.freecplus.net) 日期:20190525*/#include <stdio.h> double pi=3.141592; // 全局变量声明void fun ...
C语言函数
一、函数的概念
1、函数的概念
每个C程序都至少有一个函数,即main主函数 ,如果程序的任务比较简单,全部的代码都写在main函数中,但是,在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main函数中,main函数体将非常庞大臃肿,代码重复。
我们可以把程序的任务分工到不同的子函数中,main更关心业务逻辑和处理流程,需要执行某任务的时候,调用子函数就可以了。
2、函数的分类
为了方使理解,我们把函数分为库函数和自定义函数(子函数)。
库函数是C语言提供的,实现了某些基本的功能,例如scanf、printf,在程序中可以直接使用。
自定义函数是程序员为了完成某项任务而编写的函数,目的是为了实现某项的功能或让主程序更简洁。自定义函数在使用之前,必须先声明和定义。
二、自定义函数的声明
自定义函数的声明包括了返回值、函数名和参数列表。有些程序员把函数声明说成是函数原型,只是用词不同,意思是一样的。
C语言中的声明函数的语法如下:
1return_type function_name( parameter list );
1)返回值的数据类型return_type:函 ...
C语言数组
先来看一个需求,超女选秀一共有5人参加,输入每位超女的体重并保存在变量中,最后计算出超女的的平均体重。
示例(book40.c)
123456789101112131415161718192021222324/* * 程序名:book40.c,此程序用于演示没有数组的情况下的多个变量求和 * 作者:C语言技术网(www.freecplus.net) 日期:20190525*/#include <stdio.h>int main(){ double aa,bb,cc,dd,ee; // 定义5个变量存放5名超女的体重 aa=bb=cc=dd=ee=0; printf("请输入第1名超女的体重(公斤):"); scanf("%lf",&aa); printf("请输入第2名超女的体重(公斤):"); scanf("%lf",&bb); printf("请输入第3名超女的体重(公斤):"); scanf("%lf" ...
C语言循环结构
一、程序结构
在C语言程序中,一共有三种程序结构:顺序结构、选择结构(if和switch分支结构)、循环结构;
1)顺序结构
从头到尾一句接着一句的执行下去,直到执行完最后一句;
2)选择结构
执行到某个节点时,根据判断条件的结果来决定执行分支的方向,由if和switch实现。
3)循环结构
循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,判断循环的条件,来决定是否继续执行循环体,由while、do while和for来实现。
二、while循环
while循环的一般形式为:
1234while (表达式){ 语句块}
意思是,先计算表达式的值,当值为真时(非0即是真),执行语句块,执行完语句块后,回到循环首部再次计算表达式的值,如果为真,又执行一次语句块……,这个过程会一直重复,直到表达式的值为假,就不再执行语句块。
循环也常常出现在我们的生活中,以超女选秀为例。
123456789// 超女已准备出场while (是否有未出场的超女){ // 判断超女的年龄 // 判断超女的身材 // 判断超女的颜值 // 送往后宫} ...
C语言switch分支结构
一、if else的不足
C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else处理会不太方便,而且容易出现 if else配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的中文表示。
12345678910111213141516if (day == 0) printf("星期天\n");else if (day == 1) printf("星期一\n");else if (day == 2) printf("星期二\n");else if (day == 3) printf("星期三\n");else if (day == 4) printf("星期四\n");else if (day == 5) printf("星期五\n");else if (day == 6) printf("星期六\n");else printf("输入错误。\n");
以上代码摘自bo ...
C语言if分支结构
一、关系运算符
在讲if条件分支结构之前,先了解关系运算(Relational
Operators),用于判断条件,决定程序的流程。
关系
数学中的表示
C语言的表示
小于
<
<
小于等于
≤
<=
大于
>
>
大于等于
≥
>=
等于
=
==
不等于
≠
!=
C语言的基本数据类型有char、int、double,我们暂时认为只有char和int适用于上述关系运算符,double和字符串(字符数组)的关系运算以后再讨论。
注意了:
1)“=”是赋值,“==”才是判断两个数是否相等,不能混用。
2)C语言没有“之间”、“中间”、“之内”或“在某范围内”的关系运算符,例如年龄在25-30岁之间,只能表达为:年龄大于等于25岁 并且 年龄小于等于30岁。
二、条件判断
在我们的生活中,不是全部的事情都按顺序进行的,需要根据客观条件做出判断和选择,例如超女选秀,限制了16岁才能参加,16岁以下是不能参加的。这时候程序就需要做出判断,判断报名者的年龄是否满16岁,并给出提示。
在C语言中,使用if和else关 ...
C语言运算符
一、C语言的运算符
C语言有六种运算符,如下:
1)算术运算符;
2)赋值运算符;
3)sizeof运算符;
4)关系运算符;
5)逻辑运算符;
6)位运算符。
本章将只介绍算术运算符、赋值运算符和sizeof运算符,关系运算符和逻辑运算符放在其它章节中介绍,位运算符极少使用,了解即可,不深入学习。
二、算术运算符
下表显示了 C 语言支持的所有算术运算符。假设变量 A 的值为 18,变量 B 的值为5,则:
运算符
描述
实例
+
两个数相加
A+B 将得到 23
-
一个数减另一个数
A-B 将得到 13
*
两个数相乘
A*B 将得到 90
/
分子除以分母
A/B 将得到 3.6
%
余数运算符,整除后的余数
B%A 将得到 3
++
自增运算符,整数值增加 1
A++ 将得到 19
–
自减运算符,整数值减少 1
A-- 将得到 17
示例(book15.c)
1234567891011121314151617181920212223242526272829/* * 程序名:book15.c,此程序演示算术运算符的使用。 * ...
C语言输入和输出
一、数据输入
编写程序的主要目的就是为了处理数据。数据从哪里来?数据的来源有很多种方式,如从磁盘文件中读取数据、从数据库中读取数据、从网页中抓取数据等,还有一种原始的方式就是从键盘输入数据。
在C语言中,有三个函数可以从键盘获得用户输入。
getchar:输入单个字符,保存到字符变量中。
gets:输入一行数据,保存到字符串变量中。
scanf:格式化输入函数,一次可以输入多个数据,保存到多个变量中。
二、数据输出
在C语言中,有三个函数可以把数据输出到屏幕。
putchar:输出单个字符。
puts:输出字符串。
printf:格式化输出函数,可输出常量、变量等。
三、断章取义
三十年前,个人电脑还不流行的时候,软件主要用C语言编写,包括操作界面,数据的输入和输出函数都很重要。现在,数据的输入和展示由网页和APP等软件去完成,C程序主要用于数据处理和网络通信,程序运行在后台,没有操作界面。所以,getchar、gets、scanf这几个函数几乎不用。
各位是初学者,出于教学的需要,采用scanf从键盘输入数据,便于演示程序的功能,所以我们只需要学习scanf函数的简单用法即可 ...
C语言常量、变量和关键字
一、一切都是数据
对计算机来说,图片、文字、音乐、视频等一切都是数据,在计算机中以二进制的0和1存储。
我们编写程序的目的就是告诉计算机如何输入、处理、传输、存储和展示数据。
数据分为静态数据和动态数据。
1、静态数据
永久性的数据,存储在永久的介质中,如硬盘、磁带、U盘、光盘等,只要介质没坏数据都是存在的,电脑关机重启后依然存在。
2、动态数据(临时数据)
程序在运行过程中,动态产生的的临时数据,一般存储在内存中,程序退出或者电脑关机时这些临时数据会被清除。
为什么不把动态数据存放到硬盘?因为计算机访问内存的速度比访问硬盘快很多。硬盘的存储空间比内存大,价格比内存便宜。
二、常量
常量或常数,表示固定不变的数据,是具体的数据。
1)字符常量,如’6’,‘a’,‘F’,不能是中文,例如’女’,因为一个汉字和全角的符号占两个字节(GBK编码)。
2)整型常量,如6,27,-299。
3)浮点型常量,如5.43,-2.3,5.67,6.0。
4)字符串常量,如"625",“女”,“www.freecplus.net”,“西施”。
三、变量
常量是数据,变量是 ...
C语言数据类型
一、基本类型
C语言的基本数据类型包括字符型、整数型、浮点型。
1、字符型(char)
描述单个字符(一个字节),用半角的单引号包含起来,如’a’、‘A’、‘1’、'$'等,键盘能输入的英文和半角的符号都是字符。
1234'A' 'B' 'C' ...... 'Z''a' 'b' 'c' ...... 'z''0' '1' '2' ...... '9''~' '!' '@' ...... '+'
中文的汉字和标点符号是两个字节(GBK编码),不能算一个字符,以下都是非法的。
1234'好''。'',''¥'
2、整型(int)
描述整数,整数在计算机上是 ...