大学生计算机二级考试选择题技巧.docx

上传人:牧羊曲112 文档编号:3398047 上传时间:2023-03-12 格式:DOCX 页数:21 大小:46.94KB
返回 下载 相关 举报
大学生计算机二级考试选择题技巧.docx_第1页
第1页 / 共21页
大学生计算机二级考试选择题技巧.docx_第2页
第2页 / 共21页
大学生计算机二级考试选择题技巧.docx_第3页
第3页 / 共21页
大学生计算机二级考试选择题技巧.docx_第4页
第4页 / 共21页
大学生计算机二级考试选择题技巧.docx_第5页
第5页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《大学生计算机二级考试选择题技巧.docx》由会员分享,可在线阅读,更多相关《大学生计算机二级考试选择题技巧.docx(21页珍藏版)》请在三一办公上搜索。

1、大学生计算机二级考试选择题技巧二、冲刺课复习 、C语言部分 1、C语言的基础知识 1)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 2)实型数据的合法形式: 2.333e-1 就是合法的,且数据是2.33310-1。 考试口诀:e前e后必有数,e后必为整数。. 3)字符数据的合法形式:: 1 是字符占一个字节,1是字符串占两个

2、字节(含有一个结束符号)。 0 的ASCII数值表示为48,a 的ASCII数值是97,A的ASCII数值是65。 一般考试表示单个字符错误的形式:65 1 字符是可以进行算术运算的,记住: 0-0=48 大写字母和小写字母转换的方法: A+32=a 相互之间一般是相差32。 4) 整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。 5)转义字符的考查: 在程序中 int a = 0x6d,是把一个十六进制的数给变量a

3、注意这里的0x必须存在。 在程序中 int a = 06d, 是一个八进制的形式。 在转义字符中,x6d 才是合法的,0不能写,并且x是小写。 141 是合法的, 0是不能写的。 108是非法的,因为不可以出现8。 6)算术运算符号的优先级别: 同级别的有的是从左到右,有的是从右到左。 7)强制类型转换: 一定是 a 不是 int,注意类型上一定有括号的。 注意 和a+b 的区别。 前是把a+b转型,后是把a转型再加b。 8)表达式的考查: 是表达式就一定有数值。 赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。 自加、自减表达式:假设a=5,+a, a+;运行

4、的机理:+a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这个+a表达式的数值为6,而a+是先用该表达式的数值为5,然后再把a的数值加上1为6,再放到变量a中。 进行了+a和a+后 在下面的程序中再用到a的话都是变量a中的6了。 考试口诀:+在前先加后用,+在后先用后加。 逗号表达式:优先级别最低 ; 表达式的数值逗号最右边的那个表达式的数值。 的表达式的数值就是4。 例题: main int x,y,z; x=y=1; z=x+,y+,+y; printf(“%d,%d,%dn”,x,y,z); 程序运行后的输出结果是 A) 2,3,3 B) 2,3,2 C) 2,3,1

5、D) 2,2,1 9)位运算的考查: 会有一到二题考试题目。 总的处理方法:几乎所有的位运算的题目都要按这个流程来处理。 例1: char a = 6, b; b = a2; 这种题目的计算是先要把a的十进制6化成二进制,再做位运算。 例2: 一定要记住,异或的位运算符号。0 异或 1得到1。 0异或 0得到0。两个女的生不出来。 1 异或 1得到0。两个男的生不出来。考试记忆方法:一男(1)一女(0)才可以生个小孩(1)。 例3: 在没有舍去数据的时候,右移一位表示除以2。 10)018的数值是非法的,八进制是没有8的,逢8进1。 11)%符号两边要求是整数。不是整数就错了。 12) 三种取

6、整丢小数的情况: 1、int a =1.6; 2、(int)a; 3、1/2; 3/2; 13)字符型和整数是近亲: char a = 65 ; printf(“%c”, a); 得到的输出结果:a printf(“%d”, a); 得到的输出结果:65 2、输入和输出 1)printf函数的格式考查: %d对应整型;%c对应字符;%f对应单精度等等。宽度的,左对齐等修饰。 %ld对应 long int;%lf 对应double。 2)scanf函数的格式考察: 注意该函数的第二个部分是&a 这样的地址,不是a; scanf(“%d%d%*d%d”,&a,&b,&c); 跳过输入的第三个数据。

