1.linux命令:
1.1界面调节:
终端放大: ctrl + shift + =
缩小:ctrl + -
打开:点击 ctrl+alt+t:在家目录下打开 ctrl+shift+n:在当前路径下新开
关闭:点击 exit ctrl+d
清屏幕:ctrl+L
终止:ctrl+c
1.2 提示文字:
hq @ ubuntu : ~ $
用户名 间隔符 主机名 间隔符 当前路径 间隔/输入提示符
1.3 特殊符号:
~ : 家目录/主目录 权限最高 不是home
/:根目录-----此电脑 最大的盒子(文件夹)
. :当前目录
.. :上一级目录
-:上一次操作的目录
1.4 linux指令:
1.4.1 查看用户名:whoami
1.4.2 查看主机名:hostname
1.4.3 查看当前路径的完整路径:pwd
1.4.4查看当前路径下的所有文件:ls
蓝色字体:文件夹/目录
绿色:可执行文件
白色:普通文件
1.4.5 查看当前路径下的所有文件(包含隐藏文件):ls -a
1.4.6 查看当前路径下的所有文件的详细信息:ls -l
d rwx:当前用户权限 r-x:组内成员权限 r-x:其他权限
文件类型 权限:r:读 w:写 x:执行 -:不可以 --->rwx
bcd-lsp
b: 块设备文件 /dev
c:字符设备文件
d:目录
-: 文件
l:软连接
s: 套接字
p: 管道文件
例:- r-- rwx ---:文件 当前用户可读不可写不可执行 组:可读可写可执行 其他:无权限
linux中一切皆____,有____种。(鲁科安全)
答案:文件 7种
1.4.7切换路径:cd
cd:切换到家目录
cd 路径(目录):切换到。。。文件夹中
路径: 相对路径 绝对路径(完整路径)
相对路径:一般以 . 或者 .. 或者直接文件名开头的
绝对路径:一般以 / 或者 ~ 开头
例:进入到 home文件 : cd ../.. cd ~/.. cd /home
回到家目录:cd cd ~
1.4.8 新建
新建文件夹:mkdir 文件夹名
新建文件:touch 文件名.后缀
1.4.9 删除
删除文件:rm 文件名.后缀
删除文件夹: rm 文件夹名 -r
删除目录:rmdir 目录名 --->空
练习:
- 在家目录下创建一个demo1文件夹进入此文件夹新建一个text1文本文档,然后回到家目录
mkdir demo1 ---->cd demo1---->touch text1.txt---->cd
touch ./demo1/text1.txt
1.4.10复制
复制普通文件:cp 要复制的文件名(路径) 要粘贴的位置(路径)
复制文件夹:cp 要复制的文件夹名(路径) 要粘贴的位置(路径) -r
复制过程中修改名称:cp 要复制的文件名 路径/新名称
1.4.11 移动 剪切
移动文件/文件夹:mv 要移动的文件名(路径) 要粘贴的位置(路径)
移动过程中修改名称:mv 要移动的文件名 路径/新名称
重命名
1.5 vi编辑器
打开文件:vi 文件名
三种模式:
命令行模式:支持特定命令的操作 默认进入此模式
插入模式:编辑模式 在此模式下可以进行编辑内容
底行模式:支持特定命令的操作 保存 退出
模式之间的切换必须从命令模式进入
命令模式-- a / i / o --->插入模式-- esc -->回到命令模式-- shift+: /空格-->底行模式
命令行:
复制:yy 多行 nyy(n:表示的是行数)
删除(剪切):dd ndd
粘贴:p
撤销:u
反撤:ctrl+r
光标的移动:移动到首行:gg 移动到末行:G 移动到行首:0 移动到行尾:$
整理代码的格式:gg=G
底行模式:
q:退出
w: 保存
wq:保存退出
q!:不保存退出 强制退出
分屏:vsp ctrl+w--> v:打开分屏 ctrl+w--> q 关闭分屏
查找:/要找的内容
替换: s/str1/str2 将光标所在行的第一个str1替换成str2
全部替换:s/str1/str2/g 将光标所在行的全部str1替换成str2
%s/str1/str2/g ,$s/str1/str2/g 全文替换
设置行号:set nu
取消行号:set nonu
取消高亮:nohl
练习:反斜杠\
\ :转义 把后面跟随的内容改变含义,后面跟符号表示转译成文本符号
\n---》换行 \?---》文本? \\---文本斜杠
文本内容:///
通过指令完成替换:\\\
答案:%s/\//\\/g
注:红色字体表示语法格式,蓝色表示转义 黑色表示替换内容
1.5.1编程流程:
- 创建.c文件:touch 文件名.c
- 打开文件:vi 文件名.c / vscode打开--->code 文件名.c
- 写代码
#include<stdio.h> //头文件
int main() //主函数
{
printf ("hello word! \n"); //打印语句
return 0;
}
- 保存退出:wq
- 编译代码:gcc 文件.c 默认生成a.out文件
- 执行a.out: ./a.out
1.6编程语言的发展史及gcc编译器
1.6.1编程语言的发展史:
机器语言: 二进制 ---> 汇编语言:二进制的文本形式 ----> 高级语言:c c++ (计算机不能直接看懂)
1.6.2 gcc编译器
四步:1.预处理 2.编译 3.汇编 4.链接
- 预处理
展开头文件、删除注释、替换宏定义
命令:gcc -E hello.c -o hello.i
- 编译
检查语法错误 有错误报错 没有转成汇编语言
命令:gcc -S hello.i -o hello.s
- 汇编
将汇编文件转化成二进制文件
命令:gcc -c hello.s -o hello.o
4.链接
链接库文件,最终生成机器可以识别的可执行文件
命令:gcc hell.o -o a.out ---》gcc hello.c--->生成a.out
修改生成的文件名:gcc hello.c -o 文件名
1.6计算机中数据存储的单位:
位(bit)
字节(Byte)
1字节=8位
1B=8b
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
1.7计算机中数据的表现形式:
- 数值型数据
进制:
二进制:满2进1 0-1
八进制:满8进1 0-7
十进制:满10进1 0-9
十六进制:满16进1 0-9 a-f , a:10 b:11 c:12 d:13 e:14 f:15
进制转换
二进制 和十进制
二进制 ---> 十进制:
101 ---》将2次方和相加
101011---》2^0+2^1+2^3+2^5=43
1 | 0 | 1 | 0 | 1 | 1 |
2^5:32 | 2^4:16 | 2^3:8 | 2^2:4 | 2^1:2 | 2^0:1 |
例:101100----> 44
110101---->53
十进制 ---> 二进制:
- 短除法:除2倒取余
44-->101100
- 拆分法:44---》32+12-->32+8+4--》2^5 +2^3 +2^2--->101100
- 计算器
例:
- 1110111---->119
- 10001------>17
- 36----》100100
- 77--->1001101
二进制和八进制
八进制--> 二进制
八进制: 以0开头 ,用三个二进制数表示一个八进制
7---》111 6--->110 5---》101 4-->100 3--->011 2--》010 1--》001
07 5--->111 101
二进制-->八进制
从右往左 三个二进制为一组,表示一位八进制,不足三位在前面补零
101 110 101:0565
001 101:015
例:
1 001:--->011
111 101:---》075
077:--->111111
0156:----》1101110
十六进制和二进制之间的转换
f(15)---》1111 ,十六进制以0x开头
四位二进制表示一位十六进制
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10(a) | 11(b) | 12(c) | 13(d) | 14(e) | 15(f) |
0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
十六进制--->二进制
0xf78---》1111 0111 1000
二进制---->十六进制: 从右向左每四个为一组
1110 1010--->0xea
例:
转成二进制:
389--->256+128+4+1 ---> 110000101
056---> 101 110
0xac12--->1010 1100 0001 0010
12---->1100
转 八进制、 十进制、 十六进制:
0110 0110 1010
八进制:03152
十进制:1642
十六进制:0x66a
- 非数值型数据
ascii码: 可以通过man手册查看
man ascii
字符:使用单引号(' ')引起来的内容, 只能引一个字符
'A' 'A'
A-Z:65-90
a-z:97-122
\n----->字符换行:10
'\0'---》字符空: 0
'0'---'9'---》48-57
大小写转换:大--->小:大写字母的ascii+32
小--->大:小写字母的ascii-32
字符型数据转成数值型数据: 字符型数字ascii-48
\:代表转义 将其后面的东西转换成其他意思表现出来 后面一般跟八进制 十六进制的数 (开头不写零) 后面跟字母一般表示为特殊含义 但是后面跟符号一般是将这个符号输出成文本形式
'\x41'---》'A'---》'\101'----》字符A
'1' ---》字符1 字符1 和 数字1不是一个内容(数据)
练习:
f=102, a=97, 97+(102-97+1)=103
答案:g
1.变 量
概念:在程序的运行中会发生变化的数据
定义格式:存储类型 数据类型 变量名 ;
例:auto int a;//定义了一个整形变量 a ---> int a
auto:自动 ,默认取值都是auto,可以不写
1.1数据类型:
名称 | 字节 | 取值范围(了解) |
int 整形 整数 | 4字节 | -2^31-2^31-1 |
short 短整型 | 2字节 | -2^15-2^15-1 |
long 长整型 | 32位:4字节,64位:8字节 | -2^63-2^63-1 |
char 字符型 | 1字节 | -2^7 - 2^7-1 |
float 单精度浮点型 | 4字节 | 有效位数:6-7位 |
double 双精度浮点型 | 8字节 | 15-16位 |
sizeof() 返回的是查询数据的字节数
int a;//随机值
2.printf输出语句
按照格式输出内容--->输出在终端界面
使用时需要引入: #include <stdio.h>
int printf(const char *format, ...); 函数
三要素:功能 参数 返回值
功能:按照格式输出内容
参数:1:字符串类型 ---要输出的信息,
后续参数的个数取决于第一个参数中的格式
返回值:输出字符的个数(不常用)
函数的使用:函数名(参数);
格式:
"%d" int
"%f" float
"%lf" double
"%c" char
"%s" 字符串
"%#x" 十六进制
"%#o" 八进制
"%e" 指数
"%p" 地址
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a=10;
float b=1.2;
printf("hello %d",a);//hello 10
return 0;
}
2. 数:1234
int a=1234
通过printf将这个4位数输出他的个位 十位 百位 千位
想要取哪个位数就除以位数,如果是中间数,继续对10取余
最高位:除位数
最低位:对10取余
- scanf输入语句
#include <stdio.h>
int scanf(const char *format, ...);
功能:按照格式输入
参数:参数1:字符串(只能包含格式)后续和参数1中的格式的个数相关
后续的参数必须是一个地址
返回值:正确输入数据的个数
int a;
//&:取地址
scanf("%d",&a);//输入
printf("a=%d\n",a);//输出
- 分支语句
if else
基本结构:
if(表达式)
{
//如果表达式成立执行。。。。
语句块;
}
else
{
//如果表达式不成立执行。。。。
语句块;
}
int a;
//&:取地址
printf("请输入一个5位数:");
scanf("%d",&a);//输入
if (a>9999)
{
printf("你输入正确\n");
}
else
{
printf("你输入不正确\n");
}
练习:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a, b; // 定义了两个变量 a ,b
printf("请输入两个数:\n");
scanf("%d%d", &a, &b);
if (a > b)
{
printf("a大于b\n");
}
else
{
printf("a小于b\n");
}
return 0;
}
练习:
两数相除,如果有余数,输出余数。
int a, b; // 定义了两个变量 a ,b
printf("请输入两个数:\n");
scanf("%d%d", &a, &b);
if (a % b) // 0:假 1:真
{
printf("有余数:%d",a%b);
}
else
{
printf("无余数");
}
if else if 。。。else
if(表达式1)
{
//如果表达式成立执行。。。。
语句块;
}
else if(表达式2)
{
//如果表达式2成立执行。。。。
语句块;
}else if(表达式3)
{
//如果表达式3成立执行。。。。
语句块;
}else
{
//y以上所有条件都不满足执行
}
中奖案例:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a; // 定义了两个变量 a ,b
printf("请输入1个数:\n");
scanf("%d", &a);
if (a == 111)
{
printf("恭喜中一等奖:宝马一辆\n");
}
else if (a == 222)
{
printf("恭喜中二等奖:三轮车一辆\n");
}
else if (a == 333)
{
printf("恭喜中三等奖:车轮一个\n");
}
else
{
printf("谢谢参与,多买多得\n");
}
return 0;
}
标签:二进制,int,基础,C语言,---,--,printf,else
From: https://blog.csdn.net/m5127/article/details/143341164