经过近两周的c语言课程学习,我对c语言的知识内容的了解也在不断加深。课程内编程环境用的是虚拟机、Linux,通过虚拟机完成c语言代码的编写。在之前,我在学校使用的是vc++进行编写,刚开始对虚拟机上的操作不太熟练,许多快捷键不太会使用,导致敲代码的效率比较低下,在课后,我不断的进行虚拟机的操作练习,也是将这一缺口补了上来。
两周的课程讲解了数据类型、三大结构、运算符、指针、函数、数组等方面。下面就对这几个方面的知识进行概况总结:
一、数据类型
关键字:系统预先定义好的,有特殊含义的,并且都是小写。不能重新定义!(32个)
数据类型:char、short、int、long、float、double、struct、enum、union、void
控制语句:if、else、while、do、for、switch、case、break、continue、default、goto
存储类型:auto、static、extern、register
const:只读
return:返回函数
Signed:有符号数
Unsigned:无符号数
Sizeof: 计算所占内存空间的大小(字节)//sizeof(数据类型),sizeof(变量名)
typedef: 给已有的数据类型起别名
volatile: 防止编译器优化
三大家族:字符型家族、整型家族、浮点型家族
转义字符、常量等。
常量里面的标识常量(宏):宏只是一个单纯的替换!!宏替换不会考虑运算符的优先级!!
例:
#define ADD(x) x+x |
void main() |
{ |
int m=1,n=2,k=3; |
int sum=ADD(m+n)*k; |
printf("sum=%d", sum); |
} |
最后的结果1+2+1+2*3=10
二、三大结构
1、顺序结构(标准输入输出函数)
scanf函数和printf函数
2、选择结构
包括:单分支选择结构,双分支选择结构和多分支选择结构。
单分支选择结构:
if(条件)
{
执行语句;
}
双分支选择结构:
if(条件)
{
语句1;
}
else
{
语句2;
}
多分支选择结构:
(1) if()else if()else if()....else{}
if(条件1为真)
{
语句1;
}else if(条件2为真)
{
语句2;
}else if(条件3为真)
{
语句3;
}.....
else if(条件n为真)
{
语句n;
}else
{
语句n+1;
}
例:输入成绩,输出对应的等级
#include <stdio.h>
int main(void)
{
int score=0;
printf("请输入成绩\n");
scanf("%d",&score);
if(score>=90)
{
printf("A\n");
}
else if(score>=80)
{
printf("B\n");
}
else if(score>=70)
{
printf("C\n");
}
else if(score>=60)
{
printf("D\n");
}
else
{
printf("E\n");
}
return 0;
}
(2) switch,case
switch(表达式)
{
case 标号1:
语句1;
case 标号2:
语句2;
case 标号3:
语句3;
....
case 标号n:
语句n;
default:
语句n+1
}
3、循环结构
循环四要素:(1)循环的初始条件(2)条件判断(3)条件更新(4)循环体
循环语句:
(1)while()
(1)循环初始条件
while((2).条件判断)
{
(4).循环体
(3).条件更新
}
(2)for()
for((1).循环初始条件(多个就逗号隔开);(2).条件判断;(3).条件更新(多个条件逗号隔开))
{
(4).循环体
}
(3)do...while()
(1).循环的初始条件
do
{
(4).循环体
(3).条件更新
}while((2).条件判断);
其中比较特殊的循环:死循环(用于菜单等)
//while语句的死循环
while(1)
{
}
//for语句的死循环
for(;1;)
{
}
循环中的关键字:break(跳出循环)continue(结束本次循环,继续执行下一次循环)
三、运算符
口诀:单算移关与,异或逻条赋
1、赋值运算符(=)
2、算术运算符
+,-,*,/,%,++,--, / 除号 % 求余/取模
3、关系运算符
<,>,<=,>=,==(表示判断是否等于),!=
4、逻辑运算符
&& (有一为假,结果就为假) || (有一为真,结果就为真) !
四、指针和函数
1、指针
指针是一种保存地址(&i)的数据类型
如何定义指针变量:
int i=5;
//定义一个指向int的指针
int * pi;
pi=&i; //pi指向i
//定义一个指向int的指针的指针
int ** ppi;
ppi=π
指针简单的习题
2、函数
(1)变量
全局变量:定义在函数体外部的变量 作用域:自定义开始到文件结束,一般默认为0
局部变量:定义在函数体内部的变量 作用域:自定义开始到最近的文件结束
(2)自定义函数
1、函数声明
返回值类型 函数名(形式参数列表);
//函数声明
void menu(void); //void 空类型
2、调用函数
变量名=函数名(实际参数列表);
变量名=函数名(实际参数1,实际参数2,实际参数3);
//函数调用
menu();
3、函数定义
返回值类型 函数名(形式参数列表)
{
函数体
return 变量名; //若无返回值该句话可以省略
}
void menu(void)
{
printf("(+)--------add\n");
printf("(-)--------sub\n");
printf("(*)--------mul\n");
printf("(/)--------div\n");
printf("(#)--------exit\n");
}
(3)库函数
1、引入头文件
2、调用库函数
五、数组
1、一维数组
(1)一维数组的定义
每个元素的数据类型 数组名[元素的个数](元素的个数必须为常量)
(2)一维数组的初始化
部分初始化和全部初始化
(3)一维数组的访问
(4)一维数组的相关操作
输入、输出、求数组中最大值/最小值、排序等
2、二维数组
(1)二维数组的定义
每个元素的数据类型 数组名[元素的个数] [元素的个数](元素的个数的必须为常量)
(2)二维数组的初始化
(3)二维数组的访问
(4)二维数组的相关操作
输入、输出、求鞍点、杨辉三角
例:杨辉三角
#include <stdio.h>
int main(void)
{
int arr[10][10]={0};
int i=0,j=0;
//输入
for(i=0;i<=9;i++)
{
for(j=0;j<=i;j++)
{
if(j==0||i==j)
{
arr[i][j]=1;
}else
{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
}
//输出
for(i=0;i<=9;i++)
{
for(j=0;j<=i;j++)
{
printf("%-5d",arr[i][j]);
}
printf("\n");
}
return 0;
}
对于以上的内容,有些内容掌握的差不多,有些内容一知半解,在这次的测试中,我深感自身能力的不足,在后面的课程中,我会逐步查缺补漏,不断加深巩固c语言的知识。同时,也会加强自身敲代码的实践能力,不停留在纸上谈兵的阶段。
以上,就是我这两周来的课程总结。