?
例2: 一定要记住,?
例3: 在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。? 10)018的数值是非法的,八进制是没有8的,逢8进1。 ?
11)%符号两边要求是整数。不是整数就错了。?
12) 三种取整丢小数的情况:? 1、int a =1.6;? 2、(int)a; ? 3、 ? ?
第二章?
1)printf函数的格式考查:?
%d对应整型;%c对应字符;%f对应单精度等等。宽度的,左对齐等修饰。?
%ld对应 long int;%lf 对应double。? 2)scanf函数的格式考察:?
注意该函数的第二个部分是&a 这样的地址,不是a; ? Scanf(“%d%d%*d%d”,&a,&b,&c); 跳过输入的第三个数据。?
3)putchar ,getchar 函数的考查:?
char a = getchar() 是没有参数的,从键盘得到你输入的一个字符给变量a。-
putchar(‘y’)把字符y输出到屏幕中。? 4)如何实现两个变量x ,y中数值的互换(要求背下来)?
不可以把 x=y ,y=x; 要用中间变量 t=x;x=y;y=t。?
5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)?
这个有推广的意义,注意 x = (int)x 这样是把小数部分去掉。? ?
第三章?
特别要注意:c语言中是用非0表示逻辑真的,用0表示逻辑假的。? 1)关系表达式:? 表达式的数值只能为1(表示为真),或0(表示假)?
当关系的表达是为真的时候得到1。如 9>8这个是真的,所以表达式的数值就是1;?
17 / 30
2)逻辑表达式:? 只能为1(表示为真),或0(表示假)? a) 共有&& || ! 三种逻辑运算符号。? b) !>&&>|| 优先的级别。?
c) 注意短路现象。考试比较喜欢考到。? d) 要表示 x 是比0大,比10小的方法。0 else 是与最接近的if且没有else的相组合的。? 4)条件表达式:? 表达式1 ?表达式2 :表达式3? 注意是当非0时候是表达式2的数值,当为0是就是表达式2的数值。? 考试口诀:真前假后。? 5)switch语句:? a)一定要注意 有break 和没有break的差别,书上(34页)的两个例子,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。? b)switch只可以和break一起用,不可以和continue用。? ? 第四章? 1)三种循环结构:? a)for() ; while(); do- while()三种。? b)for循环当中必须是两个分号,千万不要忘记。? c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。- d) do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错)? 2) break 和 continue的差别? 记忆方法:? break:是打破的意思,(破了整个循环)所以看见break就退出真个一层循环。? continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。? 3)嵌套循环? 就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。? 4) while((c=getchar())!=’\\n’) 和 while(c=getchar() !=’\\n’)的差别? 先看a = 3 != 2 和(a=3)!=2 的区别:? (!=号的级别高于=号 所以第一个先计算 3!=2) 第一个a的数值是得到的1;第二个a的数值是3。? 考试注意点: 括号在这里的重要性。? ? 第五章? 函数:是具有一定功能的一个程序块;? 1) 函数的参数,返回数值(示意图):? main()? {? int a = 5,b=6,c;? c = add(a,b);? printf(“%d”,c);? }? ? 调用函数? a,b是实参? 整个函数得到一个数值就是? Add函数的返回数值。? int add ( int x, int y)? {? int z;? z=x+y;? return z;? }? 被调用函数? x,y是形式参数? 函数返回数值是整型? ? z就是这个add函数计算后得到的结果,就是函数返回给主程序的返回数值。- 程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值。当得到了返回数值后,再顺序的往下执行? 2)一定要注意参数之间的传递? 实参和形参之间 传数值,和传地址的差别。 18 / 30 (考试的重点)? 传数值的话,形参的变化不会改变实参的变化。? 传地址的话,形参的变化就会有可能改变实参的变化。? 3)函数声明的考查:? 一定要有:函数名,函数的返回类型,函数的参数类型。? 不一定要有:形参的名称。? ? 第六章? 指针变量的本质是用来放地址,而一般的变量是放数值的。? int *p 中 *p和p的差别:? *p可以当做变量来用;*的作用是取后面地址p里面的数值? p是当作地址来使用。? *p++ 和 (*p)++的之间的差别:改错题目中很重要? *p++是 地址会变化。? (*p)++ 是数值会要变化。 ? 三名主义:(考试的重点)? 数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)? 函数名:表示该函数的入口地址。? 字符串常量名:表示第一个字符的地址。? ? 第七章? 1一维数组的重要概念:? 对a[10]这个数组的讨论。? 1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。? 2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。? 3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。 ? 对a[3][3]的讨论。? 1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。? 2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。? 3、a是二维数组名,所以它是行指针,也就是说a+1是跳一行。? 4、a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1,a[1]+1,a[2]+1都是跳一列。? 5、注意a和a[0] 、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。? 二维数组做题目的技巧:? 如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。? 步骤一:把他们写成: 第一列 第二列 第三列 ? a[0]à 1 2 3 ->第一行? a[1]à 4 5 6 —>第二行? a[2]à 7 8 9 ->第三行? 步骤二:这样作题目间很简单: ? *(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。? *(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)- 这个思想很重要!? 学习 模拟试题:::: 一、 选择题 1、字符串\的长度是:( ). 19 / 30 A、3 B、11 C、7 D、5 2、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为()。 A、double B、不确定 C、int D、float 3、下列语句的结果是()。 main() { int j; j=3; printf(\ printf(\} A、3,3 B、4,4 C、3,4 D、4,3 4、逻辑表达式!(2-1)&&x||0的值是( ) A、1 B、0 C、3 D、2 5、int a=1,b=2,c=3; if(a>b)a=b; if(a>c)a=c; 则a的值为()。 A、3 B、2 C、1 D、不一定 6、执行语句 for(i=1;i++<4;); 后变量 i 的值是()。 A、3 B、5 C、4 D、不定 7、以下正确的描述是( ). A、只能用continue语句来终止本次循环 B、switch语句中不能出现continue语句 C、在循环中break语句不能独立出现 D、goto语句只能用于退出多层循环 8、下面合法的语句定义是( ). A、char a[ ]={'0','1','2','3','4','5'}; B、int a[ ]=\ C、int a[5]={0,1,2,3,4,5}; D、char a=\9、char a[10];不能将字符串\存储在数组中的是()。 A、int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0; B、a=\ C、strcpy(a,\ D、a[0]=0;strcat(a,\ 10、在C语言中,一维数组的定义方式为:类型说明符 数组名()。 A、[整型常量]或[整型表达式] B、[正整型常量表达式] C、[整型表达式] D、[常量表达式] 11、在定义全局变量和局部静态变量的同时赋值,变量的初始化在( )时确定的. A、运行 B、编辑 C、编译 D、调试 12、关于建立函数的目的,以下正确的说法是()。 A、提高程序的可读性 B、减少程序文件所占内存 C、减少程序的篇幅 D、提高程序的执行效率 13、以下函数调用语句中实参的个数是()。 func((e1,e2),(e3,e4,e5)); A、3 B、5 C、语法错误 D、2 14、设有宏定义#define SUB(x,y) (x)*y,且a=3,b=4,则 SUB(a++,b++) 的值为( ). A、13 B、16 C、20 D、12 15、变量p为指针变量,若p=&a,下列写法不正确的是()。 A、*(p++)==a++ 20 / 30 B、&*p==&a C、(*p)++==a++ D、*&a==a 16、下列程序正确的运行结果为( ). #include union u {char *name; int age; int income; } s; s.name=\s.age=28; s.income=1000; printf(\} A、8 B、28 C、1000 D、不确定 17、定义my_file 为文件型指针变量,使用fopen只读方式打开一个已存在的二进制文件,以下正 确的调用形式为( ). A、my_file=fopen(\B、my_file=fopen(\C、my_file=fopen(\D、my_file=fopen(\ 答案:CABBC BAABB CADDA CC 二、 判断 1、若i =3,则printf(\输出的值为 -4。2、格式字符%x用来以八进制形式输出整数. 3、设u=1,v=2,w=3,则逻辑表达式u||v-w&&v+w的值为0. 4、已知a=4,b=2,c=3,d=5,表达式a>b?a:c int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;