vc冲刺课复习Word格式文档下载.docx
- 文档编号:22589028
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:43
- 大小:40.02KB
vc冲刺课复习Word格式文档下载.docx
《vc冲刺课复习Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《vc冲刺课复习Word格式文档下载.docx(43页珍藏版)》请在冰豆网上搜索。
一定是(int)a不是int(a),注意类型上一定有括号的。
注意(int)(a+b)和(int)a+b的区别。
前是把a+b转型,后是把a转型再加b。
8)表达式的考查:
是表达式就一定有数值。
赋值表达式:
表达式数值是最左边的数值,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了。
考试口诀:
++在前先加后用,++在后先用后加。
逗号表达式:
优先级别最低;
表达式的数值逗号最右边的那个表达式的数值。
(2,3,4)的表达式的数值就是4。
例题:
main()
{intx,y,z;
x=y=1;
z=x++,y++,++y;
printf(“%d,%d,%d\n”,x,y,z);
}
程序运行后的输出结果是
A)2,3,3B)2,3,2C)2,3,1D)2,2,1
9)位运算的考查:
会有一到二题考试题目。
总的处理方法:
几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。
例1:
chara=6,b;
b=a<
<
2;
这种题目的计算是先要把a的十进制6化成二进制,再做位运算。
例2:
一定要记住,异或的位运算符号。
0异或1得到1。
0异或0得到0。
两个女的生不出来。
1异或1得到0。
两个男的生不出来。
考试记忆方法:
一男
(1)一女(0)才可以生个小孩
(1)。
例3:
在没有舍去数据的时候,<
左移一位表示乘以2;
>
右移一位表示除以2。
10)018的数值是非法的,八进制是没有8的,逢8进1。
11)%符号两边要求是整数。
不是整数就错了。
12) 三种取整丢小数的情况:
1、inta=1.6;
2、(int)a;
3、1/2;
3/2;
13)字符型和整数是近亲:
chara=65;
printf(“%c”,a);
得到的输出结果:
a
printf(“%d”,a);
得到的输出结果:
65
2、输入和输出
1)printf函数的格式考查:
%d对应整型;
%c对应字符;
%f对应单精度等等。
宽度的,左对齐等修饰。
%ld对应longint;
%lf对应double。
2)scanf函数的格式考察:
注意该函数的第二个部分是&
a这样的地址,不是a;
scanf(“%d%d%*d%d”,&
a,&
b,&
c);
跳过输入的第三个数据。
3)putchar,getchar函数的考查:
chara=getchar()是没有参数的,从键盘得到你输入的一个字符给变量a。
putchar(‘y’)把字符y输出到屏幕中。
4)如何实现两个变量x,y中数值的互换(要求背下来)
不可以把x=y,y=x;
要用中间变量t=x;
x=y;
y=t。
5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)
这个有推广的意义,注意x=(int)x这样是把小数部分去掉。
main()
{doublehui;
intxy;
scanf(“%f”,&
hui);
scanf(“%d”,&
xy);
printf(“%f,%d”,hui,xy);
如果从键盘上输入的数据的值是:
23回车34.789回车,则最后的输出结果是:
3、选择结构
特别要注意:
c语言中是用非0表示逻辑真的,用0表示逻辑假的。
1)关系表达式:
表达式的数值只能为1(表示为真),或0(表示假)
当关系的表达是为真的时候得到1。
如9>
8这个是真的,所以表达式的数值就是1;
2)逻辑表达式:
只能为1(表示为真),或0(表示假)
a)共有&
&
||!
三种逻辑运算符号。
b)!
||优先的级别。
c)注意短路现象。
考试经常考到。
d)要表示x是比0大,比10小的方法。
0<
x<
10是不可以的(一定记住)。
是先计算0<
x得到的结果为1或则0;
再用0,或1与10比较得到的总是真(为1)。
所以一定要用(0<
x)&
(x<
10)表示比0大比10小。
3)if语句
else是与最接近的if且没有else的相组合的。
嵌套的if….else语句的配对的原则:
else总是和之前的最近的没有和其他的else成对的if成对。
{inta=5,b=4,c=3,d=2;
if(a>
b>
c)
printf("
%d\n"
d);
elseif((c-1>
=d)==1)
d+1);
else
d+2);
执行后输出结果是( )。
A)2 B)3C)4D)编译时有错,无结果
4)条件表达式:
表达式1?
表达式2:
表达式3
注意是当表达式1的值为:
非0时候是表达式2的数值,当为0是就是表达式2的数值。
真前假后。
5)switch语句:
a)一定要注意有break和没有break的差别,书上(54页)的两个例子,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。
b)switch只可以和break一起用,不可以和continue用。
c)switch(x)x:
是整型常量,字符型常量,枚举型数据。
{case1:
….case后面的只能是常量不能是变量。
case2:
….
}
注意:
break可以用在循环语句中,也可以用在switch语句中。
但是continue语句只能用在循环语句中。
{intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{case0:
a++;
break;
b++;
printf(“a=%d,b=%d\n”,a,b);
4、循环结构
1)三种循环结构:
a)for();
while();
do-while()三种。
b)for循环当中必须是两个分号,千万不要忘记。
c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。
d)do-while()循环的最后一个while();
的分号一定不能够丢。
(当心上机改错),do-while循环是至少执行一次循环。
复习:
三个循环结构的执行过程。
while是先判断后执行。
do….while是先执行后判断。
for()先执行表达式1,判断表达式2,执行循环体中的内容,在执行表达式3.
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。
考试注意点:
括号在这里的重要性。
{inti=0,s=0;
for(;
;
)
{if(i==0||i==5)continue;
if(i==6)break;
i++;
s+=i;
printf(“%d”,s);
A、10B、13C、21D、程序进入死循环
5、函数
函数:
是具有一定功能的一个程序块;
是C语言的基本组成单位。
1)函数的参数,返回数值
voidf(intv,intw)
{intt;
t=v;
v=w;
w=t
{intx=1,y=3,z=2;
if(x>
y)f(x,y);
elseif(y>
z)f(y,z);
elsef(x,z);
2)函数的调用:
实参和形参之间传数值,和传地址的差别。
(考试的重点)
按数值传替,形参的变化不会改变实参的变化。
(单向传替)
按地址传替,形参的变化就会有可能改变实参的变化。
(双向传替)
3)函数声明的考查:
一定要有:
函数名,函数的返回类型,函数的参数类型。
不一定要有:
形参的名称。
4)要求掌握的库函数:
sqrt()fabs()pow()sin()其中pow(a,b)是重点。
23为pow(2,3)。
以及sqrt()表示的是一个表达式或者是一个数值的开方。
5)函数最后返回值的类型决定于函数的定义类型。
6、指针
1)、指针变量的本质是用来放地址,而一般的变量是放数值的。
int*p中*p和p的差别:
*p可以当做变量来用;
*的作用是取后面地址p里面的数值
p是当作地址来使用。
*p++和(*p)++的之间的差别:
改错题目中很重要
*p++是地址会变化。
(*p)++是数值会要变化。
若有说明:
intn=2,*p=&
n,*q=p;
则以下的非法的赋值语句是:
()
A、p=qB、*p=*qC、n=*q;
D、p=n
2)、三名主义:
数组名:
表示第一个元素的地址。
数组名不可以自加,他是地址常量名。
(考了很多次)
函数名:
表示该函数的入口地址。
字符串常量名:
表示第一个字符的地址。
考试重要的话语:
指针变量是存放地址的。
并且指向哪个就等价哪个,所有出现*p的地方都可以用它等价的代替。
例如:
inta=2,*p=&
a;
*p=*p+2;
(由于*p指向变量a,所以指向哪个就等价哪个,这里*p等价于a,可以相当于是a=a+2)
指针变量两种初始化
方法一:
(定义的同时初始化)
方法二:
inta=2,*p;
(定义之后初始化)
p=&
3)、给指针变量赋空值之后,不能对该变量进行指针运算。
#include“stdio.h”
{intn,*p=NULL;
*p=&
n;
printf(“请输入数据:
”);
scanf(“%d”,&
p);
printf(“结果是:
printf(“%d\n”,p);
该程序试图通过指针p为变量n读入数据并输出数据,但是程序中有多处错误,以下语句正确的是:
A、intn,*p=NULL;
B、*p=&
C、scanf(“%d”,&
D、printf(“%d\n”,p);
4)返回指针的函数:
格式:
函数返回值类型*函数名(形式参数列表)
int*f(int*x,int*y)
{if(*x<
*y)
returnx;
returny;
{inta=7,b=8,*p,*q,*r;
p=&
a;
q=&
b;
r=f(p,q);
printf(“%d,%d,%d”,*p,*q,*r);
执行后输出结果是( )
A)7,8,8 B)7,8,7 C)8,7,7 D)8,7,8
7、数组
1)一维数组的重要概念:
对a[10]这个数组的讨论。
1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。
2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。
3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。
对a[3][3]的讨论。
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、intnum[];
B、#defineN100intnum[0….100]D、intN=100
intnum[N];
intnum[N]
{inti,j,t;
a[5]={2,1,4,3,5};
for(i=0;
i<
4;
i++)
for(j=i+1;
j<
5;
j++)
if(a[i]<
a[j])
{t=a[i];
a[i]=a[j];
a[j]=t;
printf(“%4d”,a[i]);
则程序执行后的结果是:
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。
一定记住:
只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。
3)数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写
inta[]={1,2}合法。
inta[][4]={2,3,4}合法。
但inta[4][]={2,3,4}非法。
4)二维数组中的行指针
inta[1][2];
其中a现在就是一个行指针,a+1跳一行数组元素。
搭配(*)p[2]指针
a[0],a[1]现在就是一个列指针。
a[0]+1跳一个数组元素。
搭配*p[2]指针数组使用
5)还有记住脱衣服法则:
a[2]变成*(a+2)a[2][3]变成*(a+2)[3]再可以变成*(*(a+2)+3)
以下错误的定义语句是
A)intx[][3]={{0},{1},{1,2,3}};
B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C)intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D)intx[][3]={1,2,3,4};
8、字符串
1)、字符串的概念:
由双引号括起来的若干个字符所组成的序列。
每一个字符串都有一个‘\0’做为结束的标识。
2)字符串的存储形式:
两种存储
①数组存储用数组来存储字符串。
A、将每一个字符分别赋值给数组中的每一个元素。
B、定义字符数组的时候就给数组中的每一个元素赋初值。
但是最后必须有一个结束符。
C、直接把一个字符串赋值给一个数组。
D、当把字符串中的内容赋值给数组时,当数组中的元素的个数多余数组字符个数的时候,可以不用加最后的结束符。
E、在定义数组的时候,省略了数组的长度的时候,如果没有结束符,那么这个数组时不能构成一个字符串的。
②指针存储用指针来存储字符串。
在定义指针变量的同时将一个字符数组赋值给一个指针变量。
以下不能正确进行字符串赋值的语句时:
A、charstr[5]=”good!
”;
B、charstr[]=”good!
”
C、char*str=”good!
”D、charstr[5]={‘g’,’o’,’o’,’d’};
3)、字符串的输入和输出
输出:
A、printf函数输出字符串是,格式控制说明符是%s,其中的输出项为:
地址。
输出时不带有字符串的定界符。
B、puts函数输出的一个字符串,同样的括号中的内容只能是一个字符串或者是一个地址。
输入:
A、scanf函数,在输入的时候,格式控制说明符任然为%s,输入项中的内容仍然为:
在输入的时候不输入字符串的定界符。
但是使用scanf函数在输入数据的时候,不能接受回车符和空格符。
B、gets()函数接受的仍然是一个字符串,输入项中的内容仍然为:
但是使用scanf函数在输入数据的时候,能接受回车符和空格符。
当用户要求输入的字符串中含有空格时,应使用的输入函数是:
A、scanf()B、getchar()C、gets()D、getc()
4)、字符串处理函数
掌握字符串的处理函数:
strcpy()strcmp()strlen()strcat()
其中括号中的内容均是地址。
掌握每一个函数的含义和功能。
#include”stdio.h”
charp[20]=”abcd”,q[]=”abc”,r[]=”abcde”;
strcat(p,r);
strcpy(p+strlen(q),q);
printf(“%d\n”sizeof(p));
9、文件
1)、文件指针的定义的格式:
FILE*文件指针。
2)、打开文件的格式:
fopen(“文件名”,“打开方式”);
重点看打开方式为r和w的形式。
3)、关闭文件:
fclose(文件指针)。
文件的操作:
1)、feof函数的格式以及函数的功能。
返回的是文件指针的位置.如果在文件的末尾,则返回的是一个非0值,若是不在文件末尾,返回的是0值。
2)、fseek函数(定位函数)
掌握定位的原则。
例如:
与fseek(fp,0L,seek_set)有相同作用的是:
A、feof()B、ftell()C、fgetc()Drewind()
上机考试重点:
fprintf(文件指针,格式控制字符串,输入列表);
功能:
按照格式控制说明的格式将输入列表中的值输入到文件指针所指的文件中。
fscanf(文件指针,格式控制字符串,输出列表);
按照格式控制说明的格式从文件指针所指的文件中读取中数据来,并且赋值给输出列表。
10、对C语言的深入讨论
1)、用户定义类型:
typedef原有类型标识符;
掌握:
没有定义新的类型,只是将原有的类型换了一个名字而已。
2)、编译预处理
编译预处理必须单独占有一行,在程序执行时不占用程序的执行时间。
运算规则:
先替换,后计算。
#include<
stdio.h>
#defineN5
#defineMN+1
#definef(x)(x*M)
main()
{
inti1,i2;
i1=f
(2);
i2=f(1+1);
printf(“%d%d\n”,i1,i2);
程序运行结果是
A)1212B)117C)1111D)127
3)、标识符的作用域
按照变量出现的位置,将其分为:
全局变量和局部变量。
按照存储存储类别分为:
自动型和静态型。
四个关键字:
autoregisterstaticextern
局部变量的作用范围只是其所在的花括号中。
而全局变量的作用范围是从定义开始,一直到程序的结束。
当同时出现局部变量和全局变量的时候,局部变量有效,而全局变量没有效果。
全局变量相当于一个静态变量。
静态变量在使用时占有永久的存储单元。
在使用的时候只用看一次其初值。
#include<
inta=5;
voidfun(intb)
{
inta=10;
a+=b;
printf(“%d”,a);
{intc=20;
fun(c);
a+=c;
printf(“%d\n”,a);
4)、动态存储分配
掌握函数开辟存储单元的格式:
A、malloc(size)
开辟的是动态的存储单元,返回的是一个空指针,若要将其赋值给一个指针变量,必须进行强制类型转换。
B、calloc(n,size)
例如:
已有定义语句,double*p,请写出完整的语句,利用malloc函数使p指向一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vc 冲刺 复习