C语言补习笔记

选择结构

单分支if语句

分支if语句

分支if语句

switch语句

if(表达式)

{

语句;

}

if(表达式)

{

语句1;

}

else

{

语句2;

}

if(表达式1)

{

语句1;

}

else if(表达式2)

{

语句2;

}

…………

else if(表达式n)

{

语句n;

}

else

{

语句n+1

}

switch(表达式)

{                                            

case 标号1:

语句1;break

case 标号2:                                            

语句2;                     

.......

case 标号n:

语句n;

default:

语句n+1;

}

  1. 表达式不能为float
  2. 标号必须为常量
  3. 表达式=标号时,执行冒号后的语句,直到switch,case语句结束为止,或者碰到break语句结束

循环结构

循环三要素

  • 表达式1循环的起始条件
  • 表达式2循环的终止条件
  • 表达式3:循环变量的变化

for语句

for语句的嵌套

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

{

语句;

}

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

{

for(表达式4;表达式5;表达式6)

    {

语句;

}

}

先执行表达式1的值,然后再执行表达式2的值,如果表达式2的值为真,执行循环体,然后再执行表达式3的值,如此反复,直到表达式2的值为假的时候,跳出循环

先执行表达式1的值,然后再执行表达式2的值,如果表达式2的值为真,执行循环体里面的for循环,跳出循环体里面的for循环后,然后再执行表达式3的值,如此反复,直到表达式2的值为假的时候,跳出循环

表达式1,2,3的值都是可以省略的,但是分号不能省

省略表达式1:在定义变量的时候直接给值

省略表达式2:死循环

省略表达式3:将循环变量的变化写在语句后面

while语句

do while语句

break

continue

goto语句

while(表达式)

{

    语句;

}  

do

{

语句;

}while(表达式)

break

continue

语句标号:

.......

goto 语句标号

起始条件:定义变量时赋值

终止条件:表达式

1、跳出switch语句       

2、跳出循环(跳出的是离他最近的循环)。

结束本次循环,开始下一次循环

无条件跳转语句

语句标号:符号标识符的命名规范

while和do while的区别while先判断再执行,do while是先执行再判断while中的语句,至少执行0次,而do while中的语句至少执行1次

数组

数组的概念:一组数据类型相同的元素的集合数据类型相同地址连续

定义

数组

方法

存储类型 数据类型 数组名[元素个数]

int a[5]

存储类型

auto、static、extern、register

数组的数据类型

数据类型 [元素个数];

int [5]

数组名

数组名代表的是数组首元素的地址代表的是整个数组

元素个数:必须是一个确定的数(常量)

数据类型:去掉变量名就是数据类型

数组的

初始化

部分初始化

未初始化部分的值为0

int a[5] = {1,2,3};

对数组中的元素清零

int a[5] = {0};

全部初始化

数组元素的个数可以省略数组的元素个数由后面赋值的具体个数来决定

int a[5 ] = {1,2,3,4,5};

int a[ ] = {1,2,3,4,5};

数组

的访问

数组名[下标]

下标必须从0开始

int a[5 ] = {1,2,3,4,5};

a[0]a[1]a[2]a[3]a[4]

数组的输

入和输出

输入

for(i = 0;i <= 4;i++)

{

   scanf(%d,&a[i]);

}

输出

for(i = 0;i <= 4;i++)

{

   printf(%d,a[i]);

}

冒泡排序

从左至右两两依次比较,如果前一个数比后一个数大的话就交换位置,否则不变

for(j= 0;j<=元素个数-1;j++)   循环趟数

