day 1
part1.Linux系统相关操作
1)vim界面相关操作
打开终端: ctrl + alt + t
最大化: ctrl + alt + 回车
窗口模式: 点击"查看"—>点击"立即适应客户机"
放大字体: ctrl + shift + ‘+’
缩小字体: ctrl + ‘-’
终端命令行: linux@ubuntu:~$
linux:当前登录的用户
用户:
1.普通用户
可以有多个,也可以一个没有,名字没有限制
2.超级用户
有且只有一个,名字必须为root
su 用户名
切换当前登录的用户
exit
退出当前切换的用户
ubuntu: 操作系统名字
~: 当前所在目录,该目录为当前登录用户的家目录
家目录: 每个用户都拥有属于自己的家目录
2)Linux系统基本命令:
command [-options] arg1 arg2 arg3 …
1.ls
查看当前目录下所有的文件
蓝色:目录文件(文件夹)
绿色:拥有执行权限文件
红色:压缩文件
白色:普通文件(文本文件)
注意:
1.Linux系统中不以文件名后缀区分文件类型
2.Linux系统中文件名区分大小写
3.Linux系统中文件名不能包含空格字符
2.touch filename
创建空普通文件
3.rm filename
删除普通文件
4.mkdir dirname
创建空文件夹
5.rmdir dirname
删除空目录文件
6.rm -rf dirname
删除非空目录(谨慎使用)
7.cd dirname
进入dirname目录
cd … 进入当前目录的上一级目录
cd . 进入当前目录
cd / 进入根目录
cd ~ 进入当前登录用户的家目录
cd - 进入之前的目录
8.pwd
查看文件绝对路径
Linux系统目录结构:
文件系统满足树形结构
最顶层目录: / 根目录
/bin :存储二进制文件
/etc :存放配置文件
/mnt :存放挂载文件
/proc :存放进程相关文件
/boot :存放启动代码
/dev :存放设备文件
/lib :存放库文件
/var :存放日志文件
/root :root用户的家目录
/home :存放普通用户家目录的目录
linux -> /home/linux
zhangsan -> /home/zhangsan
lisi -> /home/lisi
相对路径: 登录用户不同,所在目录不同,相同路径具有不同的含义
file
./file
…/file
~/file
绝对路径: 登录用户不同,所在目录不同,相同路径具有相同含义
/home/linux/Desktop
9.cp 拷贝
cp filename dirname
将filename文件拷贝到dirname目录下
cp srcdirname dstdirname -rf
将srcdirname文件夹拷贝到dstdirname文件夹下
10.mv 移动
mv srcfilename dstdirname
将源文件移动到目的目录下
mv 修改文件名字
mv oldname newname
=======================================================
part2 VIM编辑器
1.vim filename.c
使用vim软件打开filename.c文件
2.vim默认进入底行模式
三种模式:
1.插入模式
2.底行模式(默认)
3.命令模式
底行模式 -> 插入模式 点击i键
插入模式 -> 底行模式 点击ESC键
底行模式 -> 命令模式 输入:
命令模式:
:w 只保存不退出
:q 只退出不保存
:wq 保存并且退出
:q! 不保存强制退出
:wq! 保存并且强制退出
3.gcc编译器
gcc filename.c
编译filename.c默认生成a.out
gcc filename.c -o filename
编译filename.c指定生成filename文件
注意: 编译时语法错误及逻辑错误
4.C语言开发步骤:
1.vi filename.c
2.点击i键
3.编写程序
4.点击ESC键
5.保存退出
6.gcc filename.c
7…/a.out
示例格式:
#include <stdio.h> //头文件
int main(void)
{
return 0;
}
=========================================================
day2
part1 Ubuntu中文配置
1.点击设置按钮
2.点击"System Setting"
3.点击"Language Support"
4.Keyboard input method system选择ibus
5.点击"close"
6.点击设置按钮
7.点击shutdown
8.点击restart
9.重启后按下"ctrl + 空格" 切换中/英文输入
======================================
part2 gcc编译器:
一、预处理
处理和#号相关代码
1.头文件
将头文件展开
2.宏定义
将宏定义实现替换
3.条件编译
满足条件的代码加入编译,不满足条件的代码
不加入编译
gcc -E filename.c -o filename.i
编译 :将C语言程序编译成汇编程序
gcc -S filename.c -o filename.s
汇编: 将汇编程序编译成二进制程序
gcc -c filename.c -o filename.o
链接 :将二进制程序链接成为一个可执行程序
gcc filename.c -o filename
======================================
part3 GDB调试器:
1.语法错误
2.逻辑错误
GDB调试步骤:
1.编译程序时加入-g选项
gcc filename.c -g
2.使用gdb调试工具调试a.out
gdb a.out
3.使用命令对程序完成调试:
**l**: 查看代码
**b 行号/函数**:设置断点 运行到 行号/函数 停止
**r**: 运行代码
**n**: 分步执行
**p 变量名**:查看变量中的值
**q**: 退出
**c**: 继续运行直到程序结束/断点处
**s**: 进入函数中调试
=========================================================
part4 vc++6.0集成开发环境
Vim 编辑器
Gcc 编译器
Gdb 调试器
终端 执行代码
=========================================================
C语言
32关键字
1.基本数据类型、运算符、表达式
2.常用输入输出函数
3.流程控制
4.数组
5.指针
6.函数
7.构造数据类型
8.指针高级
9.函数高级
10.内存管理
学习方法:
1.避免看代码
2.多敲多练
3.思考
低级语言:
1.执行速度快
2.开发效率低
3.移植性差
C语言:高级语言
C C++ Java C#
1.执行速度慢
2.开发效率高
3.移植性好
程序如何在计算机中运行:
程序存放在外存中,运行时加载到内存中,CPU与内存交互执行程序代码指令,操作程序中的变量
part5 进制转化:
表1:
进制 | 包含数字 | 操作 |
---|---|---|
二进制 | 0,1 | 逢二进一 |
八进制 | 0 1 2 3 4 5 6 7 | 逢八进一 |
十进制 | 0 1 2 3 4 5 6 7 8 9 | 逢十进一 |
十六进制 | 0 1 2 3 4 5 6 7 8 9 a b c d e f | 逢十六进一 |
表2:
进制转换 | 操作过程 |
---|---|
二进制、八进制、十六进制转化为十进制 | 对应位*对应位的权值再求和 |
十进制转化为二进制、八进制、十六进制 | 十进制数除以进制数,得到的余数逆序排列则得到对应进制的数 |
二进制与八进制、十六进制的转化: | 1位八进制数对应3位二进制数;1位十六进制数对应4位二进制数 |
=========================================================
part6 基本数据类型:
数据类型:操作数据对象的类型
基本数据类型:C语言能够直接识别的数据类型
构造数据类型:先自定义数据类型再操作该数据类型
基本数据类型:
1.整数类型:
整数类型中,每种数据类型均有有符号(signed)和无符号(unsigned)两种形式,默认为有符号类型(signed)
表一:无特殊标记为32位和64位编译器
数据类型名 | 字节空间大小 | 值域范围 |
---|---|---|
short int短整形 | 2 | signed: -2^15 - 2^15 -1即: -32768 - 32767 |
unsigned short int无符号短整形 | 2 | unsigned: 0 - 2^16 -1,即 0 - 65535 |
int 整形 | 4,16位:2 | signed: -2^31 - 2^31 - 1 |
unsigned int 无符号整形 | 4 | unsigned:0 - 2^32 -1 |
long 长整型 | 32位:4;64位:8 | signed: -2^31 - 2^31 - 1 |
long long | 8 | |
unsigned long | 32位:4;64位:8 | unsigned:0 - 2^32 -1 |
char 字符型 | 1 | signed:-128 - 127 |
unsigned char | 1 | unsigned: 0 - 255 |
string 字符串 | 32 | |
指针 | 32位:4 ;64位:8 | 0 - 2^32 -1,32位的寻址空间,32个bit及4字节,同理64位编辑器 |
ASCII码表: 规定字符和数字间的转化关系。
前32号元素不能在终端显示,32号之后的元素都可以在终端显示
'A':65
'a' :97
'\n':10
'0' :48
'\0':0
man 帮助手册
1.标准命令
2.系统调用
3.库函数
4.设备说明
5.文件格式
6.娱乐
7.杂项
8.管理员命令
2.浮点数类型:
表二:无特殊标记为32位和64位编译器
数据类型 | 字节空间大小 | 值域范围 |
---|---|---|
float 单精度浮点型 | 4 | 精确到小数点后6 - 7位有效数字 |
double 双精度浮点型 | 8 | 精确到小数点后15 - 16位有效数字 |
浮点数均为有符号类型,没有无符号类型的概念
注意:
浮点数类型存储和整数类型存储方法不一样,浮点数类型表示非常大的数或者非常小的数
判断float类型数与0是否相等
-0.000001 < f < 0.000001
3.缺省类型:
void 作为函数参数、返回值或修饰指针
4.逻辑类型:
数据类型 | 字节空间大小 | 值域范围 |
---|---|---|
bool 布尔值 | 1 | true :1;false:0 |
在C语言中非0值为逻辑真值,0值为逻辑假值
变量和常量:
常量:程序运行过程中间值不允许发生改变的量
1.整形常量(默认为int类型)
100 十进制常量
0100 八进制常量
0x100 十六进制常量
123l 长整型
100L 长整型
123ul 无符号长整型
123UL 无符号长整型
2.浮点型常量(默认为double类型)
3.1415 double
3.1415f float类型
3.1415e-10
3.1415E10
3.字符常量
‘A’ 65 char
‘#’
‘a’ 97 char
‘0’ 48
大写字母变小写: +32
小写字母变大写: -32
字符型数字变整形数字: - '0’
===========================================================================================================
day3
常量
1.字符常量(默认char类型)
eg: ‘A’, ‘B’ ,‘C’,‘a’, ‘b’ ,‘c’,’#’ ,’~’ ,’;’,‘1’, ‘2’, ‘3’, ‘4’
‘\n’:换行符;
‘\b’:退格符;
‘\t’:横向制表符;
‘\v’:纵向制表符;
‘\r’:回车符;
‘\’:\字符 ;
注意下列字符与数字的区别
‘0’:字符0;
‘\0’:字符\0;
0:数字0;
‘0’ != ‘\0’;
‘0’ != 0;
‘\0’ == 0;
‘\123’:八进制123对应的字符
‘\x12’:十六进制12对应的字符
字符串常量(默认char *类型)
eg:“ABC”
字符串结尾有一个用来标识结尾的’\0’字符
“12\0”
“123\123”
“123\086”
“123\086”
“A” ‘A’ + ‘\0’
‘A’ ‘A’
2.标识常量
#define M 50
宏定义可以是小写,但一般都是用大写
define宏定义只是代码的替换,中间不进行任何数据计算的操作
宏定义能加括号就加括号,不要吝啬小括号
2 变量
变量:在程序运行过程当中,值允许发生改变的量
1.变量的定义:存储类型 数据类型 变量名;
存储类型:
auto(默认) 自动型变量/局部变量
register 寄存器变量
extern 外部变量
static 静态变量
数据类型:
基本数据类型:int short float double long char bool
构造数据类型:struct union enum
变量名:
1.可以由字母、数字、下划线构成,但不能以数字开头
2.变量名不允许与C语言关键字重名
3.变量名最好不要与库函数重名
见名知意
eg:int iTmpCnt tmp_cnt
unsigned int uiMaxNum max_num
long lMinNum min_num
unsignd long ulAvgScore avg_score
存储类型:
auto:
1.将数据存放在栈区中,局部变量作用域在离定义该变量最近的大括号之内
2.执行到定义变量时为变量分配内存空间
3.超过变量作用域回收变量空间
register:
1.将数据存放在寄存器中,如果寄存器满,则等价于auto类型
extern:
1.声明变量为外部存储
static:
1.将数据存放在数据区中
2.未经初始化为0值
3.编译时分配存储空间
4.结束时回收空间
1.static 限定变量的作用域
2.防止多文件编程时,变量或函数重名
auto int a;
声明与定义的区别:
声明:声明已有变量的类型不为变量分配空间
定义:为变量分配存储空间
int Num;
extern int Num;
作用域:变量能够使用的范围
生存周期:变量从开始分配空间到空间被回收的过程
变量的初始化: 定义变量时为变量赋初值
※ 初始化 != 赋值
=========================================================
语句+表达式
语句:以;号结尾的一段代码
表达式:由一个或者多个运算符连接的变量和常量组成的式子表达式一定有值
数据类型转换:
1.显示类型转换(强制类型转换)
float f = 3.1415;
(int)f
int(f)
2.隐式类型转换
如果运算符左右两边数据类型不一致,则会转化成同一种类型再进行数据计算和数据处理
转换规则:
低精度 -> 高精度
数据类型所占字节数越多精度范围越高
无符号精度范围高于有符号精度范围
浮点数类型精度范围高于整形精度范围
低: int <- short char
高: double <- float
eg: char Num1 = 100;
char Num2 = 200;
char + char int
float + float double
char + int int
unsigned int + int unsigned int
int + float double
=========================================================
运算符:
1.算数运算符
+,-,*,/,%,++:自增运算符,-- :自减运算符,i++:先用再加,++i:先加再用
eg:int i = 0;
int Num = 0;
Num = ++i+i++;
result:Num=2,i=2
eg: Num = i++ + i;
result:Num=0 ,i=1
2.关系运算符
> ,<,=,==常量放在等号的左边,!=,>=,<=
3.逻辑运算符
&&: 既…又…
||: 要么…要么…
!: 真取非得假
假取非得真
规则:
&&:一假为假 全真为真
||:一真为真 全假为假
!:真取非得假 假取非得真
★截断特性:
逻辑与左边为假值,右边不再计算
逻辑或左边为真值,右边不再计算
4.位运算符
进行数据计算:
& 按位与
| 按位或
~ 按位取反
^ 按位异或 相同为0相异为1
>> 右移 缩小
右移n位等价于该数除以2^n
<< 左移 放大
左移n位等价于该数乘以2^n
规则 :与0得0 ;或1置1 ;异或取反;其余不变
int Num1 = 100;
int Num2 = 200;
★
n ^ n :0
n ^ 0 : n
让Num第n位置1:
Num = Num | (1 << n)
让Num第n位置0:
Num = Num & ~(1 << n)
5.赋值运算符
=,+=,-=,*=,/=,&=,|=,%=
截断:
大数据放入小空间,直接截取低位
扩展:
小数据放入大空间,有符号数扩展符号位,无符号数扩0
6.特殊运算符
单目运算符:!
双目运算符
三目运算符:? :
a > b ? a : (b > c ? b : c);
从右至左
表达式1?表达式2:表达式3;
表达式1是否成立?成立执行表达式2:不成立执行表达式3;
((0 == year % 4) && (year % 100 != 0)) || (0 == year % 400) ? printf("闰年") : printf("平年");
7.逗号运算符
int a = 0;
int b = 0;
int c = 0;
(a++, b++, c++, a+b, b+c, a+c)
逗号表达式的结果是最后一个表达式的值
8.sizeof运算符
sizeof(数据类型/变量名)
sizeof(int)
sizeof(a)
★运算符优先级:
括号
单目运算符 从右至左
双目运算符
算数运算符
移位运算符
关系运算符
位运算符
逻辑运算符
三目运算符 从右至左
赋值运算符 从右至左
逗号运算符
作业:
1.从终端获得两个2位数,将第一个数的个位作为新数的千位,将
第二个数的个位作为新数的百位,将第二个数的十位作为新数的十位
将第一个数的十位作为新数的个位,打印该新数
输入:12 34
输出:2431
#include <stdio.h>
int main(void)
{
int a,b;
int s;
printf("请输入两位数:\n");
scanf("%d,%d",&a,&b);
s=a%10*1000+b%10*100+b/10*10+a/10;
printf("%d\n",s);
return 0;
}
2.从终端输入三角形三边长,求三角形的周长和面积
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,p=0,s=0,l=0;
printf("请输入三角形的三条边:");
scanf("%lf,%lf,%lf",&a,&b,&c);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b