7、 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 = x 这样是把小数部分去掉。 main double scanf(“%f”,&hui);scanf(“%d”,&xy); hui;int xy; printf(“%f,%d”,hui,xy); 如果从键盘上输入的数据的值是:

8、23 回车 34.789回车,则最后的输出结果是: 3、选择结构 特别要注意:c语言中是用非0表示逻辑真的,用0表示逻辑假的。 1)关系表达式: 表达式的数值只能为1,或0 当关系的表达是为真的时候得到1。如 98这个是真的,所以表达式的数值就是1; 2)逻辑表达式: 只能为1,或0 a) 共有& | ! 三种逻辑运算符号。 b) !&| 优先的级别。 c) 注意短路现象。考试经常考到。 d) 要表示 x 是比0大,比10小的方法。0x10是不可以的。是先计算0x 得到的结果为1或则0;再用0,或1与10比较得到的总是真。所以一定要用 (0x)&(xbc) printf(%dn,d); els

9、e if(c-1=d)=1) printf(%dn,d+1); else printf(%dn,d+2); 执行后输出结果是。 A) 2 B) 3 C) 4 D) 编译时有错,无结果 4)条件表达式: 表达式1 ?表达式2 :表达式3 注意是当表达式1的值为:非0时候 是表达式2的数值,当为0是就是表达式2的数值。 考试口诀:真前假后。 5)switch语句: a) 一定要注意 有break 和没有break的差别,书上的两个例子,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。 b) switch只可以和break一起用,不可以和co

10、ntinue用。 c) switch(x) x:是整型常量,字符型常量,枚举型数据。 case 1: . case后面的只能是常量不能是变量 。 case 2: . 注意:break可以用在循环语句中,也可以用在switch语句中。但是continue语句只能用在循环语句中。 例题: main int x=1,y=0,a=0,b=0; switch( x) case 1: switch(y) case 0: a+;break; case 1:b+;break; case 2: a+;b+;break; printf(“a=%d,b=%dn”,a,b); 4、循环结构 1)三种循环结构: a)f

11、or ; while; do- while三种。 b)for循环当中必须是两个分号,千万不要忘记。 c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。 d) do-while循环的最后一个while;的分号一定不能够丢。,dowhile循环是至少执行一次循环。 复习:三个循环结构的执行过程。 while 是先判断后执行。do.while是先执行后判断。 for 先执行表达式1,判断表达式2,执行循环体中的内容,在执行表达式3. 例题: 2) break 和 continue的差别 记忆方法: break:是打破的意思,所以看见break就退出真个一层循环。 continue:

12、 是继续的意思,但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。 3)嵌套循环 就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。 4) while!=n) 和 while的差别 先看a = 3 != 2 和 !=2 的区别: 第一个a的数值是得到的1;第二个a的数值是3。 考试注意点: 括号在这里的重要性。 main int i=0,s=0; 6、指针 for(;) 1)、指针变量的本质是用来放地址,而一般的 if(i=0|i=5) continue ; 变量是放数值的。 if(i=6) b

13、reak; int *p 中 *p和p的差别: i+;s+=i; *p可以当做变量来用;*的作用 是取后面地址p里面的数值 printf(“%d”,s); p是当作地址来使用。 *p+ 和 +的之间的差别:改错A、10 B、13 C、21 题目中很重要 D、程序进入死循环 5、函数 函数:是具有一定功能的一个程序块;是C语言的基本组成单位。 1) 函数的参数,返回数值 void f(int v,int w) int t; t=v;v=w;w=t main int x=1,y=3,z=2; if(xy) f(x,y); else if(yz) f(y,z); else f(x,z); print