{

   for(i= 0;i<元素个数-1-j;i++)    每趟循环次数

{

   if(a[i]>a[i+1]

      {

       int temp = 0   

       temp =a[i];

       a[i]=a[i+1];  

       a[i+1]=temp;

      }

    {

}

字符

✭✭✭均以‘\0做为结束符

定义

维字符数组

存储类型  数据类型 数组名[元素个数];

char str[20];

二维字符数组

存储类型 数据类型 数组名[行数][列数];

char str[5][20];

写法

char str[6] = {‘h’,’e’,’l’,’l’,’o’,’\0’};  char str[6] = {“hello”};可以不加大括号)

char str[5] = {0};//最多能存放4个元素,留一个位置给’\0’

字符串的输出

puts(数组名)

将数组中的字符串打印到终端上,会自动添加换行符

遇到’\0’结束char str[6] = {“hel\0lo”};→→hel

字符串的输入

gets(数组名)

将键盘输入的字符串保存到数组中,会自动在末尾添加’\0’gets不会进行越界检查,输入的时候注意不要越界

Scanf

和gets的区别

scanf

是以空格、回车、Tab键作为结束符

输入完成之后,缓冲区会遗留空格、回车、Tab键

是标准输入函数,每一次输入都需要从键盘获取

gets

gets是以回车作为结束符

输入完成会自动清空缓冲区

输入之前,先会查看缓冲区中是否有内容,有的话直接拿过来使用

Puts和printf的区别

Put

会自动添加换行符\n)

printf

要手动添加换行(\n)

字符串的处理函数

strlen、strcpy、strcat、strcmp头文件:#include <string.h>

strlen

strcpy

功能

求字符串的实际长度

功能

将数组2或者字符串2拷贝到数组1

写法

strlen(数组名/字符串)

写法

strcpy(数组1,数组2/字符串2)

返回值

返回字符串的实际长度,不包含\0

  1. 数组1足够大
  2. 完全拷贝,会将数组2/字符串2的\0’也拷贝过去

sizeof和strlen的区别:

  1. sizeof是运算符,而strlen是函数
  2. sizeof求得的是内存空间的大小,strlen求得的是字符串的实际长度(不包含’\0’

strncpy

功能

将数组2/字符串2的前n个字符拷贝到数组1中

写法

strncpy(数组1,数组2/字符串2,n)

  1. 不包含’\0’

strcat

strcmp

功能

将数组2/字符串2连接到数组1之后

功能

比较两个字符串的大小

写法

strcat(数组1,数组2/字符串2)

写法

strcmp(数组1/字符串1,数组2/字符串2)

  1. 数组1的容量足够大
  2. 数组1中的‘\0’会被覆盖

方法

从左至右,依次比较每个字符的ASCII码值,直到遇到不同的ASCII码或者’\0’结束

strncat

返回值

大于0:字符串1 > 字符串2

等于0:字符串1 == 字符串2

小于0:字符串1 < 字符串2

功能

将数组2/字符串2的前n个字符连接到数组1之后

strncmp

功能

比较字符串的前n个字符的大小

写法

strncat(数组1,数组2/字符串2,n)

写法

strncmp(数组1/字符串1,数组2/字符串2,n);

二维数组

二维数组的概念:元素为一维数组的数组(数组的数组数据类型相同地址连续

定义二维数组

方法

存储类型 数据类型 数组名[行数][列数]

int a[2][3]

[行数]

有几个一维数组

[列数]

一维数组中有几个元素

二维数组的初始化

部分初始化

未初始化部分的值为0

int a[2][3] = {1,2,3};

对数组中的元素清零

int a[2][3] = {0};

全部初始化

数组元素的个数可以省略数组的元素个数由后面赋值的具体个数来决定

int a[2][3] = {1,2,3,4,5,6};

int a[2][3] = {{0},{4,5,6}};

int a[ ][3] ={1,2,3,4,5};

注:二维数组的行数可以省略,但是列数不能省int a[2][ ] = {1,2,3,4,5,6};×××××

二维数组

的访问

数组名[下标]

下标必须从0开始

int aint a[2][3] = {1,2,3,4,5,6};

a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]

二维数组的输

入和输出

int a[2][3]

for(i = 0;i <2;i++)

{

   for(j = 0;j< 3;j++)

{

   scanf(%d,&a[i][j]);//输入printf(%d,a[i][j]);//输出

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追求~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值