不知不觉已到八月,我在华清学习了c语言,数据结构,Linux。
虽然这些知识在大学已经学习过,但通过这个月的复习,让我发现了诸多不足之处。
通过实际证明复习,是掌握知识的有效途径。
以下总结在c语言,数据结构我在学习中遇到的问题;
c语言:
1.数组:只对数组中某一部分元素进行初始化,其他元素为0
2. 字符串:c 语言没有专门用于存储字符串的变量类型,字符串都被存储在 char 类型的数组中。所以,其本质是数组;
3.在自增、自减运算符 中:
变量
++
:先把变量的值用于参与其他的运算,然后变量
+1
赋值给变量
++
变量:先把变量的值
+1
,然后在用变量的值参与其他运算
4.三目运算符(三元表达式)c > a ? c+a : c-a
语法:
条件表达式 ?表达式成立进行运算执行语句 :表达式不成立进行执行的语句;
5.scanf输入语句不能连续输入多个字符类型。
原理:
scanf是从标准输入缓冲区中读取输入的数据,而%c的字符输入格式会接收回车字符,在输入第一个scanf时输入字符后按 回车结束,输入缓冲中保存了这个回车符,遇到第二个scanf时,它自动把这个回车符赋给了ch2。
解决办法:
1.清空输入缓冲区
第一个scanf后加入语句:fflush(stdin); //C语言清空输入缓冲区函数
2.格式控制中加入空格
将第二个scanf改为:scanf(" %c",&ch2);//在%号前面加一个空格
6.数据类型转换:
1.
隐式类型转换
在进行运算时默认会把精度低的数据,转换为精度高的数据类型,进行运算。
2.
显示类型转换(强制类型转换)
如果想把精度高的数据,转为精度低的类型,需要使用强制类型转换,如:b = (int)a;
把
a
的值转换为
int
类型
7.函数:
void:无返回值,空类型,没有类型,
数据结构
-
数据结构就是,表示数据之间的逻辑结构(关系)和存储结构(存储方式)以及对具有关系的数据怎么进行操作使用。
- 头节点:
(1)数据结构中,在单链表的开始结点之前设立一个节点称之为头结点,头结点的数据域可以不存储任何信息,头结点的指针域存储指向第一个结点的指针(即第一个结点的存储位置)
(2)作用:方便链表的操作,减少代码量, -
计数排序
1.
找待排序中数据最大的元素
2.
定义一个新数组,数组的大小待排序中数据最大的元素
+1
,下标最大为 排序序列的最大值,把值
设置为
0
3.
遍历待排序的数组,依次把数据作为新数组的下标
4.
新数组中,如果待排序数据有一个值,则新数组下标内容
+1
1.数组:只对数组中某一部分元素进行初始化,其他元素为0
2. 字符串:c 语言没有专门用于存储字符串的变量类型,字符串都被存储在 char 类型的数组中。所以,其本质是数组;
3.在自增、自减运算符 中:
变量 ++ :先把变量的值用于参与其他的运算,然后变量 +1 赋值给变量 ++ 变量:先把变量的值 +1 ,然后在用变量的值参与其他运算4.三目运算符(三元表达式)c > a ? c+a : c-a
语法: 条件表达式 ?表达式成立进行运算执行语句 :表达式不成立进行执行的语句; 5.scanf输入语句不能连续输入多个字符类型。 原理: scanf是从标准输入缓冲区中读取输入的数据,而%c的字符输入格式会接收回车字符,在输入第一个scanf时输入字符后按 回车结束,输入缓冲中保存了这个回车符,遇到第二个scanf时,它自动把这个回车符赋给了ch2。解决办法:
1.清空输入缓冲区
第一个scanf后加入语句:fflush(stdin); //C语言清空输入缓冲区函数
2.格式控制中加入空格
将第二个scanf改为:scanf(" %c",&ch2);//在%号前面加一个空格
6.数据类型转换:
- 数据结构就是,表示数据之间的逻辑结构(关系)和存储结构(存储方式)以及对具有关系的数据怎么进行操作使用。
- 头节点:
(1)数据结构中,在单链表的开始结点之前设立一个节点称之为头结点,头结点的数据域可以不存储任何信息,头结点的指针域存储指向第一个结点的指针(即第一个结点的存储位置)
(2)作用:方便链表的操作,减少代码量, - 计数排序 1. 找待排序中数据最大的元素 2. 定义一个新数组,数组的大小待排序中数据最大的元素 +1 ,下标最大为 排序序列的最大值,把值 设置为 0 3. 遍历待排序的数组,依次把数据作为新数组的下标 4. 新数组中,如果待排序数据有一个值,则新数组下标内容 +1