14、f(“%d,%d,%dn”,x,y,z); 2)函数的调用: 实参和形参之间 传数值,和传地址的差别。 按数值传替,形参的变化不会改变实参的变化。 按地址传替,形参的变化就会有可能改变实参的变化。 3)函数声明的考查: 一定要有:函数名,函数的返回类型,函数的参数类型。 不一定要有:形参的名称。 4)要求掌握的库函数: sqrt fabs pow sin 其中pow(a,b)是重点。23为pow(2,3)。以及sqrt表示的是一个表达式或者是一个数值的开方。 5)函数最后返回值的类型决定于函数的定义类型。 *p+是 地址会变化。 + 是数值会要变化。 若有说明: int n=2,*p=&n,*

15、q=p;则以下的非法的赋值语句是: A、p=q B、*p=*q C、n=*q; D、p=n 2)、三名主义: 数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。 函数名:表示该函数的入口地址。 字符串常量名:表示第一个字符的地址。 考试重要的话语: 指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*p的地方都可以用它等价的代替。 例如:int a=2,*p=&a; *p=*p+2; (由于*p指向变量,所以指向哪个就等价哪个,这里*p等价于,可以相当于是a=a+2) 指针变量两种初始化 方法一:int a=2,*p=&a;(定义的同时初始化) 方法二:int a=2,*p;

16、 (定义之后初始化) p=&a; 3)、给指针变量赋空值之后,不能对该变量进行指针运算。 #include“stdio.h” main int n,*p=NULL; *p=&n; printf(“请输入数据:”); scanf(“%d”,&p);printf(“结果是:”); printf(“%dn”,p); 该程序试图通过指针p为变量n读入数据并输出数据,但是程序中有多处错误,以下语句正确的是: A、int n,*p=NULL; B、*p=&n; C、scanf(“%d”,&p); D、printf(“%dn”,p); 4)返回指针的函数: 格式: 函数返回值类型 *函数名 int *f(i

17、nt *x,int *y) if(*x*y) return x; else return y; main int a=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)一维数组的重要概念: 对a10这个数组的讨论。 1、a表示数组名,是第一个元素的地址,也就是元素a10的地址。 2、a是地址常量,所以只要出现a+,或者是a=a+2赋值的都是错误的。 3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。

18、对a33的讨论。 1、a表示数组名,是第一个元素的地址,也就是元素a10的地址。 2、a是地址常量,所以只要出现a+,或者是a=a+2赋值的都是错误的。 3、a是二维数组名,所以它是行指针,也就是说a+1是跳一行。 4、a0、a1、a2也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a0+1,a1+1,a2+1都是跳一列。 5、注意a和a0 、a1、a2是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。 重点复习:定义的格式和排序 例题: 一下能正确定义一维数组的是: A、int num; B、#define N 100 int num0.100 D、int N=1

19、00 int numN; int numN #include“stdio.h” main int i,j,t;a5=2,1,4,3,5; for(i=0;i4;i+) for(j=i+1;j5;j+) if(aiaj) t=ai;ai=aj;aj=t; for(i=0;i 1 2 3 第一行 a1- 4 5 6 第二行 a2- 7 8 9 第三行 步骤二:这样作题目间很简单: *(a0+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a01元素,所以是。 *(a1+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a12元素,所以是6。 一定记住:只要是二维数组的题目,一

20、定是写成如上的格式,再去做题目,这样会比较简单。 3) 数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写 int a=1,2 合法。 int a4=2,3,4合法。 但int a4=2,3,4非法。 4) 二维数组中的行指针 int a12; 长度的时候,如果没有结束符,那么这个数组时不能构成一个字符串的。 指针存储 用指针来存储字符串。 在定义指针变量的同时将一个字符数组赋值给一个指针变量。 以下不能正确进行字符串赋值的语句时: A、char str5=”good!”; 其中a现在就是一个行指针,a+1跳一行数组元素。 搭配p2指针 a0,a1现在就是一个列指针。a0+1 跳一个

