C语言学习必备笔记(持续更新中)
目录
一、了解C和编程
编程的步骤
1.清晰定义程序的目标。2.设计程序。3.编写代码。4.运行。5.debug。
有时候编程并非一个线性的过程。但磨刀不误砍柴工,应该养成先规划再动手编写代码的好习惯,用纸和笔记录下程序的目标和设计框架。——《C Prime Plus》
C的示例
#include <stdio.h> //头文件
int abc();
void main(){ //main函数总是第一个被调用的函数
abc(); //调用函数。
printf("111");
}
int abc(){ ......}
二、基本语法介绍
2.1 变量与常量
与Java语法类似。在Java基本知识中作者就不再过多赘述。
- 变量
<类型名称> <变量名称(标识符)> = <初始值>
例:int price=0
(定义了一个变量,名字是price,类型是int,初始值是0。)
注意:=表示赋值,表示将右边的值赋给左边。
- 常量
例:int a=100-price
100就是常量。更好的方式是定义一个常量 ,如下:
const int amount=100
const它限定一个变量不允许被改变,产生静态作用。 - 表达式
表达式包含 运算符 和 算子,运算符是动作,算子是参与运算的值。
单目运算符 只有一个 算子, 双目运算符 有两个 算子。
2.2 scanf与printf,float与double
printf
:打印到显示器
scanf
:键盘输入一个数值 , 例如:scanf("%d",&price)
注意:出现在scanf内的东西是一定要输入的东西。
float/double
:
整数运算结果只为整数,将 int 改为 double/float就为浮点数。(10->10.0)
注意:使用浮点数时,printf都用 %f 类型。
用 double 时,scanf 应该用 %lf 类型。
用 float 时,scanf 用 %f 类型。
2.3 运算符
优先级: 单目>运算>关系>逻辑>条件>赋值
- 单目运算符
!
非
++
和--
让变量加1(++)或减1(–)。
注意:++和–是特殊的单目运算符。叫做递增递减运算符。
表达式c=count++
作用:给count+1,但是表达式c是count原来的值。
表达式c=++count
作用:给count+1 ,而且表达式c= count+1。 - 算数运算符 (加减乘除)
- 关系运算符
==
相等
!=
不相等
<=
小于等于
>=
大于等于
注意:关系运算符的输出为0或1。判断是否相等的==和!=优先级比其他关系运算符低。 - 逻辑运算符
与、或、非(&&、||、!)
注意:对逻辑量进行的运算,结果只有0或1。
短路:逻辑运算是自左向右的。如果左边已经可以决定结果,就不用计算右边。&&,如果左边是false,右边不计算。‖,如果左边是true,右边不计算 - 条件运算符
例:a>b?b:a
如果a>b那么是b否则是a。 - 复合赋值运算符
+= -= *= /=
例:total+=3 就行total=total+3 - 逗号运算符
优先级最低,多用于for循环。
例:i=(3+4,5+6),右边的表达式做结果。i=11。
2.4 条件与循环
//if与else条件
if( 条件 ){
}else{ }
if( 条件 ){ }
else if( 另一条件 ){
}
//while do-while 循环
while(条件){ 循环体 }
do{
}while();
- for循环(重要)
像一个计数循环,设定一个计数器,初始化它,之后在计数器达到某值前重复执行循环体,而每一轮循环,计数器以一定步进调整。
语法:for(初始条件(循环控制变量);循环继续的条件;循环控制变量修改条件){ }
例:for( i=1; i<=n;i++;)
解释:for循环执行步骤,先执行i=1,之后执行i<=n,若成立,执行循环体,最后执行i++。
小套路:求和时,记录结果的变化量应初始化为0。求积时,计录结果的变化量应初始化为1。
2.5 Switch-case
//语法
switch(控制表达式){
case 1:{
printf(" ");
break;}
default: //都不满足case时
printf(" ")
break;}
- break与continue
->遇到break跳出整个循环,进入下一个循环。
->遇到continue跳过接下来的循环,继续循环。 - 提出一个小技巧
做x%10
得到x的个位。做x/10
可去掉个位。>>>除以100呢?1000呢?
做x%n
可获得[0,n-1]的数。
暂时结束语
自我见解:
在学习时,应多动手上机敲代码,自己多找一找题练习。(推荐C prime plus这本书)千万不要好高骛远,只有自己动手才知道自己掌握如何,也不要认为自己看一节课就会了,一定要实践,实践出真知!!!
如果仅仅有输入知识的过程,没有输出知识的过程,学习是极其低效的。
MOOC的Java学习连接
如果已经看过C的课,可以看一看翁恺老师的Java基础课,大部分和C的一样,只不过有一些小的细节和语法不同。当作二次练习。
2.6 数组
- 定义数组
<类型> 变量名称 [元素数量]
int a [5]
- 数组的集成初始化
int b[3]={1,2,3}
或int count[5]={0}
,count数组每一项元素都为0。 - 数组的遍历
int a = [5];
for(i=0;i<5;i++){
a[i]=1;
}
a[5]=1; // error,应保证只使用有效的下标值[0,数组的个数-1]。
- 二维数组的遍历
//i行j列
for(i=0;i<3;i++){
for (j=0;j<5;j++){
a[i][j]=1; //是单独的一个整形变量。
}
}
- 二维数组的集成初始化
//表示一个2行5列的数组,c语言中数组的列数必须给出。
int a[][5] = { {2,3,4,5,6},
{1,2,3,4,5},
};
**(持续更新中。。。)**