21考研看郝斌老师的数据结构,发现有些C语言的知识已经忘了,顺便复习一下C语言。
一 、C语言概述
1 、为什么学C语言
1.C语言的起源和发展
2.C的特点:
优点:代码量小,速度快,功能强大
缺点:危险性高,开发周期长,可移植性不强
3.C的应用领域
4.C的重要性
2、举例子
32个关键字:(由系统定义,不能重作其他定义)
auto | break | case | char | const | continue | default | do |
double | else | enum | extren | float | for | goto | if |
int | long | register | return | short | signed | sizeof | static |
struct | switch | typedef | unsigned | union | void | wolatile | while |
一个简单的一元二次方程
#include<stdio.h>
#include<math.h>
int main(void)
{
int a=1;//=表示赋值
int b=2;
int c=1;
float x1;
float x2;
float delta;
delta=b*b-4*a*c;
if(delta>0)
{
x1=(-b+ sqrt(delta))/(2*a);
x2=(-b- sqrt(delta))/(2*a);
printf("该一元二次方程由两个解,x1=%f,x2=%f\n",x1,x2);
}
else if(delta==0){
x1=(-b)/(2*a);
x2=x1;
printf("该方程由唯一解,x1=x2=%f",x1);
}
else{
printf("无解");
}
return 0;
}
二、C语言编程预备知识
1、CPU,内存条,硬盘,显卡,主板,显示器之间的关系
以电影播放为例:文件存储于硬盘中,操作系统将文件中的数据调用到内存条中(因为CPU不能直接处理硬盘中的数据),CPU处理内存条中的文件,处理后的结果是将部分数据变为声音,部分数据变为图像。声音数据发送给声卡,图像通过显卡在显示器上显示。主板组织以上设备。
2、HelloWord程序如何运行起来的
操作系统调用cpu执行.exe文件
3、什么是数据类型
- 基本类型数据
整数 | 浮点数 | 字符 |
---|---|---|
整型 int 4字节 | 单精度浮点数 float 4字节 | char 1字节 |
长整型 long int 8字节 | 双精度浮点数 double 8字节 | |
短整型 short int 2字节 |
- 复合类型数据(把基本类型复合在一起)
结构体
枚举
共用体
4、什么是变量
给变量赋的值存放在内存中,程序终止后所其占空间被释放掉
变量的本质是内存中的一段存储空间
5、cpu内存条 vc++6.0 操作系统之间的关系
vc++发出请求,操作系统为其分配空间,vc++将变量和操作系统中对应的内存中的地址编号产生一一对应的关系,最终运行起程序
6、变量为什么必须初始化
所谓初始化就是赋值的意思
垃圾数据:当某软件运行完后,操作系统回收该内存空间(并不清空该内存空间中遗留下来的数据),以便再次分配给其他软件使用。即软件使用过后的残留数据被称为垃圾数据。
未初始化时,变量中是遗留垃圾值,由编译软件加上填充字的无意义值
7、如何定义变量
数据类型 变量名 = 要赋的值;
等价于:
数据类型 变量名;
变量名=要赋的值;
int i=3;//等价于int i; i=3;
int i,j=3;//等价于int i;int j ; j=3;
8、什么是进制
- 什么叫进制
N进制就是逢N进一 - 计算机只识别二进制
- 为了实际需要建立了八进制和十六进制
- C语言规定八进制前加0,十六进制前加0x或0X,十进制前什么都不加
- 在汇编语言中,在数字后面加B表示二进制数,加O表示八进制数,加D表示十进制数,加H表示十六进制数
int i=77;
printf("十六进制i=%x\n",i);//4d
printf("八进制i=%o\n",i);//115
/*
printf 中 %d表示以十进制输出
%x 或 %X表示以十六进制输出
%o 表示以八进制输出
*/
不同进制所代表的数值本质上是同一个东西
9、常量在C语言中是如何表示的
- 整数
十进制:
十六进制:前面加0x或0X
八进制:前面加0 - 浮点数
传统写法
科学计数法
float x=3.7788662e-2;
printf("%f",x);//0.037789
- 字符
单个字符用单引号括起来
字符串用双引号括起来
10、常量以什么样的二进制代码存储在计算机中
整数是以补码形式转化为二进制代码存储在计算机中的
实数是以IEEE754标准转化为二进制代码存储在计算机中的
字符的本质实际也是与整数的存储方式相同
- 浮点数的存储所带来的问题:
float和double都不能保证可以精确的存储一个小数
举例:
有一个浮点型变量x,如何判断x的值是否为0
if(|x-0.000001|<=0.000001)
是0
else
不是0
为什么循环中更新的变量不能定义成浮点型:浮点型非准确存储
11、代码规范化
- 成对写括号
- 地位相等不需要缩进,代码属于另一部分代码的内部代码就需要缩进。
- 换行
- if,while,for等为了与函数区分,在其与括号之间加空格
12、什么是字节
字节就是存储数据的单位,并且是硬件所能访问的最小单位。
1字节=8位/8bit
1K = 1024字节
1M = 1024K
1G = 1024M
13、不同类型数据之间相互赋值的问题
补码 = 原码取反加一
14、什么是ASCII
char ch='A';
//char ch1="AB";// error AB是字符串,不能把字符串赋给单个字符
//char ch2="A";// error 字符串默认添加\0
//char ch='B';//error 重复定义
ch = 'C';
printf("%c\n",ch);//输出C
char ch = 'A';
printf("%d\n",ch);//65
ASCII不是一个值,而是一种规定
ASCII规定了不同的字符使用哪个整数值去表示
它规定了’A’–65,‘a’–97,‘0’–48