21、数组元素。搭配*p2指针数组使用 5) 还有记住脱衣服法则: a2 变成 * a23变成 *3再可以变成 *+3) 以下错误的定义语句是 A)int x3=0,1,1,2,3; B)int x43=1,2,3,1,2,3,1,2,3,1,2,3; C)int x4=1,2,3,1,2,3,1,2,3,1,2,3; D)int x3=1,2,3,4; 8、字符串 1)、字符串的概念:由双引号括起来的若干个字符所组成的序列。每一个字符串都有一个0做为结束的标识。 2)字符串的存储形式:两种存储 数组存储 用数组来存储字符串。 、将每一个字符分别赋值给数组中的每一个元素。 、定义字符数组的时候就给数

22、组中的每一个元素赋初值。但是最后必须有一个结束符。 C、直接把一个字符串赋值给一个数组。 D、当把字符串中的内容赋值给数组时,当数组中的元素的个数多余数组字符个数的时候,可以不用加最后的结束符。 E、在定义数组的时候,省略了数组的B、char str=”good!” C、char *str=”good!” D、char str5=g,o,o,d; 3)、字符串的输入和输出 输出: A、printf函数输出字符串是,格式控制说明符是%s,其中的输出项为:地址。输出时不带有字符串的定界符。 B、puts函数输出的一个字符串,同样的括号中的内容只能是一个字符串或者是一个地址。输出时不带有字符串的定界

23、符。 输入: A、scanf函数,在输入的时候,格式控制说明符任然为%s,输入项中的内容仍然为:地址。在输入的时候不输入字符串的定界符。但是使用scanf函数在输入数据的时候,不能接受回车符和空格符。 、gets函数接受的仍然是一个字符串,输入项中的内容仍然为:地址。在输入的时候不输入字符串的定界符。但是使用scanf函数在输入数据的时候,能接受回车符和空格符。 例题: 当用户要求输入的字符串中含有空格时,应使用的输入函数是: A、scanf B、getchar C、gets D、getc 4)、字符串处理函数 掌握字符串的处理函数:strcpy strcmp strlen strcat 其中

24、括号中的内容均是地址。掌握每一个函数的含义和功能。 #include”stdio.h” main char p20=”abcd”,q=”abc”,r=”abcde”; strcat(p,r); strcpy(p+strlen(q),q); printf(“%dn”sizeof(p); 9、文件 1)、文件指针的定义的格式:FILE *文件指针。 2)、打开文件的格式:fopen(“文件名”,“打开方式”); 重点看打开方式为 r和w的形式。 3)、关闭文件:fclose(文件指针)。 文件的操作: 1)、feof函数的格式以及函数的功能。返回的是文件指针的位置.如果在文件的末 尾,则返回的是一

25、个非0值,若是不在文件末尾,返回的是0值。 2)、fseek函数 掌握定位的原则。 例如:与fseek(fp,0L,seek_set)有相同作用的是: A、feof B、ftell C、fgetc D rewind 上机考试重点: fprintf( 文件指针,格式控制字符串,输入列表 ); 功能:按照格式控制说明的格式将输入列表中的值输入到文件指针所指的文件中。 fscanf(文件指针,格式控制字符串,输出列表); 功能:按照格式控制说明的格式从文件指针所指的文件中读取中数据来,并且赋值给输出列表。 10、对C语言的深入讨论 1)、用户定义类型: typedef 原有类型 标识符; 掌握:没有

26、定义新的类型,只是将原有的类型换了一个名字而已。 2)、编译预处理 编译预处理必须单独占有一行,在程序执行时不占用程序的执行时间。 运算规则:先替换,后计算。 # include # define N 5 # define M N+1 # define f(x) (x*M) main int i1,i2; i1=f(2); i2=f(1+1); printf(“%d %dn”,i1,i2); 程序运行结果是 A) 12 12 B) 11 7 C) 11 11 D) 12 7 3)、标识符的作用域 按照变量出现的位置,将其分为:全局变量和局部变量。按照存储存储类别分为:自动型和静态型。四个关键字

