C语言第一周学习总结

Day1

  1. Linux命令

1.1打开终端 ctrl+alt+T, ctrl+shift+(+)放大字体  ctrl+(-)  缩小字体;

1.2 linux@ubuntu:~$:当前路径

   $代表普通用户

   #代表超级用户

1.3 pwd 查看当前路径

1.4 Linux和Windows文件系统区别:Windows有盘符之分

Linux无盘符之分,即树形根目录结构

1.5 ls:查看当前路径下的文件夹以及文件;

1.6 cd:切换路径

1.7 Tab:自动补全

1.8 cat:查看文件内容(较短文件)

  more:查看文件(查看比较长文件)

1.9 mkdir:创建文件夹

1.10 touch:创建文件

1.11    vim  1.txt:                          i

末行模式  < ---------命令模式(默认)    --------->插入模式

wq(保存退出)         3yy(复制)          < --------

w(只保存不退出) p(粘贴) Esc

q(只退出不保存)      3dd(删除)

set nu(设置行号)

1.12 clear:清屏

1.13 mv:移动(重命名)文件/文件夹

1.14 cp:复制文件(文件夹)

1.15 rm:删除

1.16 rmdir:删除空文件夹

1.17 shutdown -h now:关机

1.18 reboot:重启

2.Linux开发过程

1.分析建模—2.画流程图---3.翻译成C语言---4.编译成可执行程序—5.运行

案例1:输入一个整数,判断该数是奇数还是偶数

2.1分析建模:

算法:解决问题的方法步骤:日积月累

偶数:能被2整除的是偶数

奇数:不能被2整除的奇数

2.2画流程图

2.3翻译成计算机高级语言(C语言)

2.3.1 注释:

//  单行注释

/*

    多行注释

*/

2.3.2 入口函数

2.3.3 变量如何定义

类型名   变量名;

2.3.4 变量名的命名规范:

(1) 由数字,字母,下划线组成,首字母不能为数字

(2) 不能为关键字或保留字

(3) 尽量见名知意

2.3.5 C语言标准的输入输出语句

(1) 引入头文件

#include <stdio.h>

  1. 输入输出函数

参数1:一定是个字符串

scanf(“格式化符号”,地址列表);              标准输入

printf(“字符串+格式化符号”,变量列表);      标准输出

2.4 编译成可执行程序

2.5 运行./可执行程序

Day2

计算机的基本构成

输入输出设备(键盘、鼠标)

CPU处理器:(控制器,运算器,寄存器)

存储器

程序

存储器:内存和外存

内存:工作存储器,容量较小,运行速度快,掉电数据会丢失

外存:长期保存数据,容量较大,运行速度慢,掉电数据不会丢失

寄存器:cpu内部的存储器,运行速度最快,容量非常小

程序

定义:一组计算机可以识别的有序的指令

指令:计算机可以识别的操作

程序的设计步骤

Vim(编辑)- gcc(编译)- ./a.out(运行/调试)

计算机数据表示

非数值数据和数值数据

10 ------0000 1010

非数值数据

eg:字符、图片、声音

ASCII码表:规定字符以哪八位二进制数表示

‘a’ =  97  

‘A’ =  65

‘0’ =  48

‘\0’ =  0

所有的大写字母都比小写字母:小32

数值数据

定义:可以直接进行运算的数据

二进制、八进制、十进制、十六进制

二进制: 0~1(逢二进1)

八进制:0~7(逢八进1)

十进制:0~9(逢十进1)

十六进制:0 ~9、a~ f(A~F)(逢16进1)

为了区分不同的进制:八进制前加0,十六进制前0x(0X)(0x7fa   0X7FA)

十进制:76  八进制:076  十六进制:0x76、0X76

​​​​​​​进制转换

其他进制转十进制:(注意:从右往左:从0次幂开始)

二进制转十进制:1010 0101 = 1*2^0+1*2^2+1*2^5+1*2^7

八进制转十进制:076=6*8^0 + 7*8^1  

十六进制转十进制:0xafc = 12*16^0+15*16^1+10*16^2

十进制转其他进制

十进制转二进制:除2倒取余数

十进制转八进制:除8倒取余数

十进制转十六进制:除16倒取余数

二进制和八进制:(将每一个八进制数用三个bit的二进制数去表示)

(421)

二进制和十六进制:(每一个十六进制可以用4位二进制数去表示)

(8421)

基本数据类型

关键字:系统预先定义好的,有特殊含义的,并且都是小写,不能重新定义。

数据类型:char、short、int、long、float、double、enum、union、struct、void

控制语句:if、else、for、do、while、switch、case、default、break、continue、goto

存储类型:auto、static、extern、register

标识符:程序员自己定义的,一般用来定义变量名,函数名,类型名

命名规范:(见名知意)

  1. 由数字、字母、下划线组成
  2. 第一个不能为数字
  3. 不能和关键字重名
  4. 基本数据类型

