目录
Linux部分
通配符
*——匹配一个字符串;?——匹配一个字符。
可以删除同类型文件
例:
cry@yuchen:~/d$ ls
2.txt 3.txt cry.c e
cry@yuchen:~/d$ rm ?.txt
cry@yuchen:~/d$ ls
cry.c e
cry@yuchen:~/d$ touch 1.c 2.c 33.c 44.c
cry@yuchen:~/d$ ls
1.c 2.c 33.c 44.c cry.c e
cry@yuchen:~/d$ rm ??.c
cry@yuchen:~/d$ ls
1.c 2.c cry.c e
cry@yuchen:~/d$ touch 222.c 666.c
cry@yuchen:~/d$ ls
1.c 222.c 2.c 666.c cry.c e
cry@yuchen:~/d$ rm *.c
cry@yuchen:~/d$ ls
e
不能touch通配符 创建文件
tips:
1.Ctrl+C 结束进程
2.练习创建当日目录,留存
C语言部分
part1:C语言对于层级的概念特别强
主函数包含了整个项目的运行逻辑,其余函数进行封装
程序架构-->主函数
part2:进制转换
整数转换
十进制-->其他进制:模n取余,将所得余数倒序
其他进制-->十进制:系数*进制数^位数,求和
二进制-->八进制:三位一组相互对应
二进制-->十六进制:四位一组相互对应
二进制 --> 八进制
000 000 111 7 0007
000 001 000 8 0010二进制 --> 十六进制
0000 1111 15 0x0f
0001 0000 16 0x10
小数部分
p.s.存在有限小数在计算机里可能是无限小数-->计算机里的小数不精确--》浮点型
十进制-->二进制:小数部分*2,大于等于1,写1,减去1后重复;小于1,写0,继续。
其余进制-->十进制:同理整数部分。系数*进制数^位数,求和。
0.1 --> 1*2^(-1)
part3:基本数据类型
- 字符型 char 1字节 0~255 -128~127
- 短整型 short 2字节 0~65535
- 整型 int 4字节 42亿9千万
- 长整型 long 8字节
- 单精度浮点型 float 4字节 最多精确到小数点后6位
- 双精度浮点型 double 8字节 最多精确到小数点后12-15位
part4:存储单元中的空间结构
- 整数:无符号 数据位
- 有符号 符号位+数据位
- 小数:有符号 符号位+整数部分+小数部分
无符号 unsigned
有符号 signed
part5:定义变量
数据类型 标识符;
标识符:命名/标识一个东西
标识符命名规则
-
由数字、字母、下划线组成
-
区分大小写
-
不能以数字开头
-
不能与关键字同名
拆解定义变量
定义一个字符型变量a
char a; // 定义一个字符型变量a
(auto signed) char a;
auto : CPU自动分配存储单元
signed : 有符号位
char : 字符型 空间大小1字节
a : 空间标识 方便后续操作,地址使用不方便,标识符直接代表空间
定义一个浮点型变量b
float b=5.1; // 申请一个空间,标识为b ,并存储数据5.1
= 运算符中的赋值运算符 把右边的数据赋值给左边
part6:常量
数字常量:0777 0xaa 200 -1 3.14
字符常量:本质上还是数字
ASCII码表 0~127 中的所有字符都是字符常量,共128个字符
0 32 48 49 65 97
空字符 空格 ‘0’ ‘1’ ‘A’ ‘a’
‘\0’ ' '
‘’ 只能有一个字符
字符串常量:“” 可以是任意数量的字符
字符串结尾默认有一个 ‘\0’
字符串代表自身起始字符的地址[e.g.“123”这个字符串就代表这里的字符1的字符地址]
有效长度:起始字符到第一个 ‘\0’之前的字符个数
转义字符 \
‘\HHH’ 一般默认转义3位8进制
‘\xHH’ 一般默认转义2位16进制
‘\101’ 转义八进制数
‘\x41’ 转义十六进制数‘\\’ 转义' \ '一个反斜杠
‘\’’ 转义' ' '一个单引号
“\”” 转义' " '一个双引号
此外,讨论字符串有效长度 (注意转义字符\对有效长度的影响)
“123” 有效长度:3
“\123” 有效长度:1 转义为一个八进制数
“\128” 有效长度:2 由于8不可看作八进制数,所以\12转义为一个八进制数,作为一个字
符; 8作为第二个字符。
“abc\000abc” 有效长度:3 字符串到\0结束
总长度:8
“abc\x00abc” 有效长度:3 \x00被识别为十六进制数后仍为0,则再次作为\0结束该字符
串
“\xabc00abc” 有效长度:7 \xab被识别为十六进制数,作为一个字符
\后的字符首先被当作数字,满足转义条件之后的才是字符
数据有多种表示形式
65 0101 0x41 ‘A’ ‘\101’ ‘\x41’
格式化输入输出函数
printf()//输出打印
头文件:#include <stdio.h>
printf(“输出双引号中间的内容”);
格式控制符
把数据以指定格式进行获取或者输入
%c 字符型
%d 有符号整型 十进制
%o 八进制
%x 十六进制
%f 单精度浮点型 默认精确到小数点后6位,自动四舍五入
#include <stdio.h>
int main()
{
char a=65;
float b=65;
printf("65\n"); // “65”
printf("%d\n", 65); // “65”
printf("%o\n", 65); // “101”
printf("%x\n", 65); // “41”
printf("%c\n", a); // “A”
printf("%f\n", b); // “65.000000”
//保证数据类型相同,否则无法输入
return 0;
}
cry@yuchen:~/record/1010$ gcc char.c -o char//编译.c文件
char.c: In function ‘main’:
char.c:7:11: warning: format ‘%f’ expects argument of type ‘double’, but argument 2 has type ‘int’ [-Wformat=]
7 | printf("%f\n",10);
| ~^ ~~
| | |
| | int
| double
| %d
cry@yuchen:~/record/1010$ ./char //执行char可执行文件
10
10
12
a
0.000000//没有保证数据类型相同,所以计算机无法输出整型10为浮点型。
制表符
用于打印的内容排版
\n 换行
\t 横向制表符 TAB
\a 响铃
\r 回车
\b 退格
\v 垂直移动到下一个制表位
\f 换页
cry@yuchen:~/record/1010$ ./char
101012a0.000000cry@yuchen:~/record/1010$ ...
//不换行就会这样,所以要用制表符
scanf()//键盘输入
输入前要先定义变量,申请存储空间
scanf(“写什么就输入什么”, &变量);
e.g.
int a;
int b;
scanf(“可乐%d元%d瓶”, &a, &b); // 就要输入 可乐1元2瓶
格式控制符
格式控制符 | 说明 | 示例 |
---|---|---|
%d | 读取十进制整数 |
|
%f | 读取单精度浮点数 |
|
%lf | 读取双精度浮点数 |
|
%c | 读取单个字符 |
|
%s | 读取字符串(以空格或换行符为结束标志) |
|
键盘每个按键按下都会输入一个字符
#include <stdio.h>
int main()
{
int m,n;
printf("输入两个数据:");
scanf("%d %d\n", &m,&n);
printf("m=%d n=%d\n",m,n);
return 0;
}