1、main函数要有返回值
2、变量
- int 型-2109 ~2109
- long long int -91018 ~91018
- float 6~7位
- double 15~16位
- 字符型:注意\0代表的是空字符NULL,不是空格;
- (新类型名)变量名,强制转换
3、常量
- 宏定义 //#define
- const 数据类型名 变量名=常量 // const double pi=3.1415926535
4、运算符
- 除法运算符是向下取整的(直接舍掉小数)
- 条件运算符:( ? : )是c语言中唯一的三目运算符
- 复合运算符 m/=(n+1) 即m=m/(n+1)
5、scanf()与printf()
- scanf处了整个数组的输入外,都需要取地址符
- scanf除了%c外,对其他格式符的输入是以空白符(空格,换行等)为结束标志的,字符数组使用%s读入的时候以空格跟换行为读入结束的标志。
- double型在printf中为%f,在scanf中为%lf
- %md ; %0md ;%.mf;(以m位进行右对齐输出,不足m位空格补上;以m位进行右对齐输出。不足m位用0补上;保留m位小数)
6、getchar和putchar
- getchar可识别换行符
7、常用math函数
- fabs(double x) //double float型取绝对值
- floor(double x) ceil(double x) //double float型向上向下取整
- pow(double r, double p) // double float 型 r的p次方
- sqrt(double x) //double型的算数平方根 sqrtf(float x) float型
- log(double x) logf(float) //分别为 double float 型的对数
- sin(double x);cos(double x);tan(double x);
- asin(double x);acos(double x);atan(double x); //反三角函数
- round(double x) //四舍五入
8、if语句
- if(n)=if(n!=0)
- if(!n)=if(n==0)
9、switch
- 如果没有break ,switch 就会从匹配的位置开始,执行到结束
10、while
- 省略的方式和if相同
while(n)=while(n!=0)
while(!n)=while(n==0)
11、do while
- 会先执行一次循环体
12. for
- C语言中不允许在for里面定义变量
- c++可以在for里面定义变量
13、break 和continu
- break是直接退出循环
- continue是结束当前循环,进入下一循环
14、数组
- C语言中定义数组,要定义出大小,数组的大小只能是常量不能是变量
- 如果数组大小较大(大于106级别),要定义在main函数外面。
- memset可以为数组赋相同的值,for example //menset(shuzuming,key,sizeof(shuzuming))
- 字符数组可以直接赋值字符串来赋值 //scanf("%s",str);//不用加取地址符
- gets()识别换行符作为输入结束,puts()输出后会多一个换行
15、string.h中的函数
- strlen()
- strcmp() 返回是一个int型//逐位比较的
- strcpy(目标字符串,被复制字符串) //结束符\0也会被复制过去(覆盖)
- strcat(目标字符串,被复制字符串)//接到目标字符串后面
16、sscanf 与 sprintf
- sscanf(str, “%d” ,&n); //把str中的内容以%d的形式写到n中
- sprintf(str, “%d”,n); //把n以%d的形式写到str中、
for examp
sprintf(str, “%d:%.2f,%s” , n, db, str2);
//sprintf 将int型变量n,double型变量db,char型数组str2以%d:%.2f,%s格式写到字符串数组str中
17、函数
- 以数组作为函数的参数时,第一维不需要写长度
- 函数中对数组修改,数组就会发生变化 //修改数,数不会变
18、指针
int *p 实际上是 int* p
int *p=&a,是将a的地址赋给了p,而不是*p
- 数组比较特殊,数组名就是记录数组的首地址,即a=&a[0],a+i与&a[i]等价
19、结构体
-
访问指针变量
struct studentInfo{
int id;
char name[20];
studentInfo* next;
}stu, *p;访问
(*p).id=p->id
(*p).name=p->name
(*p).next=p->next