32os:分别占据多少个字节:

字符型:char(1字节)

整型:int(4字节)   short(2字节)   long(4字节)

浮点型:float(4字节)   double(8字节)

64os:

字符型:char(1字节)

整型:int(4字节)   short(2字节)   long(8字节)

浮点型:float(4字节)   double(8字节)

注意:每一种数据类型所占的内存空间是不相同的,数据类型主要就是为了让我们合理的分配内存空间

有符号数与无符号数

有符号数(signed):有正数有负数(定义一个变量,默认是有符号的)

无符号数(unsigned):只有正数,并且都是数据位

字符型家族

值域范围:Char(1字节)

超过这个范围:转圈去数

整型

Int (4字节 ==  32bit)

Int (8字节 ==  32bit)

浮点型

Float(单精度浮点数):表示6~7位有效数据

%f(默认输出小数点后6位)

Double(双精度浮点数):表示15~16位有效数据

%lf(默认输出小数点后6位)

如果想要输出小数点后n位(%.nf)

转义字符

(1字节)

“ af\79\\\n” = 7

“ af\74\\\n” = 6

常量

定义:在程序运行期间,不会也不能被改变的量

​​​​​​​字符常量

‘a’ ’A’  ‘b’

​​​​​​​整型常量

二进制:1010

八进制:076

十进制:99  -2

十六进制:0xaf   0X6FC

(默认情况下,为有符号数:int、short、long)

无符号的int:66U

长整型:66L

无符号的长整型:66UL

​​​​​​​浮点型常量

小数:3.14   10000(浮点型常量也包括整形常量)

指数:10000 = 1*10的4次方   1e+4   1e-4

%g:选择小数或者指数比较短的一种形式进行输出

^ :异或(位运算符),并不是指数

7字符串常量

“hello”  “hi”  字符串以‘\0’结尾

标识常量

宏只是一个单纯的替换

宏:#define  宏名  表达式

注意:

1、宏名一般用大写表示,小写也可以,因为要和普通的变量区分开来,所以用大写

2、宏后没有分号

Day3

变量

定义:就意味着要在内存空间中开辟空间

<存储类型>  数据类型   变量名;

存储类型:决定了开辟的空间在内存空间中的哪个分区

数据类型:决定了开辟的内存空间的大小

变量名:开辟的内存空间的名字

​​​​​​​局部变量

定义在函数体(任何函数体内)内的变量;

​​​​​​​全局变量

定义在函数体外的变量

​​​​​​​存储类型

存储类型:auto、static、extern、register

auto:修饰局部变量,修饰的变量存储在栈区

extern:修饰全局变量,修饰的变量存储在静态区

static:既可以修饰局部变量,也可以修饰全局变量,修饰的变量存储在静态区

register:修饰局部变量,存储在寄存器中;

​​​​​​​初始化

初始化:在定义变量的时候就进行赋值了

(1)全局变量没有进行初始化时,他的值为0

(2)局部变量没有进行初始化时,他的值为随机值

(定义变量时,尽量给他一个初始值,避免出现随机值)

作用:告诉编译器,该变量已经在其他文件中定义过了

auto:修饰局部变量,修饰的变量存储在栈区

register:修饰局部变量,修饰的变量存储在寄存器中,建议将变量存储在寄存器中,提高运行速度,但是寄存器中的内存空间很小,因此,当用register修饰时,如果寄存器中已满,变量就会存储在栈区

extern:修饰全局变量,修饰的变量存储在静态区

程序可以由多个.c构成,但是只能有一个main函数

Static:即可以修饰全局变量,也可以修饰局部变量

(1)修饰局部变量时,延长局部变量的生命周期,如果局部变量没有初始化,其值为0;如果初始化了,则只能初始化一次;

(2)修饰全局变量时,限制作用域,该变量只能在本文件内使用

生命周期与作用域

生命周期

从开辟空间一直到释放空间

作用域

使用的范围

局部变量:

生命周期:从定义开始,到模块结束(距离它最近的大括号)释放空间

作用域:大括号内

Static修饰的局部变量:

生命周期:从定义开始,到程序结束

作用域:大括号内

全局变量:

生命周期:从定义开始,到程序结束

作用域:整个程序

Static修饰的全局变量:

生命周期:从定义开始,到程序结束

作用域:本文件内

数据类型的转化

强制转化

(int)a

隐式转化

横向箭头:不管有没有进行混合运算,都会进行转换;

纵向箭头:只有进行了混合运算,才会进行转换;

运算符

单算移关与,异或逻条赋

单目运算符、算术运算符、左移、右移、关系运算符、按位与、异或、按位或、逻辑运算符、

条件运算符、赋值​​​​​​​

算术运算符

+  -  *  /  %  ++  --​​​​​​​

关系运算符

>  <  >=  <=  ==  !=

