福建省计算机二级C语言复习资料.docx
- 文档编号:3464259
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:19
- 大小:419.68KB
福建省计算机二级C语言复习资料.docx
《福建省计算机二级C语言复习资料.docx》由会员分享,可在线阅读,更多相关《福建省计算机二级C语言复习资料.docx(19页珍藏版)》请在冰豆网上搜索。
福建省计算机二级C语言复习资料
C语言最重要的知识点复习资料!
1)程序结构是三种:
顺序结构,循环结构(三个循环结构),选择结构(if和switch)
2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是它的地址.
4)bit是位,是指为0或者1。
byte是指字节,一个字节=八个位.
5)导入题目alt+f,f2保存,ctrl+f9编译,alt+f5查看结果,每次修改后,①按f2保存②ctrl+f9编译③无错误后界面会跳转到黑屏中运行,若无自动跳转按alt+f5查看结果。
概念常考到的:
1、编译预处理不是C语言的一部分,不再运行时间,占编译时间。
C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、每个C语言程序中main函数是有且只有一个。
3、在函数中不可以再定义函数。
4、算法的是一定要有输出的,他可以没有输入。
5、break可用于循环结构和switch语句,continue只用于循环。
第一、二章C语言基础及简单程序设计
1.c语言由什么构成;(函数:
一个C语言程序由一个至多个函数组成,)
2.main()是主函数,该函数既是入口又是出口(一个入口,一个出口)
3.数据类型:
基本数据类型(整型,字符,实型,枚举型),占用内存的字节数,表示范围
4.常量:
123,0101(没有8和9),0x41,'1',-2.30,-1.2E+5
5.在一个字节内,字符通整型,整型通字符
6.合法的用户标识符考查:
合法的要求是由字母,数字,下划线组成,并且数字不能开头。
关键字不可以作为用户标识符号。
迷惑你的地方If是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
7.实型数据的合法形式:
考试口诀:
e前必有数,e后为整数。
.
2.333e-1就是合法的,且数据是2.333×10-1。
8.字符和字符串数据的合法形式:
:
'1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号’\0’)。
'0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。
9.转义字符的考查(p28):
转义符\:
'\n','\0','\ddd'八进制,'\xdd'十六进制等
10.强制类型转换:
一定是(int)a不是 int(a),注意类型上一定有括号的。
注意(int)(a+b)和(int)a+b的区别。
前是把a+b算完结果转型,后是把a转型再加上b。
11.自加、自减表达式:
假设a=5,++a(先算a自增为6,后表达式6),a++(先表达式=5在自增a=6)。
考试口诀:
++在前先自增后赋,++在后先赋值后自增。
12.逗号表达式:
优先级别最低;表达式的数值逗号最右边的那个表达式的数值。
如(2,3,4)的表达式的数值就是4。
13.位运算的考查:
口诀:
先转二进制再运算
总的处理方法:
(先把十进制变成二进制再变成十进制)。
例1:
chara=6,b;
b=a<<2; 这种题目的计算是先要把a的十进制6化成二进制,再做位运算P课本229。
14.%符号两边要求是整数。
不是整数就错了。
15.变量:
变量的命名规则满足标识符的命名规则,区分大小写,关键字(P7)除外,变量的定义一般都要放在函数或程序的开头位置(即先定义后使用)
16.分号:
表示一个语句结束
17.变量的定义:
类型名变量名列表;(不同的类型要写成两句),定义的时候给值成为变量的初始化,初始化的时候不能连等(如inta=b=c=1;是错的!
inta,b,c;a=b=c=1;是对的)。
18.变量的赋值:
变量名=表达式或变量名复合赋值运算符表达式(复合赋值运算符:
+=,*=,^=,...),如:
xyz+2=c行吗?
不行(赋值表达式左边只能是变量)!
赋值的时候可以连等。
19.输入一个字符:
x=getchar(),putchar(x),有这两个函数及FILE时一定要加上头文件
#include
20.getch(),表示暂停程序运行,可直接查看结果,否则运行完后不显示结果(需按ALT+F5)。
21.scanf("格式控制符",地址列表),地址列表可为数组名、指针变量名及普通变量名(普通变量名前要加加&)。
inta;charb[10];(字符型char:
%c,字符串:
%s;整形int:
%d长整型long:
%ld;浮点型float:
%f,双精度double:
%if)scanf("%d",&a);scanf("%s",b);数组名b=&b[0]
22.保留小数点n位:
printf("%m.nf",32.6789)或者printf("%.nf",a)
23.scanf的格式控制符中,除了逗号,一般不加其他字符;一定要记住,有逗号时输入要加逗号,否则:
数据用空格隔开,字符连着输入;没有"%m.nf"的写法,只有"%mf"的写法.
24.常量不能++、--;=与==的区别(赋值和判断)
例:
b=(a=1,a++,a++),结果为2
又例:
b=(a=2)+(a=3),结果为5
又例:
a=1;b=(++a)+(++a)结果为5
25.在C语言中,对于逻辑运算,非零的数(不管实数还是整数)都认为是真的,真的就是1,假的就是0;
26.关系运算的结果是逻辑值(真为1假为0)。
27.运算符:
运算符的优先序(课本最后一页):
括号,单目(++,--,!
,*,),算术(*,/,%,+,-),关系(<=,>,==,!
=之类),位运算(&,|),逻辑(&&,||),条件(判断?
真:
假),赋值(+=,*=之类),逗号表达式
例如.以下程序的运行结果是D
structst
{intn;floatx;
}*p;
voidmain()
{structstarr[3]={{10,5.6},{12,7.1},{14,6.7}};
p=arr;
printf(“%d\n”,++p->n);
p++;
printf(“%d,%.2f\n”,p->n,p->x);
}
A)12B)11C)11D)12
12,7.1010,5.6012,7.1014,6.70
第三、四章选择和循环结构
1.C程序一般采用自顶向下的编写格式,模块化(函数)
2.C程序结构有三种:
顺序,选择(分支),循环
3.分支结构(或选择结构)[if结构和switch结构]
1.
x=y=z=1;a=15;
if(!
x)
a--;
elseif(y);
if(z)
a=3;
else
a+=4;
printf("%d\n",a);
}
if分支结构(碰到if与else个数不相等时,从最后的一一搭配)
if(a>b)
if(a>c)
printf("%d",a);
else
printf("%d",b);
printf("%d",c);
2.多分支switch:
(注意有没break;)
main()
{intc;
while((c=getchar())!
='\n')
{switch(c-'2')
{case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
}
printf("\n");
}
当输入:
247<回车>,程序的输出结果是()
switch(x)
{casex1:
语句1;[break;]
...
casexn:
语句n;[break;]
default:
语句;[break;]
}
若计算出表达式的值与case后的所有常量表达式的值都不同则只执行default及之后的语句组一直执行到最后(若遇break则终止退出switch结构),如没有default语句则直接退出switch结构。
例:
intb=10;
for(i=1;i<=10;i++)for(i=1;i<=10;i++)
{if(i%2==0)break;{if(i%2==0)continue;
printf(“%d”,i);}printf(“%d”,i);}
printf(“%d”,b);printf(“%d”,b)
break;/*用于结束当层循环,跳到当层循环后面的语句。
*/
上例中i=2时,执行break;退出for循环,执行printf(“%d”,b);语句。
continue;/*用于结束当次循环,跳过本次循环后面的语句,进入下次循环,如执行i++。
*/
右边中,i=2时,执行continue;退出i=2循环,执行i++,即i=3语句,继续判断for循环。
直到不满足for的判断条件i<=10,退出循环。
循环总结:
•for循环与while循环类似,属于先判断后执行;dowhile,属于先执行后判断
•for语句中有三个表达式:
表达式1通常用来给循环变量赋初值;表达式2通常是循环判断条件;表达式3用来更新循环变量的值
•for语句中的各个表达式都可以省略,但要注意分号不能省略
•如果省略表达式2和表达式3需要在循环体内设法结束循环,否则会导致死循环
•嵌套循环时,必须将被嵌套的循环语句完整地包含在外层循环的循环体内。
一般外层循环控制趟次数或行个数,内层循环控制每行中*之类的个数。
第五章函数
1.系统函数:
数学类函数(出现sqrt,cos,sin等之类的)必须包含头文件#include
输入输出函数#include
字符串函数(出现strcmp,strcpy,strcat等)#include
2.自定义函数:
格式
类型名函数名(形式参数列表)
{函数体}
3.不写函数类型名默认为整型
4.如果函数类型名为void表示无返回值函数(不写return)
5.
如果调用函数写在被调函数之前,且被调函数类型名不是整型(或字符型),则在调用函数中或调用函数之前应该先声明,如何声明?
声明:
类型名函数名(形式参数列表);
6.函数的递归:
直接或者间接调用自身。
(如阶乘)
7.全局变量:
在函数外定义的变量。
局部变量:
在函数内定义的变量、形式参数、复合语句中定义的变量。
若全局变量和局部变量同名且都有值,则自动屏蔽掉全局变量,使用局部变量值来计算。
8.函数调用时,实参向形参传递:
(注意实参跟形参不仅个数相等,类型也要完全相等)
(1)按值传递:
形参的变化不会改变实参的变化。
(若有返回值将值带回,否则直接返回主函数位置接着执行后续函数,函数的返回值类型与函数类型一致);
(2)按地址传递,一般是用指针来存放地址:
形参的变化就会有可能改变实参的变化。
(3)数组传递,通常就把数组名及数组元素传过去
9.returny;或return(y);不要写成returny1,y2;
10.静态变量:
staticintx;
(1)没给值,默认为0;
(2)始终占用内存,其值会保留下来(即只赋初值一次,)
[静态变量]举例
eg:
以下程序的运行结果是(C)。
fun3(intx)main()
{staticinta=3;{intk=2,m=1,n;
a+=x;n=fun3(k);
returna;n=fun3(m);
}printf("%d\n",n);
}
A、3B、4C、6D、9
11.宏定义:
#define标识符字符串宏一定要先替换后计算
分带参和无参宏定义无参宏定义如#definePx*x//表示碰到P时用x*x替换
带参宏定义如#defineP(x)x*x//表示碰到P(x)时用x*x替换
若有定义:
#defineN3+2,则表达式N*2的值为(B)。
3+2*2
A、5B、7C、10D、0
以下程序运行后输出结果是(B)。
#defineMIN(m,n)m m: n main() {inta=3,b=5,c; c=2*MIN(a,b); printf("%d",c);} A、3B、5C、6D、10 解释: c=2*MIN(a,b)=2*a a: b2*3<5? 3: 5。 第六章数组 1.一维数组的定义格式为: 类型说明符数组名[常量表达式];例如: inta[10]; 或者#defineN5inta[N]; 常量表达式可以是整型常量或字符常量或枚举值或符号常量表达式(注意不能包含变量). 2.C语言规定,下标的最小值是0,最大值则是数组大小减1。 eg: m[8]中,表示数组m有8个元素,下标从0开始一直到7。 这8个数组元素分别是: m[0]、m[1]、m[2]、m[3]、m[4]、m[5]、m[6]、m[7],注意没有m[8]。 3.对一维数组的初始化赋值 (1)可以只给部分元素赋初值。 没有赋值的元素: 对于数值型数组,自动赋初值为0;对字符型数组,自动赋初值为空字符。 (2)只能给元素逐个赋值,不能给数组整体赋值。 intm[5]={2,2,2,2,2}; 不能写成: intm[5]=2; (3)如果给全部元素赋值,则在数组说明中,可以不给出数组元素的个数,其长度等于初值表中数组元素的个数。 intm[]={1,2,3,4,5}; 4.二维数组元素的引用形式: 数组名[行数下标][列数下标]; Eg: 若有定义: ints[3][4]={{1,2},{0},{3,4,5}};则s[2][1]的值为(B)。 A.3B.4C.0D.1 (1)省略一维大小: Eg: inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};printf("%d\n",a[1][2]);D A.2B.3C.6D.7 5.字符数组的定义格式: char数组名[常量表达式]; 6.在c语言中,没有专门的字符串变量,通常是用一个字符数组来存放一个字符串,由于字符串总是以‘\0’作为串的结束标志,因此当把一个字符串存入一个数组时,也把结束符‘\0’存入数组,并以此作为该字符串结束的标志 7.C语言允许用字符串的方式对数组做初始化赋值。 有两种方式: chars[]={‘1’,’2’,’3’,’\0’};<=>chars[]={“123”};<=>chars[]=“123”; 8.设已定义chars[]="\"Name\\Address\023\n";,则字符串所占的字节数是(B)。 A.19B.16C.18D.14 9.字符串的常用串函数 1strlen函数——测试字符串长度 •格式: strlen(字符数组); strlen得到的是有效字符的个数(不包括‘\0’) sizeof得到的是整个数组的长度(包括‘\0’) 2.strcat函数——字符串连接函数 格式: strcat(字符数组1,字符数组2); 3.strcmp函数——字符串比较函数 格式: strcmp(字符串1,字符串2); 4.strcpy函数——字符串拷贝函数 格式: strcpy(字符数组1,字符数组2); ⑤.有时只需要复制字符数组2中前面若干个字符,这些用strcpy函数也能实现。 如: strcpy(m1,m2,3)表示将m2前面3个字符复制到m1中,从而取代m1中最前面的3个字符。 10.冒泡、选择等排序(自我选择掌握一种能够单独写出排序过程,备用编程题2) 第七章指针 1.指针变量的本质是用来放地址,而一般的变量是放数值的。 int *p中 *p和p的差别: *p可以当做变量来用;*的作用是取后面地址p指向的数值,p是当作地址来使用。 *p++和(*p)++的之间的差别: 改错题目中很重要 *p++是地址会变化;(*p)++是数值会要变化。 2.指针变量的定义: 一般形式为: 类型符*指针变量名;如: int*p; 3.指针变量的引用。 两种基本的指针运算: &(*p)=p,两符号可以相抵消得 ☐&: 取变量的地址 ☐*: 指针运算符(或称“间接访问”运算符) 4.指针变量作函数参数 [例7.3]用函数实现两个变量的交换 voidswap(int*p1,int*p2) {int*t; t=*p1;*p1=*p2;*p2=t; } main() a=9,b=5 {inta=5,b=9; swap(&a,&b); printf(“a=%d,b=%d\n”,a,b); } 5.指针函数(函数的返回值为指针) 一般定义为: 类型符*函数名(参数表){……} [例7.4]把两个数中的最大值设为0 int*max(int*q1,int*q2) {return*q1>*q2? q1: q2;} x=5,y=0 main() {intx=5,y=9,*p; p=max(&x,&y); *p=0; printf("x=%d,y=%d\n",x,y);} 6.C语言规定: 数组名代表数组的首地址,也就是第一个元素a[0]的地址。 因此: a&a[0]。 若: p=a;/*或写成p=&a[0];*/ 则: p+1&a[1]*(p+1)a[1]p+i&a[i]*(p+i)a[i] 【例7.5】指针运算符“*”与增1运算符“++”同时作用于一个指针变量的情况。 main() {inti,a[]={11,22,33,44,55,66},*p=a; printf("%3d,",(*p)++);11 printf("%3d,",*p++);12 printf("%3d,",*++p);33 printf("%3d\n",++*p);34
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 福建省 计算机 二级 语言 复习资料