1.#include<stdio.h>
使用头文件stdio.h这是c语言常用的头文件,经常用的还有stdlib.h math.h string.h
C++ 用的是iostream.h
也可以写成#include ”stdio.h”,建议使用这种方法,因为以后会学到一种类似于结构体的类,当你需要自己在别的地方写了类以后,需要用#include “”,而不能使用<>
2. int main() { return 0; }
void main() {}
int 类型的主函数需要return 0;结束函数,因为return 0;代表正常结束
void类型可以不用return 0;
3.输入语句
int a; scanf( “%d” , &a );
int : %d double : %lf float : %f char : %c string(字符串) : %s
& 后面指针的时候会详细介绍,在这里只需要记住,除了输入字符串的时候都需要写
如果前面有好几个输入数 则可 &a , &b
4.输出语句
int a; printf( “%d\n” , a );
scanf printf 语句是在stdio.h类库中的
%m.nf 共占m行,其中有n位小数,不够位数左侧补0
\n 换行符 \t 横向跳转 \r 回车 \\ 反斜杠
5.c语言的单词们
标记符
保留字
int long void char float short return double else( if语句 ) break( 跳出 ) if( 选择语句 ) union( 共用体) struct( 结构体 ) do( while语句 ) for( 循环语句 ) case( swich语句 ) enum( 枚举类型 ) while( 循环语句 ) signed( 有符号的 ) switch( 选择语句 ) unsigned( 无符号的 ) extern( 使用外部函数 ) const( 不能修改定义的变量的值 ) countinue( 跳出当前此次循环体 ) typedef( 给你指定的类型更换名字 ) register( 将变量存放到寄存器,数量有限,谨慎使用 ) static( 静态变量,在静态内存区域分配变量存储空间 ) sizeof( 字节的长度,例double a[5]; sizeof(a[5])的值为8 ) goto( 制定到哪步后跳转到哪里,不建议使用,容易出错 ) default( swich语句中不满足上面任何一个case,则执行default ) volatile( 每次重新从内存中读取数据到寄存器,而非直接从寄存器中读取 )
标记符的命名规则:
标记符由字母 数字 下划线组成,其中第一个字符必须是字母或下划线
常量
运算符
分隔号; # [ ] ( )
5.注释 空格 空行
注释/* */
尽量养成写注释的习惯,省的以后自己或他人,不知定义的是什么意思
适度的空格 空行也容易使程序清晰易懂
6.定义
变量定义
1. 类型名 变量名表
2. 命名规则
见名知义,命名时字母习惯用小写
3. 变量使用前必须先定义
4. C语言分大小写,所以fa与Fa是不同的
函数定义
1. 函数类型 函数名(形式参数表) { 函数 }
2. 如果调用函数在主函数的后面,那么主函数前面必须先定义
结构体定义
7.运算符
初等运算符 () [] -> .
单目运算符 ! ~ + - (类型名) * & ++ -- sizeof
逻辑非 !
按位取反 ~
正号 + 负号 -
类型强制转换 (类型名)
取值 * 取址 &
自加 ++ ( a++与++a不同,a++是先用a的值再自加,++a是先自加再赋值 )
自减 --
长度运算符 sizeof
算数运算符 + - * / %
( /int型除以int型求得的数一定是int型的 )
移位运算符 << >>
<< 左移
>> 右移
关系运算符 < > <= >= == !=
< 小于 <= 小于等于 >大于 >=大于等于 ==相等 !=不等
位逻辑运算符 & ^ |
逻辑运算符 && ||
三目运算符 ?:
赋值运算符 = += -= *= /= %= &= ^= != >>= <<=
= 与 == 是不同的,= 是赋值,== 是判断左右是否相等
逗号运算 ,
8.循环语句
for语句
1. 语法
for(语句1 ; 语句2 ; 语句3){ 函数体 }
执行语句1;然后看是否满足语句2;若不满足则结束;若满足执行函数体,然后运行语句3;再看是否满足语句2;然后循环至不满足语句2
2. for语句中用 ; 链接
3.语句2若没有则说明要一直循环
while语句( do-while语句 )
1. while(a) { 语句 }
a为真时,执行语句部分
2. do{ 语句 }while(a);
先执行语句,然后看a语句是否正确,若真,则执行语句部分
3. continue跳出此次循环,继续下一次循环
9.字符型数据
字符 ’ ’ 字符串 ” ”
字符型变量 char a;
%c
getchar()函数 ch =getchar();
putchar()函数 putchar(ch);
字符串结束符 ‘ \0 ’
10.选择语句
switch语句
1. switch(a){
case 1:语句1;
case 2:语句2;break;
default:语句3;break;
}
2. break
如果没有break,则执行继续执行下一行语句。例a == 1;则执行完语句1后继续执行语句2,然后遇到break,结束
3. default
若switch后括号里的不是case后的任何值,则执行default
default可以省略
if-else语句
if(){} else{}
if(){} else if(){} else{}
if后括号里的值为真或1,则执行if后大括号里的语句
11.数组
一位数组
1. 定义
类型说明符 数组名[ 常量表达式 ]
2. 数组是从0开始计算的
3. 不允许出现定义时,a[ k ]
二维数组
常用的函数
1. puts( 字符数组 ) 输出字符串后换行
2. gets( 字符数组 ) 输入字符串
3. strcat(字符数组1 , 字符数组2) 把数组2放在数组1后面
4. strcpy(字符数组1 , 字符数组2) 数组2复制到数组1中
5. strcmp(字符数组1 , 字符数组2) 比较,如果1>2,函数返回正数;1<2,负数;1=2,函数值为0
6. strlen(字符数组1 , 字符数组2) 测试长度
7. strlwr(字符串) 将大写字母改为小写字母
8. strupr(字符串) 将小写字母改为大写字母
12.静态变量
static 上一次使用完的值这次接着使用
13.指针
定义
类型 *变量名
*的两种用法
变量定义时*无意义,只是说明变量是指针
其余地方*代表取指针所指的值
指针的赋值
只能赋给类型相同的指针
Int a[5];int *p;
p = a; 与p = a[0];相等
函数间传值,使用指针可以改变传入变量的值,否则调用函数一般不会改变传入参数的值
*p. p-> 都可以说明为访问结构体成员
14.结构体
形式
struct 结构体名字 {}
常用函数
1. malloc函数
分配内存为size的连续空间,若没成功就返回null
( int * )malloc ( sizeof( int ) )
2. calloc函数
分配n个内存为size的连续空间
3. free函数
释放内存区域
Free( p );
15. 文件
typedef struct{
short level;
unsigned flags;
char fd;
short bsize;
unsigned char *buffer;
unsigned char *curp;
unsigned char hold;
unsigned istemp;
short token;
}FILE
打开文件
fopen(” 文件名 ” , ” 文件打开方式 ”);
使用方式 含义
r 打开文本文件只读
w 创建文本文件只写
a 打开文本文件追加
r+ 打开文本文件进行读写
w+ 创建文本文件进行读写
a+ 打开文本文件进行读写
exit( 0 ) 关闭所有打开的文件,并终止程序的执行
关闭文件
fclose(文件指针);
fgets() fgetc() fputc(ch,fp) fputs(s,n,fp) fscanf() fprintf()
fputc( ch , fp ) 把ch写到fp所指的文件中
16.全局 局部变量
全局变量 函数外面
局部变量 函数里面
17.预处理
#define m x+y
需注意预处理的意思是把m代替x+y,比如说x = 1 ; y = 2;则m*m其实是x+y*x+y为5,不是9