C语言选择题冲刺复习资料.docx
- 文档编号:4676344
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:12
- 大小:59.61KB
C语言选择题冲刺复习资料.docx
《C语言选择题冲刺复习资料.docx》由会员分享,可在线阅读,更多相关《C语言选择题冲刺复习资料.docx(12页珍藏版)》请在冰豆网上搜索。
C语言选择题冲刺复习资料
双重循环
C语言最重要的知识点复习资料
第一章C语言概述
1)总体上必须清楚的:
程序结构是三种:
顺序结构,循环结构(三个循环结构),选择结构(if和switch)
C语言中用于结构化程序设计的三种基本结构是(A)
A)顺序结构、选择结构、循环结构B)if、switch、breakC)for、while、do-whileD)if、for、continue
2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
以下叙述不正确的是(D)
A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面/**/
3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.
4)bit是位是指为0或者1。
byte是指字节,一个字节=八个位.
5)一定要记住二进制如何划成十进制。
6)每个C语言程序中main函数有且只有一个。
7)编译预处理不是C语言的一部分,不占运行时间,不要加分号。
C语言编译的程序称为源程序。
8)在函数中不可以再定义函数(函数定义不能嵌套,函数调用可以嵌套)。
9)算法一定要有输出,可以没有输入。
以下叙述中正确的是(C)
A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入
C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出
10)注释语句的书写格式/**/
以下叙述中正确的是(C)
A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句
C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中
第二章数据类型和表达式
1)合法的用户标识符考查:
首字母是字母或下划线,从第2字母后还可以加数字,但不能是关键字,区分大小写。
ifelseIfifelse
迷惑你的地方If是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
2)实型数据的合法形式:
2.333e-1合法,且数据是2.333×10-1。
考试口诀:
e前e后必有数,e后必为整数。
3ee33.0e3.03.0e-3
3)字符数据的合法形式:
:
'1'是字符,占一个字节,"1"是字符串,占两个字节(含有一个结束符号'\0')。
“abc”
'1'的ASCII数值表示为49,'A'的ASCII数值是65,'a'的ASCII数值是97。
字符(和整型兼容)是可以进行算术运算的,记住:
'0'-0=48,’D’-’A’=3,’D’-3=’A’
大写字母和小写字母转换的方法:
'A'+32='a'相互之间相差32(小写>大写>数字)。
4)整型2字节(随机器而变),长整型4字节,字符型1字节,单精度4字节,双精度8字节:
其中整型占用字节数会随着电脑配置而改变,16位机是2字节,32位机是4字节。
5)八、十六进制数的应用:
033(八进制数)=3*8+3=27=1*16+11=0x1B(十六进制数)
在转义字符中,’\x61’(2位十六进制)=97=’a’=‘\141’(3位八进制)。
其中,含考点:
‘\108’、018是非法的,因为八进制中不可以出现8。
同理”\281”表示含3个字符的字符串。
6)运算符的优先级别:
单目>双目>三目>赋值>逗号(多目)
双目运算符中,算术运算符>关系>逻辑,如3<2+1&&5>4+3;同为单目,先右后左,如:
!
a++-a+3b+3?
a:
ba=3>4a=(b=4,c=5);
7)强制类型转换:
一定是(int)a不是int(a),注意类型上一定有括号的。
8)表达式的考查:
a)是表达式就一定有数值。
b)赋值表达式:
表达式数值是最左边的数值,a=b=5;该表达式为5,常量和表达式不可以被赋值(3=a+ba+b=x+y)。
c)自加、自减表达式:
假设a=5,++a(表达式值为6),a++(表达式值为5);a最后都为6。
考试口诀:
++在前...先加后用,++在后...先用后加。
d)逗号表达式:
优先级最低;表达式值为逗号最右边那个表达式的值。
如(a=2,b=3*a)的值是6。
9)位运算的考查:
先把十进制变成二进制再运算。
<<左移,>>右移,^异或,
|位或,&位与,~位非。
例1:
b=6<<2;b为24(左移2,相当于乘以22);b=6>>2;b为1(右移2,相当于除以4)
例2:
a=6^5;结果为(110^101)2=(11)2=(3)10
10)%(求余)两边要求是整数。
如21%2=122%2=0(对2求余为0的表示偶数,否则为奇数)
11)三种取整丢小数的情况:
1)inta=1.6;2)(int)a;3)1/2;3/2;
12)字符型和整数是近亲:
chara=65; printf(“%c%d”,a,a);得到的输出结果:
A65‘A’全等于6565+3全等于‘A’+3
第三章顺序语句
1)printf函数的格式:
%d对应整型;%c字符;%f单精度等。
%ld对应longint;%lf对应double。
2)scanf函数的格式考察:
注意该函数的第二个部分是&a这样的地址,不是a;
i.scanf(“%d%d%*d%d”,&a,&b,&c);跳过输入的第三个数据(%*d跳过输入的整型)。
3)getchar:
chara=getchar()是没有参数的,从键盘获得输入的字符给变量a。
putchar(‘y’)显示字符y。
4)交换数据:
要用中间变量t=x;x=yyy;yyy=t。
【首尾相连】
5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)intx,y;y=(int)(x*1000+0.5)/1000。
第四章选择语句(分支结构)
特别要注意:
c语言中是用非0表示逻辑真的,用0表示逻辑假的。
逻辑真为1,逻辑假为0。
1)关系表达式:
注意==表示判断相等的符号(两个等号),如if(x==y),而if(x=y)表示将y赋值给x,再将y作为条件。
2)逻辑表达式:
共有&&(与)||(或)!
(非)三种逻辑运算符号。
a)!
>&&>||优先的级别(先算!
,再计算&&,再计算||)。
b)注意短路现象法【考点】。
(&&左边为假,右边不运行)(||左边为真,右边不计算)。
c)要表示x是比0大,比6小的方法。
0 是先计算0 所以一定要用(0 3)if语句: else是与最接近的if且没有else的相组合。 4)条件表达式: 表达式1? 表达式2: 表达式3(当表达式1为真,返回表达式2的值,否则返回表达式【口诀: 真前假后】 5)switch语句: switch(x)x: 是整型表达式或字符型表达式。 {case1: ….不可以是变量。 case‘a’: …. default: …} 若有定义: floatx=1.5;inta=1,b=3,c=2;,则正确的switch语句是(B) A)switch(x) {case1.0: printf("*\n"); case2.0: printf("**\n");} B)switch((int)x); {case1: printf("*\n"); case'A': printf("**\n");} C)switch(a+b) {case1: printf("*\n"); case2+1: printf("**\n");} D)switch(a+b) {case1: printf(**\n);} casec: printf(**\n);} 注意: 没有break的时候,只要有一个case匹配了,剩下的都要执行,有break则是终止switch语句。 有以下程序 #include main() {intx=1,y=0,a=0,b=0; switch(x) {case1: switch(y) {case0: a++;break; case1: b++;break; } case2: a++;b++;break; case3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 程序的运行结果是(D)A)a=1,b=0B)a=2,b=2C)a=1,b=1D)a=2,b=1 第五章循环结构 1)三种循环结构: a)for(;;);while();do-while()三种。 b)for循环当中必须是两个分号,千万不要忘记。 c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。 d)do-while()循环的最后一个while();的分号一定不能够丢(当心上机改错),do-while循环是至少执行一次循环。 2)break(中断,退出循环和switch)和continue(继续循环)的差别。 main() {intk=5,n=0; do 运行过程的书写(重要): kn 循环开始: 50 第一次循环后: 40 32【加括号表示2被显示】 第二次循环后: 23 第三次循环后: 15 n为5不满足条件,循环终止! 运行结果为235 {switch(k) {case1: case3: n+=1;k--;break; default: n=0;k--; case2: case4: n+=2;k--;break; } printf("%d",n); }while(k>0&&n<5); } 程序运行后的输出结果是(A)A)235B)0235C)02356D)2356 3)嵌套循环(就是有循环里面还有循环,循环的一般记住两层是处理二维数组的) main() {inti,j; for(i=1;i<4;i++) {for(j=i;j<4;j++) printf("%d*%d=%d",i,j,i*j); printf("\n"); } } 4)注意: while((c=getchar())! =’\n’)和while(c=getchar()! =’\n’)是有差别的。 那么,先看a=3! =2和(a=3)! =2的区别,! =号的级别高于=号,所以第一个先计算3! =2,那么第一个a的值是1;第二个a的数值是3。 第六章数组 1)一维数组的重要概念: 对a[10]这个数组: 数组中有10个元素。 1、a表示数组名,是第一个元素的地址,是一级指针,也就是元素a[0]的地址。 2、a是指针常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。 3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列,指向a[1]元素,a+2指向a[2],以此类推。 2)对于数组a[3][4]: 数组中有3行4列共12个元素。 1、a是二维数组名,所以它是行指针,也就是说a指向第1行,a+1是跳一行,即指向第二行。 2、a[0]、a[1]也都是地址常量,分别指向第1行(第2行)的第1个元素。 不可以对它进行赋值操作。 3、a[0]、a[1]也称为列指针,a[0]+1,a[1]+1都是跳一列,分别指向第1行第2个元素,第2行第2个元素。 3、注意a和a[0]、a[1]是不同的,它们的类型不同。 a是二级指针,指向一级指针a[0];a[1]是一级指针,指向a[1][0]。 3)二维数组做题目的技巧: 如果有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≡a[0]、*(a+2)≡a[2]、*(*(a+2)+3)≡*(a[2]+3)≡a[2][3]): *(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。 *(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。 那么这里就是a[1][2]元素,所以是6。 *(a[i]+j)≡a[i][j](≡恒等) 一定记住: 只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。 4)数组的初始化,有初始化的,第1维大小可以省略(初始化的值不可以多,只可以少,少的话用0进行初始化)。 inta[]={1,2}合法。 inta[][4]={2,3,4}合法。 inta[4][]={2,3,4}(非法,第2。 inta[2][3]={{1,2},{3,4,5,6}}(多赋值了); 5)二维数组中的行指针 inta[3][4];其中a是一个行指针,a+1跳一行数组元素。 搭配(*p)[4]指针 如int(*p)[4]表示定义了一个指针(二级指针)它指向每行有4个元素的数组。 当p=a;后,则p[1][2]≡a[1][2]【p可以和a一样使用】 a[0],a[1]是一个列指针。 a[0]+1跳一个数组元素。 搭配*p[3]指针数组使用 如int*p[2];表示定义一个数组,数组中有3个元素,每个元素都是整型指针类型(一级指针)。 当p[0]=a[1]后,则p[0][2]≡a[1][2]。 当然p[0]=a[2]后,则p[0][2]≡a[2][2]。 6)还有记住脱衣服法则: a[2]变成*(a+2)a[2][3]变成*(a+2)[3]再可以变成*(*(a+2)+3)这个转换方法很重要! 7)字符串函数: strlen(“abc”)【取字符串长度,结果3】 strcpy(s,”abc”)【拷贝字符串,结果为s被赋值”abc”字符串】 strcat(s,”123”)【连接字符串,结果s被赋值为”abc123”】 strcmp(“abc”,”ABC”)【字符串比较,相等返回0,大于返回正整数,小于返回负整数,此处,前>后,结果为正整数】 8)strlen【求字符串长度】和sizeof【求占用空间的大小】的区别也是考试的重点; strlen(“abc”)的结果为3,而sizeof(“abc”)的结果为4(字符串尾部包含一个字符串的结束标志’\0’) sizeof(int)结果为2。 而structstu{chara[2];doubled;longw;};sizeof(stu)的结果为14(1*2+8+4) 第七章函数 函数: 是具有一定功能的一个程序块;是C语言的基本组成单位。 1)函数的参数,返回数值(示意图): main() { inta=5,b=6,c; c=add(a,b); printf(“%d”,c); } intadd(intx,inty) { intz; z=x+y; returnz; } 2)一定要注意参数之间的传递【实参和形参之间传数值,和传地址的差别。 (考试的重点)】 传值的话,形参的变化不会改变实参的变化。 传址的话,形参的变化就会有可能改变实参的变化。 3)函数声明的考查: 一定要有: 函数名,函数的返回类型,函数的参数类型;不一定要有: 形参的名称(。 4)要求掌握的库函数: sqrt(4)求平方根,结果为2。 abs(-3)求绝对值(整数,结果为3),pow(2,3)(求乘方,结果为23=8)sin()求正弦 第八章指针 1)指针变量的本质是用来放地址,而一般的变量是放数值的。 2)int*p后*p和p的差别: p是指针,*p代表某变量。 *p可以当做变量来用;*的作用是取地址p里面的内容,假如p=&a后,则*p≡a(*p和a是一样的) 3)*p++和(*p)++的之间的差别: 改错题目中很重要 *p++(表示p++,再取*p的值。 即整个式子的值为p的内容,再将p自增1)特点是: 地址会变化。 (*p)++(表示先取*p,再将*p累增1,即将“p的内容”自增1)特点是: p所指内容会变化。 4)三名主义: (考试的重点) 数组名: 表示第一个元素的地址。 数组名不可以自加,它是地址常量名。 (考了很多次) 函数名: 表示该函数的入口地址。 字符串常量名: 表示第一个字符的地址。 5)考试重要的话语【等价替换法】: 指针变量是存放地址的。 并且指向哪个就等价哪个,所有出现*p的地方都可以用它等价的代替。 例如: inta=2,*p=&a; *p=*p+2; (由于*p指向变量a,所以指向哪个就等价哪个,这里*p等价于a,因此“*p=*p+2”可以相当于“a=a+2”) 其它考试重点 文件的复习方法: 把上课时候讲的文件这一章的题目要做一遍,一定要做,基本上考试的都会在练习当中。 1)define的用法,【记住define是“宏替换”,是先替换后算】 如definef1(x)(x*x)后,a=f1(3+4)的结果为19,即a=(3+4*3+4),即19。 而definef2(x)x+x后。 b=f2(3)*f2(5)的结果为23,即b=3+3*5+5,即23。 c=f2(1+2)*f2(2+3)的结果为16,即c=1+2+1+2*2+3+2+3,即16。 2)动态分配存储空间int*p;p=(int*)malloc(5*sizeof(int));【表示动态分配5个整型大小的内存空间,并强制转换为整型指针,然后赋值给p】当心填空题目,malloc的返回类型是void*【因此才需要强制类型转换(int*)】 3)还有main(intargc,char*argv[]){}这种含有参数的题目,是很呆板的题目。 第一个参数是表示输入的字符串的数目, 第二个参数是指向存放的字符串。 比如C文件名为TEST.C,则编译后的程序名为TEST.exe,则运行TEST.exeacdmore后, argc被赋值为4(表示4组字符串)argv[0]为”TEST.exe”,argv[1]为”a”,argv[2]为”cd”,argv[3]为”more”。 4)函数的递归调用一定要记得有结束的条件,并且要会算简单的递归题目。 要会做递归的题目。 5)结构体和共用体以及链表要掌握最简单的。 typedef考得很多,而且一定要知道如何引用结构体中的各个变量,链表中如何填加和删除节点,以及何如构成一个简单的链表,一定记住链表中的节点是有两个域,一个放数值,一个放指针。 6)函数指针的用法(*f)()记住一个例子: intadd(intx,inty){....} main(){int(*f)()=add;//定义指针为函数指针的方法} 赋值之后: 合法的调用形式为三种: 1、add(2,3);2、f(2,3);3、(*f)(2,3) 7)两种重要的数组长度: chara[]={‘a’,’b’,’c’}; 数组长度为3,字符串长度不定。 sizeof(a)为3。 chara[5]={‘a’,’b’,’c’} 数组长度为5,字符串长度3。 sizeof(a)为5。 8)scanf和 gets的数据: 如果输入的是 goodgoodstudy! 那么scanf(“%s”,a);只会接收good.考点: %s不可以接收空格。 gets(a);会接收goodgoodstudy! 考点: gets可以接收空格。 9)共用体的考查: unionTT{inta;charch[4];}这里a和ch共用同一个空间(空间大小为4字节) 考点一: sizeof(structTT)=4;说明结构体占用的空间是成员中占用空间最大的。 考点二: TTt1;t1=0x1234;那么ch[0]=0x34,且ch[1]=0x12。 说明是共用的,且整型的低位存在地址的高位,高位存低位。 10)“文件包含”的考查点: 文件no1.c文件no2.c 这里一个C语言程序是有两个文件组成,分别是no1.c,no2.c。 那么no2.c中最开始有个#include"no1.c",它表示把第1个文件的内容给包含过来,也就是将no1.c全部复制到include处,那么在no2.c中可以调用add()函数了。 还有,万一考到“一个文件必须要有main函数”。 那么这句话错了。 例如: no1.c中就没有main函数。 还有,“头文件一定是以.h结束的”。 这句话错了。 例如: no2.c中就是#include"no1.c",包含的头文件“no1.c”就是以.c结尾的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 选择题 冲刺 复习资料