一.Linux 介绍
0.1Linux是什么?
Linux是一个开源、免费的操作系统 , 其稳定性 、 安全性 、 处理高并发的能力
已经受到了业界的认可。
目前大多数企业级的应用甚至集群项目部署都运行在Linux操作系统之上。
很多软件公司 , 在考虑到开发成本都会首选Linux , 是中国软件公司最认可的操作系统
0.2Linux发行的版本有哪些?
Ubuntu(乌班图) 、 Red Hat (红帽) 、CentOS
1、软件介绍
-
VMware — 虚拟机 就是一台虚拟的计算机
-
Ubuntu — 操作系统 是基于Linux框架开发的
-
notepad++ – 编辑软件
2、设置共享目录
3、在Linux下的一些基本命令
-
cd 跳转目录
-
cd + /带路径的目录名/目录名或者文件夹/ 例如:cd /mnt/hgfs/
-
cd … 跳转到上一个路径
-
ls 列出当前目录下所有的文件
-
创建文件 touch + 文件名 例如: touch hello.c
-
删除文件 rm + 文件名 例如 : rm hello.c
-
创建目录 mkdir + 目录名 例如:mkdir + 01_04
-
删除目录 rm + 目录名 -r 例如:rm 01_04 -r
练习:
把上面的这些指令 , 尝试着实现一下
4.在Linux下编辑代码
用gcc编辑器
gcc + ***.c 默认生成一个可执行文件 , 这个文件名叫 a.out
怎么去运行我们的可执行文件
./a.out
./当前目录下的意思
每天都会对C语言进行回顾 , 加深对代码的熟练度
5.C语言基础巩固
C语言数据类型
(1)、基本类型
就是C语言中已经帮我们定义好了, 我们直接使用就可以了
整型数据:
C语言用来保存整数
- char //字符型
- short //短整型
- int //整形
- long /长整型
- long long //长长整形
表示的数据的范围 不一样
字节数不一样 , 使得它们所占的空间不一样!
char 1111 1111
int 1111 1111 1111 1111 1111 1111 1111 1111
long 范围更大
sizeof(int) -> 求int类型占几个字节
字符型:
用来保存字符
char : 占一个字节 8bit
浮点型:用来保存小数
- 单精度浮点型:
float 占 4 字节
- 双精度浮点型:
double 占 8 字节
long double 占 12 字节 //长双精度浮点型
C语言中的数据按是否可以修改分为两种:
变量(可写)
数据类型 + 变量名
int a ;
char b;
int a = 10;
char b = 20;//定义并初始化
访问一个变量;
int a = 100;
printf("%d" , a);
//把a对应的内存单元 中的值 取出来 , (读) , 并打印
int b;
scanf("%d" , &a);//对a取地址
//把终端输入的数据 , 写入到 变量b 的地址当中去;
常量(不可写)
(1)整型常量
1 2 3 4 256
(2)字符常量
字符型常量通常是用单引号‘’,引起来获得多个字符序列
‘a’ , ‘b’ , ‘3’ , ‘%’ , ‘\n’ , ‘\113’
在计算机中, 字符的保存 , 保存的是这个字符的形状吗?
不是!
ASCII码
man ascii
字符:分为两种
普通的字符:
可以显示形状的字符
‘a’ , ‘b’ ,‘1’
转义字符:没有形状 , 但是有特殊意义
‘\n’ 换行
‘\r’ 回车
‘\t’ 制表符(tab)
‘\0’ 字符串结束符
练习:
5.1
将 两 个整型变量的值进行交换 , 然后输出出来
C语言运算符
1、算术运算符
++ – 单目运算符
-
-
- / 双目运算符
-
% 双目运算符
如:
4%3
/:
第二个操作数 , 不能为0
例如: 4/0 : 非法
%:
第二个操作数不能为0
例如 4%0 : 非法
++:
自增
–:
自减
a = 9;
printf("%d\n" , a++);
2、关系运算符
用来判断两个东西的关系的运算符
“关系” , 指的是 数值的大小
< > <= >= != ==
关系运算符的值:
1 > 2
关系成立: 值为 1
关系不成立: 值为 0
3.逻辑运算符
! 逻辑非 单目运算符
&& 逻辑与 双目运算符
|| 逻辑或 双目运算符
练习:
从终端输入一个年份
判断其是否为闰年
闰年(4年一润 ,百年不润 , 四百年再润)
普通闰年
世纪闰年
答案
分支结构:
1、
if(表达式)
{
语句块;
}
如果表达式为真 , 执行语句块 , 表达式为0 , 不执行 ,直接执行下面的语句
int a = 2;
if(a)
{
语句1;
}
表达式:
任意的C语言合法的表达式都可以
只要是合法的表达式 , 都会有一个值
cpu会根据这个值 是否为 0 , 去做判断
如果是非0 , 就会执行语句块 , 否则不执行
编程建议:
不管是if后面有没有语句 ,
if(表达式)
{
}
上面的这个花括号{ 要与i对齐
if(表达式) //确定if的管辖范围
语句1;
语句2;
2、
if(表达式)
{
语句块;
}
else
{
语句块;
}
3、
if(表达式)
{
语句块;
}
else if(表达式1)
{
语句块;
}
else if(表达式3)
{
语句块;
}
if(表达式)
{
语句块1;
}
if(表达式)
{
语句块2;
}
4、if 的嵌套
if(表达式)
{
if(表达式1)
{
}
else
{
;
}
语句块1;
}
else
{
}
每一个else , 都对应着与它同列的上面的第一个if
层次感
练习:
从键盘输入一个字母 ,
如果是小写字母 ,就将其转换为大写字母 ,
如果是大写字母 , 转换为小写字母
提示 “ASCII”
打印出来
#include<stdio.h>
int main()
{
char ch;
printf("请输入一个字母");
scanf("%c",&ch);
if(ch >= 65 && ch <= 90){
ch += 32;
} else {
ch -=32;
}
printf("%c",ch);
}
循环结构:
0, 问题的引入
质数(素数)
只能被 1 或者 它本身整除的数
35
if(0 == 35 % 2)
{
printf(不是质数)
}
if(0 == 35 % 3)
{
printf(不是质数)
}
if(0 == 35 % 4)
{
printf(不是质数)
}
·····························
-》循环
1、while 2、for 3、do…while
1、while循环
语法:
while(表达式)
{
语句块;
}
表达式为 真 , 执行语句块
每一次循环 , 都会进行一次表达式的判断
while(1)
{
;
}
表达式 1 为真
所以这是死循环
while()
{
以下为复合语句;
if()
{
}
for()
{
for()
{
}
}
练习:
1、 用while循环 , 求200以内所有3的倍数 之和
3 6 9 12 ······
/*求200以内所有3的倍数 之和*/
#include<stdio.h>
int main()
{
int i = 1 , sum = 0;
while(i < 200)
{
if(0 == i % 3)
{
sum += i;
}
i++;
}
printf("sum = %d\n" , sum);
return 0;
}
2、for 循环
语法:
for(表达式1 ; 表达式2 ; 表达式3)
{
语句块;
}
··············
for( ; ; )
{
;
}
合法的
是一个死循环
for( ; 1 ; )
{
;
}
for循环的语法中 , 可以三个表达式都空着不写 ,就是一个死循环
任意某个表达式空着没写 , 也符合语法;
当执行到 for循环的时候;
第一遍执行:
运行表达式1 、 判断表达式2 是否为 0 、 执行语句块 、 执行表达式3
后面怎么执行:
判断表达式2 是否为 0 、 执行语句块 、 执行表达式3
判断表达式2 是否为 0 、 执行语句块 、 执行表达式3
判断表达式2 是否为 0 、 执行语句块 、 执行表达式3
················································
两个关键的语句:
break 和 continue
(1)break 作用: 当循环的语句块执行到break的时候 , 就会跳出循环
for(int i = 1 ; i <= 10 ; i++)
{
if(i == 5)
{
break;
}
printf("%d " , i);
}
printf("\n");
(2) continue
作用 : 当循环语句块执行到continue的时候 , 结束本次循环 , 执行表达式3 , 判断表达式2 ,
总的来说 结束本次循环就是执行下一次循环
for(int i = 1 ; i <= 10 ; i++)
{
if(i == 5)
{
continue;
}
printf("%d " , i);
}
printf("\n");
总结:
Linux 环境介绍 , Ubuntu 系统介绍 ,
C语言:
数据类型 , 运算符 , 分支结构 , 循环结构
作业:
1、求 1000 以内的水仙花数 , “水仙花数”:是一个三位数 , 并且它的个位的立方 , 十位的立方 ,百位的立方 三个
之和 , 等于它本身
2、求 100 以内的质数
质数:
3、求一个正整数的连续正整数之和
一个正整数有可能存在多个连续的正整数之和
如:输入一个 15
输出如下:
15 = 1 + 2 + 3 + 4 + 5
15 = 4 + 5 + 6
15 = 7 + 8
选做题:
使用冒泡排序 , 实现第一个 容量为 10 , 数据类型为 int , 的 数组array进行排序 (升序)
可以用更高级的算法 , 比如:快速排序 、 堆排序