27、:auto register static extern 局部变量的作用范围只是其所在的花括号中。而全局变量的作用范围是从定义开始,一直到程序的结束。 当同时出现局部变量和全局变量的时候,局部变量有效,而全局变量没有效果。全局变量相当于一个静态变量。 静态变量在使用时占有永久的存储单元。在使用的时候只用看一次其初值。 #include int a=5; void fun(int b) int a=10; a+=b; printf(“%d”,a); main int c=20; fun(c); a+=c; printf(“%dn”,a); 4)、动态存储分配 掌握函数开辟存储单元的格式: A、m

28、alloc 开辟的是动态的存储单元,返回的是一个空指针,若要将其赋值给一个指针变量,必须进行强制类型转换。 B、calloc(n,size) 开辟的是动态的存储单元,返回的是一个D、传递的是结构体数组元素: 单向传空指针,若要将其赋值给一个指针变量,必递 须进行强制类型转换。 E、传递的是结构体数组的数组名:双向例如:已有定义语句,double *p,请写出完传递。 整的语句,利用malloc函数使p指向一个举例子:课本上的题目第156页最后一题。 双精度型的动态存储单元。 5 ) 、链表 5)、main 这种含有参数的题目,是很呆板的题目。第一个参数是表示输入的字符串的数目,第二个参数是指向

29、存放的字符串。 6)、函数的递归调用。 函数的递归调用的时候先画出方框图,再从后面往前算,即可。 11、结构体 1)、结构体的定义的格式: struct 结构体名 成员列表; ; 成员列表中,成员的类型可以是不相同的。 2)、定义结构体变量的3中格式 A、struct 结构体名 成员列表; ; struct 结构体名 变量名; B、struct 结构体名 成员列表; 变量名; C、struct 成员列表; 变量名; 3)应用结构体变量中的成员-三种方法 A、结构体变量.成员名; B、结构体指针变量成员名; C、.成员名 4)数据传递 A、传递的是结构体变量 :单向传递 B、传递的是结构体变量的

30、地址:双向传递 C、传递的是结构体变量中的成员:若是地址 双向传递,若是数值 单向传递 首先看清楚题目要求和意思。看清楚链表有没有带头结点,如果带有都结点,第一空填的内容是p=hnext;如果是不带有头结点,则第一个空填写的是p=h; 如果第二个空是在循环语句while的括号中的时候里面的内容填写的是p或者是q,以最近出现的为主;如果是在循环语句的里面的时候,填写的是q=pnext; 如果是排序的时候,从小到大的时候是大于号,从大到小的时候是小于号。如果出出现了r的地方,则在后面的空中填的是r 12、数组和指针 1)数组名即为数组的首地址,是一个地址常量,不能进行+,-运算,也不能将一个数据复

31、制给数组名。将一个数组名赋值给一个指针变量后,这个指针变量得到的就是这个数组中的第一个元素的地址,对指针变量进行移动运算,那么指针将移动,移动的时候若是正数,则往后移动。同时还可以对指针进行中括号运算,得到的将是数据的值。 例如:int a10;int *p; p=a; p0代表的是 a0元素。 p+,代表的是指针往后移动一个位置。 int a10;int *p; p=a+1;那么p1代表的元素为a2 2)、二维数组的名字也是一个指针,但是为一个指针常量,不能进行+,-运算, 也不能将一个数据复制给数组名,注意二维数组的名字为一个行指针,所以对数组名加一运算时,是跳过一整行,而不是一个元素。

32、掌握: A、a+1代表的是第2行一整行,得到的是一整行的地址。 B、*得到的是第二行中第一个元素的地址。 C、*)代表的是第二行中第一个元素的值。 3)、指针数组 指针数组的定义的格式:类型 *数组名元素个数; 其中数组中的每一个元素均为指针,代表的都是一个存储单元的地址。 4)行指针 行指针的定义格式:类型 元素个数; 对行指针进行+1运算时,得到的是往后一整行的地址。而不是一个元素的地址。 5)函数与数组 函数在传递数据的时候要求:形式参数和实际参数的个数要相等,类型要相同。当传递的是数组的时候,要求形式参数必须是指针或者是数组。传递的是二维数组的时候,要求形式参数必须是二维数组或者是行指针。传递的时候双向传递。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号