一、二维数组的定义和存储
一、二维数组的定义

1、二维数组的应用:图、方阵
2、数组元素的存放顺序:内存是一维的,二维数组:按行优先


a[1]:表示第一行,也表示a[1][]的所有元素


二、二维数组的初始化、遍历
1、元素的初始化

1、不是按顺序存放,部分初始化

2、按顺序存放

3、二维数组只能省略行,不能省略列

1、打印杨辉三角形

2、打印数组中的最大值,行,列

三、多维数组

二、字符数组和字符串
一、一维字符数组和字符串
1、字符数组的用法

1)“abc”='a''b''c''\0'
2)逐个字符赋值


3)0=\0=NULL
2、字符串的用法
4)以字符串的形式赋值

5)用%s打印数组中存放的字符串

这种情况只适合打印以\0结尾的字符串,单个字符赋值有可能出现错误


二、二维字符数组和字符串

1、在赋值的时候,列赋值比要用的大一些,所有的输入都可以用字符串来表示(留出\0的位置,简化输入)
字符串存储-------二维数组!!!
2、打印
1)打印字符串

2)用最原始的数组的形式

3、逆序输出字符串
1)字符串不变,逆序输出



2)字符串倒叙



4)gets和scanf的区别
gets可以取空格,scanf不可以
三、字符串处理函数(一)
man+函数名:查看函数手册

一、strlen函数(只数有效字符,不含\0)






二、strcpy函数--字符串拷贝函数


拷贝源码:

三、strcat函数---字符串连接函数


拷贝加连接

四、strcmp-----字符串比较函数
从左到右逐个字符,直到不同字符。

如果完全相同,字符串较短的比较小。

四、字符串处理函数(二)


man isalpha:

一、strncpy---复制指定长度的字符串

二、strncat---附加指定长度字符串

三、strncmp---只比较前几个字母

四、strncasecmp---忽略大小写比较字符串的大小

五、strchr---在字符串中查找指定字符,返回第一次出现的地址
strrchr---在字符串中查找指定字符,返回最后一次出现的地址


六、strstr---查找字符串

printf("%d",strstr(s1,s2)-s1);
//显示查找的字符串首字符的位次
在命令行界面也可以查找字符串

七、



八、toupper---小写转大写
tolower---大写转小写

五、输入输出专题
一、字符输出函数
1)例子
二、格式输出printf
1、例子

2、特例:输出%

3、附加说明符
1)m
1、如果位数小于m,左边补0,如果位数大于m,则无效,原样输出
2、浮点数,小数点也算一位 123.456 %8d ----前面空一格
2).n


3)字符串的m.n
m:表示空格
.n:表示从前到后保留几个字母

4)+:显示符号
0:用0填充取代空格


4、字符输入函数getchar

ctrl+d结束输出
5、
1)提示语句最好是单独写一行

scanf("%4d",&a)-----控制第一个是4字符(因为没有换行,可以不用回车换行)
2)*nd吸收的值不会赋给变量


6、在输入字符中,空格也会作为有效字符,ascII为32


7、格式的垃圾处理


三种方法
8、字符串的输出
1)字符串通常存放在数组中
2)通常用gets()函数吸入
3)字符串输入通常少1位,默认以\0结尾
4)gets函数并不以空格作为结束,但scanf是
5)puts函数不需要换行符,自动换行
六、控制语句if

一、

1、阶梯型


if和else后面都要加{}
2、注意事项


3、求三角面积

七、控制语句switch
一、应用场景
1、多分支选择结构
2、判断7种文件类型bcd-lsp
二、语法


1、switch里的数据类型可以是整型、枚举、字符。其他类型不同
2、枚举类型
默认从0开始


三、break的作用

强行跳出switch体

如果没有break,则不会跳出switch
四、例子-成绩分级

八、循环语句-goto、while
一、循环结构

二、goto语句的格式!!!
loop:
if()
goto loop;

goto的优点:

集中于一处释放的应用:内存释放、文件描述符关闭、网络关闭、数据库关闭

三、while循环

1、1+...100求和

四、do-while

1、do while和while的区别:do while不管条件是否满足,肯定会执行一次。
2、求和例子



九、循环语句-for
1、for循环的省略



十、循环辅助语句
循环辅助语句
定义:程序因为特殊情况提前结束代码
一、break:判断是不是;打印是
可以跳出循环,但只能跳一层循环

有两个限制条件
打印半径1-10,但是面积不超过100的半径对应的面积

素数练习:


如何跳出多层循环

二、continue
结束本次循环,但是继续下一次
除了特殊条件,打印其他
1、例子:打印从100-110,不是3倍数的数字



三、return

十一、一维数组
数组
一、

1、一维数组


1、数组的地址是连续的
2、数组的地址是第一个数据的地址
3、数组的长度是n个数据的长度
4、语言数组越界,编译器不管
5、只能逐个数组元素引用,不能一次引用整个数组。
6、下标可以是常量,也可以是整型表达式
7、


二、冒泡排序

1、计算数组长度
n=siziof(a)/sizeof(int)
2、代码


十二、注意事项
常用命令
1、man isalpha

2、EOF
1)end of file,即文件结束符,EOF的值是-1。在文本文件中才能使用EOF作为结束符。
2)在使用scanf输入时,如果输入的数据正确,则scanf返回一个正整数,如果输入的是<ctrl+Z>组合键,则表示返回EOF,即-1。
3、Null相当于一个宏定义
#define NULL 0
4、C语言中,只有全局变量、static是放在静态区的,只有在程序结束的时候才释放内存,指针放在栈当中
5、























