平方根函数sqrt
调用形式为sqrt(x)可以是整型或者是浮点型,但是其值必须大于等于0,自动转换为double型参与运算,函数的返回值是double型。
三角函数的调用形式为函数本身表达式
第一章 程序设计概述
1.1基本概念
所谓程序就是事情发展先后的顺序。N.wirth认为程序=算法+数据结构(以功能为中心的设计思想)
但是根据用户习惯发现程序应该是以数据为中心 程序=数据结构+算法 简单对调之后不改变实际意义,只是中心思想发生了转变。
调试 是指通过一定的方法对程序改错。
程序错误分为 编译期错误(语法错误)连接期错误(连接对象不存在) 运行期错误(逻辑错误)
测试 除了验证程序错误还有测试功能能否达到规定要求。
程序设计应该遵守的编码规则
1采用规范化的源代码书写格式
2不吝使用注释
3选用顾名思义的标示符
4用简明的方法表达算法
5提供友好的UI界面
1.2C语言概述
C语言起源于BCPL和B语言,
具有高级语言的表达能力,又具有低级语言的与硬件相关的机器处理能力。
结构化程序设计语言(顺序,选择,循环)
函数是构成C的基本构件(不允许嵌套定义函数,允许嵌套与递归调用函数,允许在分程序和符合语句中声明,初始化数据对象[S1] )
C语言的优点有三个:
代码量小。
运行速度快。
功能强大。(指针)
C语言的缺点有三个:
危险性高。(包容性强,只要你错的不是很离谱,我就认为你有特殊含义)
开发周期长。(因为是面向过程的语言,写大项目容易崩溃)
可移植性不强。(主要是针对JAVA说的,JAVA太强了。JAVA在哪个机器都可以运行,而且结果一模一样,C语言不一定在哪个机器都能运行,即使运行结果不一定一样)
C程序的编码默认编码风格
1关键字小写
2#define定义的宏名用大写
3每个语句占一行
4用缩进对齐的方式反应程序的不同结构层次
5编译预处理命令行,外部数据定义,函数定义之间,函数体内的数据声明和语句序列空一行书写。
6括住函数体的括号,独自占一行。相互对齐.
7具有独立意义的对象里不能查入空格
8不能拆分具有独立意义的语句。(拆分位置/)
1.3TC2.0的介绍和使用
没有安装,先跳过
第二章 数据的表示,运算与基本语句
2.1基本数据类型
C语言预定义符号
1标识数据类型及语句关键字
2运算符
3保留字(下划线)
C语言标识符(由数字 字母 下划线)
1首字母必须是字母或下划线
2不能使用关键字作为标识符
3避免使用2个下划线作为开始标识符(保留字有特殊用途,误用保留字会导致误判)
4不能使用函数名做标识符(导致意义覆盖)
5见名知义提高有可读性
6使用相对短的标识符(便于移植)
7区分大小写(C语言对大小写字母敏感)
常量 运行过程中其值已知且不能改变量
程序设计中提倡多用符号常量,少用直接常量
定义一种常量的方式
整型数据和整型变量另附表格
整型变量 (程序中使用的变量必须先声明后使用,且在函数体或代码块中变量的声明都必须集中在函数体或代码块开始的部分,在他们之前不允许有非声明性语句)
声明 (是c语言当中的一种非计算功能的语句。不能前缀语句标号。)
C 语言程序可以在函数体内和函数之外声明变量。
之外声明的变量叫做外部变量或者是全局变量。这种变量在编译阶段分配储存空间,程序运行期间一直有效,为程序中函数公用
程序中所有的外部标识符都不可以同名(函数名也是外部标识符),但在编译阶段不能发现同名错误,只能在连接装配阶段发现
在函数体内声明的变量是局部变量,只在函数内有效,对其他函数不可见。只有在该函数被调用的时候才会分配存储空间,退出函数时取消定义(static静态变量具有全局生命期)
变量初始化 首次向变量中储存数值,称为变量初始化
数据类型 变量名=初始化值
需注意 外部变量和static型变量的初始值必须为常量或者是常量表达式
局部变量的初始化值可以是常量,符号常量,变量名,函数调用及由他们组成的表达式,如果含有变量名,必须是在这之前已经指定了初始化值得变量名
无定义 有些变量不带初始化值,系统也不会自动置初值,此时称变量的值无定义
浮点型数据
浮点数是带小数的十进制类型数据(浮点数在计算机中总是近似的表示,数据近似必然会导致数据的精度,计算误差和溢出问题,浮点数时有符号书=数,在计算机中以二进制指数表示)
浮点数的效率很低,如果只是整数计算,那么就避免使用浮点数
浮点数直接量的书写
十进制小数形式
1整数前书写+
2整数部分为0或小数部分为0可以省略不写(两者都为0时不可省略)
3必须有小数点
4数字中间不能夹有空格
十进制指数形式
±I.F*10^±C
1 I,F分别为指数的小数部分和整数部分,遵循小数规则
2书写时用E/e,代表底数10
3C是阶码,必须为整型直接量不能省略
4阶码不能缺少,不能为浮点数
字符型数据
定义:字符型数据是c语言中表示字母,数字,标点符号,特殊符号,控制等可显示与不可显示字符的数据类型。
字符集:ASCII码(128)
字符直接量:可显示字符的直接量表示,用单引号分割
不可显示字符的直接量(转义序列)
有符号整形数(-128——127)
无符号整形数(0——255)
字符型变量
用来储存一个一个字符型数据,声明使用Char类型关键字
初始化值可以是字符型数据,也可以是任意类型的整形数据
Char c 定义一个Char变量
Char ‘c’ 定义一个Char常量
字符串数据
字符串直接量:用双引号括起来的0个或多个任何可以表示的字符
(双引号和反斜杠有特殊作用,在字符串直接量中使用他们的转义序列。)
字符串直接量的存储
程序中出现的字符串直接量即使是完全相同都是不同的字符串。(在计算字符串长度时,不计入字符串结束标志‘\0’,但计算字符串占用的储存空间大小要包括‘\0’字符。因此空字符串的长度为0,但是占用存储空间为1.)
当键盘上输入一个字符串时,只需要直接输入字符串包含的字符,不要输入引号(否则作为字符串中的一个字符),不能通过输入字符的转义序列替代其字符的输入。
‘\0’ 字符串输出结束标志
字符型数据和字符串数据的区别
1书写形式 字符型数据是单引号,字符串数据是双引号
2字符型数据是整型量,字符串数据是指针型
3字符型数据需要一个字节。字符串数据需要2个字节。
4字符型数据有对应的字符型变量,字符串数据没有对应的字符串变量。
枚举型数据
定义:将某问题所有可能的取值都以枚举常量的方式列举出来而自行定义(该变量只能只能存储该枚举数据类型定义时所列举的枚举符号常量值。)
枚举类型一般形式
enum 枚举类型名{枚举符号常量列表};
一些C编译系统允许将整型数直接赋给枚举型变量,而大多数C编译系统都要求先把整形数据强制转换成枚举型后再赋给枚举型变量,但不要求赋给枚举型变量的值是枚举符号常量表中列出的值。
2.2运算符和表达式
C99运算符的优先级与结合性
运算符运算功能优先级结合方向
( )圆括号1←
[ ]下标运算
->、.结构成员运算
!逻辑非运算2←
~位非运算
++增1运算
–减1运算
-反号运算
(类型)强制类型转换
*间接引用运算
&求地址运算
sizeof求存储空间大小
*乘法运算3→
/除法运算
%求余运算
+加法运算4→
-减法运算
<<左移运算5→
>>右移运算
<小于比较6→
<=小于等于比较
>大于比较
>=大于等于比较
==等于比较7→
!=不等于比较
&按位与运算8→
^按位异或运算9→
|按位或运算10→
&&逻辑与运算11→
||逻辑或运算12→
? :条件运算13←
=
+=、-=、*=、/=、%=
>>=、<<=
&=、^= 、|=赋值运算、
组合赋值运算14←
,顺序求值/逗号运算15→
1在进行四则算术运算的时候,不能受代数书写的影响。加减乘除符号不能省略。
2反号运算 计算无符号数的相反数用2的N次方减去他的值。(N是内存中储存无符号数的比特数)
3取余运算(操作数必须是整数,非整数求余是非法运算,可以用强制转换在计算)
4算数表达式(乘除不可省,只能用圆括号来改变运算顺序)
5算数表达式中的数据类型提升
○表达式中的short char型操作数总被提升为 int
○float提升依赖于编译系统
○类型提升是将参与运算的两个操作数中较低类型直接提升到较高类型不是逐级进行
○数据类型提升是由系统自动进行,只是产生了一个临时的数参与运算,不改变操作数本身
○任何一个混合型数值表达式的类型除强制转换运算结果的类型外,通常是该表达式中具有最高数据级别操作数的类型。
按c语言中的算数规则来看,一些简单的运算可能无法得到正确的结果。由于运算结果类型,数据的表示范围,有效数字位数等问题需要自行解决
基本语句
1表达式语句(在任何一个表达式后面加上分号,构成的语句)
2复合语句({}括起来的代码块)
3空语句(只有一个分号的语句)
虽然空语句什么都不做,但在语法上是合法的,并且在某些场合必用,比如用空语句实现死循环。
常用数值运算库函数
数值库函数(头文件包含math.h)
求绝对值函数(abs,fabs)
abs该函数只需要一个参数,可以是整型也可以是浮点型。其值总被自动转换为Int型再求绝对值, abs型函数的返回值是Int
fabs该函数只需要一个参数,可以是整型也可以是浮点型。其值总被自动转换为double型再求绝对值fabs型函数的返回值是double型。
计算XY 的函数pow
调用形式为pow(x,y),需要给出2个参数,可以是整型或者是浮点型,自动转换为double型参与运算, 函数的返回值是double型。
当X为负数时,y必须为整数,或者小数点是0的浮点数
计算ex 函数exp
调用形式为exp(X)需要给出1个参数,可以是整型或者是浮点型,自动转换为double型参与运算,函数的返回值是double型。
平方根函数sqrt
调用形式为sqrt(x)可以是整型或者是浮点型,但是其值必须大于等于0,自动转换为double型参与运算,函数的返回值是double型。
三角函数的调用形式为函数本身表达式
常见的输出形式
%d整型输出,
%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,(备注:浮点数是不能定义如的精度的,所以“%6.2f”这种写法是“错误的”!!!)
%e以指数形式输出实数。
%g根据大小自动选f格式或e格式,且不输出无意义的零。