1、程序结构是三种:顺序结构,循环结构(三个结构),选择结构(if和switch)
2、读程序都要从main()入口,然后从上面顺序往下读,(碰到循环做循环,碰到选择做选择)。
3、计算机的数据在电脑中保存是以二进制的形式,数据存放的位置就是它的地址。
4、bit是位 是指0或者1。byte是指字节,1一个字节=8个位。
5、一定要记住二进制如何化成十进制
概念常考到的:
1、编译预处理不是c语言的一部分,不会占运行时间,c语言编程的程序称谓源程序,它以ASCII数值存放在文本中。
2、每个c语言程序中main函数有且只有一个。
3、在函数中不可以再定义函数。
4、算法的是一定要输出的,他可以没有输入
5、break可用于循环结构和switch语句
6、逗号运算符的级别最低。
一、合法用户标识符考察
1、合法的要求是由字母,数字,下划线组成。有其他元素就错了。并且第一个必须由字符或下划线组成。第一个为数字就错了。
2、关键字不可以做为用户标识符号,main define scanf printf 都不是关键字。迷惑你得地方If是可以做为用户标识符,因为I发的第一个字母大写了,所以不是关键字
二、实行数据的合法形式
2.333e-1就是合法的,且数据是2.333*10-1。考试口诀:e前e后必有数,e后必为整数。
三、字符数据的合法形式
‘1’是占一个字节,“1”是字符串占两个字节(含有一个结束符号)‘0’的ASCII数值为48,‘a’的ASCII数值为97,‘A’的ASCII数值为65。
四、整型一般是两个字节,字符型是一个字节,双精度一般是4个字节
考试的时候一般会说,在16位编译系统或者在32位编译系统。碰到这种情况,不要去管,一样做题,掌握整型一般是两个字节,字符型是一个字节,双精度一般是4个字节就是了。
五、转义字符考察
在程序中int a=0x6d,是把一个16进制的数给变量a,注意这里的0x必须存在
在程序中int a=067,是一个八进制的形式。
在转义字符中,‘\\x6d’才是合法的,0不能写,并且x是小写。
‘\\141’是合法的,0是不能写的。
‘\\108是非法的,因为不可以出现8’8进制。
六、算数运算符的优先级别
同级别的有的是从左到右,有的是从右到左
七、强制类型转换
一定是(int)a不是int(a),注意类型上一定有括号
注意(int)(a+b)和(int)a+b的区别,前面是a+b转型,后面是a转型后加b。
八、表达式的考查
是表达式就一定有数值
赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。
自加、自减表达式:a=5,++a是6,a++是5
运行的机理++a是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,再放到变量a中,进行了++a和a++后在下面的程序中在用到a的话都是变量a中的6了。
考试口诀:++在前先加后用,++在后先用后加。
九、位运算的考查
总的处理方法:几乎所有位运算的题目都是按这个流程来处理的(先把十进制变成二进制再变成十进制)
例题:char a=6,b;
b=a<<2(a< 例题:在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。 十、018的数值是非法的,八进制是没有8的,逢8进1 十一、%(求模)符号两边要求是整数,不是整数就错了 十二、三种取整丢小数的情况: 1、int a=1.6; 2、(int)a; 3、3/2 第四章 1、printf函数的格式考查 %d对应整型,%c对应字符型,%f对应单精度,-号为左对齐控制符,%ld对应long int,%f对应double。 2、scanf函数的格式考察 注意该函数第二部分是&a这样的地址,不是a scanf(“%d%d*d%d”,&a,&b,&c)跳过输入的第三个数据 3、putchchar,getchar函数的考察 char a=getchar()是没有参数的,从键盘得到你输入的一个字符给变量a putchar(“y”)把y输出到屏幕中 4、如何实现两个变量x,y中的数值的互换 不可以把x=y,y=x,要使用中间变量t=x x=y y=t 5如何实现保留三位小数,第四位四舍五入的程序,(int)(a*1000+0.5)/1000.0 注意x=(int)x时小数部分要去掉 第五章 1、关系表达式 表达式的数值只能为1(真)或0(假) 当关系的表达式为真的时候得到1,如9>8这个是真的吗,所以表达式的数值就是1 2、逻辑表达式 只能为1(真),或0(假) 或&&一错全错 与||一对全队 !非相反 !>&&>||优先的级别 注意短路现象,考试比较喜欢考到 要表示x是比0大,比10小的方法,0 else 是与最接近的if且没有else的相组合的 4、条件表达式 表达式1?表达式2:表达式3 注意当非0的时候是表达式2的数值,当为0的时候是表达式3的数值 考试口诀:真前假后 5、switch语句 一定要注意有break和无break的差别,没有break时候只要一个case匹配了,剩下的都要执行,有break则是跳出switch语句,default可以放在任何位置,也只起标号作用 第六章 1、三种循环结构 for();while()do-while()三种 for循环当中必须是两个分号,千万要记住 写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环 do-while()循环的最后一个while();的分号一定不能丢。这个循环不管条件如何都要先运行一次 2、break和continue的差别 break:是打破的意思,所以看见break就退出整个一层循环 continue:是继续的意思,但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环的开始,然后判断循环条件,进行新一轮的循环。 3、嵌套循环 就是有循环里面还有循环,这种比较复杂,要一层一层的耐心计算,一般记住两层是处理二维数组打的 4、while((c=getchar())!=“\\n”)和while(c=getchar()!=“\\n”)的差别 (!=号的级别高于=号) 注意这里的括号的重要性 第七章 数组 1、一维数组的重要概念 对a[10]这个数组的讨论 a表示数组名,是第一个元素的地址,也就是a[0]的地址 a是地址常量,所以只要出现a++或者是a=a+2赋值都是错误的 a是一维数组名,所以它是列指针,也就是说a+1是跳一列 2、对a[3][3]的数组讨论 a表示数组名,是第一个元素的地址,也就是a[0]的地址 a是地址常量,所以只要出现a++或者a=a+2赋值都是错误的 a是二维数组名,所以它是行指针,也就是说a+1是跳一行 a[0]、a[1] 、a[2]也是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1、a[1]+1、a[2]+1都是跳一列 注意a和a[0]它们是不同的,它们的基类型是不同的,前者是一行元素,后者是一列元素 3、二维数组做题目的技巧 如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目 步骤1 把他们写成 第一列 第二列 第三列 a[0] 1 2 3 第一行 a[1] 4 5 6 第二行 a[2] 7 8 9 第三行 步骤二 *(a[0]+1)我们就知道是第一行的第一个元素往后跳一列,那么这里就是a[0][1]元素,所以就是2 *(a[1]+2)我们就知道是第二行的第一个元素往后跳两列,那么就是a[1][2]元素,所以是6 数组的初始化,一维和二维的,一维的可以不写,二维的一定要写 int a[]={1,2}合法。int a[][4]={2,3,4}合法,但int a[4][]={2,3,4}非法 二维数组的行指针 int a[1][2] 其中a现在就是一个行指针,a+1跳一行数组元素,搭配(*p)[2]指针 a[0],a[1]现在就是一个列指针,a[0]+1跳一个数组元素,搭配*p[2]指针数组使用 记住脱衣法则 a[2]变成*(a+2) a[2][3]变成*(a+2)[3]再可以变成*(*(a+2)+3) 第八章 函数 函数:是具有一定功能的一个程序块 函数的参数,返回值 main() { int a=5,b=6,c; c=add(a,b) printf(\"%d\ } 调用函数 a,b是实参 整个函数得到一个数值就是add函数的返回数值 int add(int x,int y) { int z; z=x+y; return z; } 被调用函数 x,y是形式参数 函数返回值是整型 1、z就是这个add函数计算后得到的结果,就是函数返回主程序的返回数值,程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值,当得到了返回数值后,再顺序的往下执行 2、一定要注意参数之间的传递 实参和形参之间传数值和传地址的差别(考试重点) 传数值的话,形参的变化不会改变实参的变化 传地址的话,形参的变化就有可能改变实参的变化 3、一定要有:函数名,函数返回类型,函数的参数类型 不一定要有形参的名称 第十章 指针 指针变量的本质是用来放地址,而一般的变量是放数值的 int *p 中*p和p的差别 *p可以当变量来用,*的作用是取后面地址p里面的数值 p是当作地址来用的 *p++是地址会变化 (*p)++是数值变化 4、三名主意 数组名:表示第一个元素的地址,数组名不可以自加,他是地址常量名 函数名:表示该函数的入口地址 字符串常量名:表示第一个字符的地址 第十一章 文件有两类:二进制文件和文本文件 文件指针:FILE *fp;不可忘,它是文件操作重要手段 文件操作有三步,打开文件,读写文件,关闭文件 打开文件:模式要注意,双引号“r”只读(文件要存在)“w”只写(文件必新建)“a”(只写)追加,加b是二进制文件操作,加+号是读写均可,另外fopen()函数失败返回0 读写文件事需注意;当前文件位置是否是文件末尾都用feof(fp)判断,是末尾0,不是非0;几种读写操作函数字符(fgetc,fputs)字符串(fgets,n-1个字符;fputs)数据(fread,fwrite。fprintf、fscanf)文件位置定位(fseek函数格式) 关闭文件;不能忘fclose(fp)成功0失败非0 因篇幅问题不能全部显示,请点此查看更多更全内容