比较两者之间的关系,结果为(真1或者假0)

​​​逻辑运算符

&&  ||   !

&&  表达式1  && 表达式2

&&截断法则:有一个为假,结果就为假;前一个为假,后面就不进行运算

||   表达式1  || 表达式2

截断法则:有一个为真,结果就为真,前一个为真,后面就不进行运算

​​​​​​​sizeof运算符

sizeof:计算所占内存空间的大小:单位:字节

sizeof(数据类型)  

sizeof(变量名)

​​​​​​​三目运算符

表达式1 ? 表达式2 :表达式3

判断表达式1是否成立,如果成立,就将表达式2的值作为整个表达式的值,否则,就将表达式3的值作为整个表达式的值

​​​​​​​逗号运算符

表达式1,表达式2,表达式3,......,表达式n

从左往右,依次去执行每个表达式,最后将表达式n的值作为整个表达式的值

​​​​​​​位运算符

&  |  ~  ^  <<  >>

​​​​​​​按位与(&)

都为1,才为1,有一个为0,就为0

​​​​​​​按位或(|)

都为0,才为0,有一个为1,就为1

​​​​​​​按位取反(~)

1变0, 0变1

​​​​​​​异或(^)

相同为0,不同为1

​​​​​​​左移(<<)

Unsigned:高位丢弃,低位补0

Signed:

负数:高位丢弃,低位补0

​​​​​​​右移(>>)

Unsigned:正数 低位丢弃,高位补0:

Signed:负数:符号位不变,低位丢弃,高位补1

Day4

输出

printf(“格式控制串”,输出表);

格式控制串:原样输出的内容+格式化符

输出表:输出的内容(格式化符要和输出表一一对应)

整型:

%d:以十进制进行输出

%o:以八进制进行输出

%x、%X:以十六进制进行输出

#:自动在八进制和十六进之前加上前缀

%u:以无符号形式(将最高位看做数据位)进行输出

%hd:short类型

%ld:long类型

%lld:long long 类型

字符型:

%c

浮点型:

%f:float

%lf:double

%e:以指数形式进行打印

%g:选择小数和指数中较短的(合适)一个进行输出

%m.nf:

.n  :决定的是输出小数点后n位(有小数点,但是省略n时,输出小数点后0位)

m. :决定所占的域宽,默认右对齐,(m为负数,左对齐)m的值大于数据的实际长度时,补空格,当m的值小于实际长度时,原样输出

输入

Scanf(“格式控制串”,地址表);

格式控制串:原样输入的内容+格式化符

&+变量名://获取该变量的地址

字符输入输出

字符的输入:getchar( ); 返回值:获取到的字符的ascii码值

字符的输出:putchar( ); 需要的参数:字符的ascii码值

三大结构

三大结构:顺序结构、选择结构、循环结构

​​​​​​​顺序结构

语句按照一定的先后顺序去执行

选择结构

单分支if结构

先判断表达式是否成立,如果成立,就执行语句。

​​​​​​​双分支if结构(if else)

先判断表达式是否成立,如果成立,则执行语句1,否则,执行语句2;

​​​​​​​多分支if结构(else if)

从上往下,依次去判断表达式是否成立,如果表达式成立,则执行对应的语句

​​​​​​​switch语句

Switch(表达式)

{

Case 标号1:

语句1;

Case 标号2:

语句2;

Case 标号3:

语句3;

。。。。

Case 标号n:

语句n;

    default:

语句n+1;

}

注意:

表达式不能为float类型

标号必须为常量

当表达式等于标号时,就冒号后面的语句,直到switch,case语句结束为止,或者遇到break语句结束。

for循环

for(表达式1;表达式2;表达式3)

{

循环体;

}

表达式1:循环的起始条件

表达式2:循环的终止条件

表达式3:循环变量的变化

先执行表达式1,然后执行表达式2,如果表达式2为真,执行循环体,然后执行表达式3;如此反复,当表达式2为假时,结束循环

for循环的嵌套

​​​​​​​While

While(表达式)

{

循环体;

}

判断表达式是否成立,如果成立,就执行循环体,反之,跳出循环

​​​​​​​do while

do

{

循环体;

}while(表达式);

先去执行循环体,然后判断表达式是否成立,如果成立,就继续去执行循环体内的语句,否则,结束循环

总结区别:

while:先判断,在执行,循环体最少执行0次

do-while:先执行,在判断,循环体至少执行1次

break和continue的区别:(跳出距离自己最近的循环)

break:1、结束switch,case语句  2、跳出循环(结束循环)

continue:跳出循环(跳出本次循环,进入下一次循环)

​​​​​​​死循环

1、

while(1)

{

循环体

}

2、

for(  ; 1 ;  )

{

循环体

}

 goto

goto:无条件跳转语句

goto  标号:loop

标号的命名规则:满足标识符的命名规则;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值