NCRE二级C全程辅导(新版).doc_第1页
NCRE二级C全程辅导(新版).doc_第2页
NCRE二级C全程辅导(新版).doc_第3页
NCRE二级C全程辅导(新版).doc_第4页
NCRE二级C全程辅导(新版).doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

石家庄市求实电脑职业培训学校全国计算机等级考试全国计算机等级考试Nation Computer Rank Examination石家庄市求实电脑职业培训学校ShiJiaZhuang QiuShi Computer Occupation Training School全 程 辅 导(2011年上半年专用)二级C语言程序设计求实IT教育教学处等级考试办公室目 录Content全国计算机等级考试NCRE全程辅导 目录石家庄市求实电脑职业培训学校全国计算机等级考试第一部分 教程章节知识点回顾1 第1章 C程序设计的初步知识1 第2章 顺序结构1 第3章 选择结构3 第4章 循环结构4 第5章 字符型数据6 第6章 函数6 第7章 指针与地址7 第8章 数组8 第9章 字符串12 第10章 变量的存储属性15 第11章 编译预处理16 第12章 结构体的使用18 第二部分 运算符与表达式21第1章 算术运算符7 第2章 赋值运算符9 第3章 关系与逻辑运算符10 第4章 特殊运算符11 第5章 位运算12 第6章 优先级与结合性13 第7章 历年真题训练14第三部分 变量的本质18第1章 C语言的数据类型7第2章 变量的地址与指针8第3章 变量的存储属性9第4章 动态存储分配10第5章 数组与数组元素11第6章 结构体与数组12第7章 主函数带参13第七部分 数据结构40第1章 数组41第2章 线性链表42第3章 冒泡法排序43第4章 常考算法44第5章 历年真题训练45第八部分 上机实验50第九部分 预测试题60全国计算机等级考试全程辅导 27第一部分 教程章节知识点回顾*第1章 C程序设计的初步知识*一、高级语言编写的程序称为 源程序/源文件 ,C语言源文件扩展名为 *.c ;二进制代码表示的程序称为 目标程序/目标文件 ,扩展名为 *.obj ;最终用户可以直接执行的程序称为 可执行性程序/可执行性文件 ,扩展名为 *.exe 。将源文件转换为目标文件的过程被称为 编译 【Compile】;将目标文件转换为可执行性文件的过程被称为 链接 【Link】。二、C语言程序的格式规定:(1)C程序由 函数 组成,其中主函数名称为: main() 。C程序主函数只能有一个,是整个程序的入口。 (2)函数体用 大括号 扩住,函数体内部包括 定义部分 和 执行部分 。 (3)函数体内部的语句用 分号 结尾。 (4)编译预处理以 井号(#)号开头,加载基本输入输出头文件的格式为: # include 。 (5)C语言的注释语句格式为: /*注释内容*/ ,C语言的注释语句内部不能嵌套注释。三、标识符: 1、C语言的标识符分为三种: 关键字 、 预定义标识符 、 自定义标识符 。 2、关键字不能用于进行变量的定义,预定义标识符可以用于进行变量的定义。 3、符号常量的格式: # define 符号常量名 常量 。 4、变量名的命名规则:(1)只能包括三种字符: 数字 、 字母 、 下划线 ;(2)不得以 数字 开头;(3)必须 先定义后使用 ;(4)做到 见名知意 。四、基本数据类型: 1、整型数据:【不具备小数点的数】 (1)整型常量:十进制整型常量、八进制整型常量(必须以0开头)、十六进制整型常量(必须以0x或0X开头)。 A .在整数末尾添加L或l,表示长整型常量,在内存中占4字节。例如:5L、0L、100L。 B .在整数末尾添加U或u,表示无符号整型常量。例如:0U、4u,-20u是错误的格式。 C .在整数末尾添加LU或lu,表示无符号长整型。 (2)整型变量:A .带符号短整型【在内存中占2字节,用关键字signed short int来进行定义,取值范围-32768+32767】 B .带符号基本整型【在内存中占4字节,用关键字signed int来进行定义】 C .带符号长整型【在内存中占4字节,用关键字signed long int来进行定义】 D .无符号短整型【在内存中占2字节,用关键字unsigned short int来进行定义,取值范围065535】 E .无符号基本整型【在内存中占4字节,用关键字unsigned int来进行定义】 F .无符号长整型【在内存中占4字节,用关键字unsigned long int来进行定义】 2、实型数据:【具备小数点的数,例如:0.0、.15、24.都是合法的实型常量。】 (1)实型常量:定点实数(实型常量的小数形式) 浮点实数(实型常量的指数形式,采用科学计数法来表示实数),格式:X.nnnnnnEddd A .E或e前后必须有数字,之间不得有空格。 B .指数不能采用小数,必须是整数。 (2)实型变量: A .单精度实型【在内存中占4字节,用关键字float来进行定义,可保留7位有效数字,数量级范围为10-3810+38】 B .双精度实型【在内存中占8字节,用关键字double来进行定义,可保留1516位有效数字,数量级范围为10-30810+308】五、运算符与表达式:【详见全程辅导 第二部分 运算符与表达式】*第2章 顺序结构*一、C语言的三类语句: 1、赋值语句:在赋值表达式尾部加上一个分号,就构成了赋值语句。 2、复合语句:用一对花括号把若干语句括起来,就构成了复合语句。 (1)一个复合语句在语法上视为一条语句;(2)复合语句内可以有自己的定义部分和执行部分。 3、空语句:如果只有一个分号,这个分号也是一条语句,被称为“空语句”,程序执行时不产生任何动作。二、库函数printf()的使用:【输出函数】 1、用法1:带有一个参数,用双引号引住,原样输出。【格式:printf(“输出内容”)】 2、用法2:带有两个参数,第一个参数用双引号引住。【格式:printf(格式控制,输出项表列)】 3、用法3:在输出函数的末尾加上分号,构成输出语句。4、参数:格式控制,由格式说明组成。格式说明以“%”开头,以格式字符结尾。 整型数据类型的格式说明:%d %i %ld %hd %u %o %x 实型数据类型的格式说明:%f %lf %g %e 字符数据类型的格式说明:%c 其他格式说明:%s %p % 语 句输出格式解 释printf(“%d”,250);250原样输出printf(“%6d”,250);250指定域宽为6;默认右对齐,补空格。printf(“%.6d”,250);000250指定精度为6;输出数据小于指定精度,在整数中,数字前面补0。printf(“%.2d”,250);250指定精度为2;输出数据大于指定精度,在整数中,按数字实际宽度输出。printf(“%f”,15.36);15.360000默认精度为6;在小数位出补0。printf(“%7f”,15.36);15.36指定域宽为7;实数中小数点也算1位。printf(“%7.1f”,15.36);15.4指定域宽为7,指定精度为1;四舍五入。printf(“%.0f”,15.36);15指定精度为0;不输出小数点和小数部分。printf(“%e”,15.36);1.536000e+01小写e。printf(“%E”,15.36);1.536000E+01大写E。printf(“%14E”,15.36);1.536000E+01printf(“%.6g”,0.0024);0.00240000指定精度为6;有效数字为6位。printf(“%.6g”,2.567986);2.56799指定精度为6;四舍五入。printf(“%.6s”,“abcdefg”);abcdef指定精度为6;输出数据大于指定精度,在字符串中,舍掉多余的字符。printf(“%.6s”,“abcd”);abcd指定精度为6;输出数据小于指定精度,在字符串中,原样输出。printf(“%5d”,23);23printf(“%-5d*”,23);23*左对齐。printf(“%+5d”,23);+23带有符号,且符号算作1位。printf(“%+-14.8f*”,1.3455);+1.34550000*printf(“%05d”,23);00023前导补0。printf(“%-05d*”,23);23*-0中,左对齐,0无效。printf(“%o”,027);27默认%o不输出八进制数字中的前导0。printf(“%#o”,027);027输出八进制数字中的前导0。printf(“%x”,0x2e4);2e4默认%x不输出十六进制数字中的前导0x。printf(“%X”,0x2e4);2E4大写字母AF。printf(“%#x”,0x2e4);0x2e4输出十六进制数字中的前导0x。printf(“%#X”,0x2e4);0X2E4大写X与字母AF。 注意事项: (1)printf()函数具有返回值,是本次调用输出字符的个数,包括回车等控制符。 (2)调用printf()函数时,其参数是从右至左进行处理的。三、库函数scanf()的使用:【输入函数】 1、格式:scanf(格式控制,输入项表列) 在输入函数的末尾加上分号,构成输入语句。 2、功能:停止程序的继续执行,等待从键盘上读入数据给指定的输入项。 3、参数:格式控制,与printf()函数的格式说明相同。 (1)要输入短整型(short)数据,格式说明必须使用“%hd”。 (2)要输入双精度实型(double)数据,格式说明必须使用“%le”或“%lf”。 4、注意事项: (1)若实际输入的数据比“格式控制”中要求的数据多,则多出的数据等待下一个scanf()函数获取。 (2)若实际输入的数据比“格式控制”中要求的数据少,则系统会继续等待,知道输入满足要求为止。 (3)默认情况下,一条输入语句中多个“格式说明”之间没有任何间隔,则再输入数据时,可以采用空格、回车、制表符来进行间隔。 (4)若“格式控制”存在“格式说明”以外的其他内容,则在输入数据时,原样输入。 (5)输入项表列中的变量,必须使用&运算符取出变量的地址。 (6)%和格式字符之间可以使用整数来说明输入数据所占的宽度。语 句输入格式解 释scanf(“%d%d%d”,&a,&b,&c);格式1:153050格式2:15 30 50格式3:15(Tab)30(Tab)50一条输入语句中要求输入多个数据(3个),多个格式说明(%d)之间没有任何间隔,则在输入数据时,可以采用空格、回车、制表符进行间隔。scanf(“%d,%d,%d”,&a,&b,&c);15,30,50格式说明之间采用逗号,输入数据时也采用逗号间隔。scanf(“%2d%f”,&a,&b);876543.0变量a的结果为87,变量b的结果为6.0。scanf(“a=%d,b=%d”,&a,&b);a=15,b=30格式说明以外的内容原样输入。scanf(“%d%*d%d”,&a,&b);153050变量a的结果为15,变量b的结果为50。星号(*)跳过了30的输入。*第3章 选择结构*一、关系运算与逻辑运算:【详见全程辅导 第二部分 运算符与表达式】二、if语句构成的单分支结构: 1、行if语句结构:if(条件) 语句; 【如果条件成立,则执行语句;】 2、块if语句结构:if(条件) 【如果条件成立,则 语句; 执行语句;】 3、块if语句结构:if(条件) 【如果条件成立,则 语句1; 执行语句1; else 否则 语句2; 执行语句2;】三、if语句构成的多分支结构: 1、多个行if的堆加:if(条件1) 语句1; 【如果条件1成立,则执行语句1;】 if(条件2) 语句2; 【如果条件2成立,则执行语句2;】 .【1】无论条件成立与否,都可以再执行一个完整的if-else结构。【2】else总是和其上的距离最近的且尚未配对的if配对。【3】任何格式的else可以省略,根据题意具体分析。【4】“条件”可以时任何合法的表达式。【5】条件的运算结果为0,表示条件不成立;条件的运算结果为非0,表示条件成立。【6】if、else都是C语言关键字。 2、if的嵌套:if(条件) if(条件1) 语句11; else 语句12; else if(条件2) 语句21; else 语句22; 3、if-else if结构:if(条件1) 语句1; else if(条件2) 语句2;执行流程:(1)计算表达式的结果。 (2)自上向下,寻找第一个常量表达式的结果与(1)计算的结果相同的case子句。 (3)执行该句case后的语句,以及其下的所有语句。(4)若所有常量表达式与表达式均不相同,则执行default后的语句。 else if(条件3) 语句3; else语句n;四、专门的多分支结构:switch(表达式)case 常量表达式1:语句1;case 常量表达式2:语句2;【1】switch、case、default都是C语言关键字。【2】表达式必须用括号扩住。【3】花括号内部的内容被称为switch体。【4】case与常量表达式之间必须有空格。【5】允许case子句后没有需要执行的语句,但冒号不能省略。【6】default子句可以书写在switch体的任意位置。 case 常量表达式n:语句n;default:语句n+1;case子句后的语句经常和break语句连用,以解决其后语句均被执行的情况。五、选择程序设计:1、有3个整数a、b、c,由用户从键盘输入三个数的值,输出其中最大的数。2、分段函数:当x1时,y=x;当1xy)if(y=0) y=sqrt(x); B)y=sqrt(x);else y=sqrt(-x) ; if(x=0) y=sqrt(x) ; D)y=sqrt(x=0? x:-x);if(x0) case 1:switch(b10); printf(“s=%dn”,s); 2、main() int x=0,y=5,z=3; while(z-0 & +x=l; i-) for(j=1; j=1;i-) sum=0; for(j=1;j0;x-) if(x%3)printf(%d,x-);continue;printf(%d,-x); 7、main( ) int y=9;for(;y0;y-)if(y%3= =0) printf(%d,-y); 8、main( ) int i,j,m=55;for(i=1;i=3;i+ +)for(j=3;j=i;j+ +) m=m%j;printf(%dn,m); 9、main() int n=12345,d;while(n! =0) d=n%10;printf(%d,d);n/=10; 10、有下列程序段,且变量已正确定义和赋值for(s=1.0,k=1;k0 & n5);12、main( ) int i;for(i=1;i=40;i+ +) if(i+ +%5= =0)if(+ +i%8= =0) printf(%d,i);printf(n);13、有下列程序,若运行时从键盘输入:18,11,则程序的输出结果是 【9】 。main( ) int a,b;printf(Enter a,b: ); scanf(%d,%d,&a,&b);while(a! =b) while(ab)a-=b;while(ba)b-=a;printf(%3d%3dn,a,b);14、下列程序的功能是:将输入的正整数按逆序输出。例如:若输入135 则输出531。请填空。main( ) int n,s;printf(Enter a number : ); scanf(%d,&n);printf(Output: );do s=n%10; printf(%d,s); 【10】 ;while(n! =0);printf(n);七、循环与switch的结合考查: 1、main( ) int k=5,n=0;do switch(k) case 1: case 3:n+ =1;k-;break;default:n=0;k-;case 2: case 4;n+ =2;k-;break;printf(%d,n);while(k0 & nK);结果为: (3) 大小写转换:printf(“%cn”,m-32);结果为: 【结论:大写字母+32=小写字母 小写字母-32=大写字母】(4) 字符数字转换:printf(“%dn”,2-0);结果为: 【结论:数字字符-0=数值 数值+0=数字字符】 5、识记以下字符的ASCII码值:ASC(A)= 65 ASC(a)= 97 ASC(0)= 32 ASC(空格)= 48 *第6章 函数*基础知识点:1、C语言函数包括两种: 库函数 和 用户自定义函数 。其中库函数必须加载头文件,头文件扩展名为 *.h 。 【回顾知识点】C源文件扩展名为 ,编译后目标文件扩展名为 ,链接后可执行性文件扩展名为 。2、库函数总结:【共要求掌握24个】 (1) 基本输入输出头文件:stdio.h【6个】printf()、scanf()、putchar()、getchar()、puts()、gets()。 (2) 字符处理头文件ctype.h:【6个】isspace()、isalpha()、islower()、isupper()、tolower()、toupper()。 (3) 数学头文件:math.h【5个】abs()、fabs()、sqrt()、pow()、exp()。 (4) 字符串处理头文件:string.h【4个】 strlen()、strcat()、strcpy()、strcmp()。 (5) 动态存储分配和随机函数头文件:stdlib.h【3个】 malloc()、calloc()、free()。3、用户自定义函数: (1) 定义函数:函数返回值类型 函数名(参数1类型 参数1,参数2类型 参数2,) 函数体; 注意:C语言不允许嵌套定义用户自定义函数。 (3) 调用函数:( 没有返回值,执行一个操作 ) 函数名(实参1,实参2,); ( 有返回值,返回一个结果 ) 变量名=函数名(实参1,实参2,); (4) 函数声明:函数返回值类型 函数名(参数1类型,参数2类型,);4、用户自定义函数的参数: (1) 函数的参数有两类:定义函数时的参数叫做 形式参数/形参 ,调用函数时的参数叫做 实际参数/实参 。函数调用时需要将 实参传递给形参 。 (2) 参数的传递有两种:C语言默认采用 值传递 ,意思是:在执行用户自定义函数时,若形参发生了变化,实参 不会受到影响,不发生变化 ;另一种叫做 地址传递 。 (3) 执行用户自定义函数时,系统为形参开辟了新的临时存储空间。当退出用户自定义函数时,系统将收回为形参开辟的临时存储单元。 (4) 用户自定义函数可以没有参数,但是函数名后的括号不能少。5、用户自定义函数的返回值: (1) 格式1:return (返回值); 格式2:return 返回值; (2) 函数没有返回值,则需要在定义用户自定义函数时,在“返回值类型”位置处输入 void。(3) 函数的返回值为int,可以在定义用户自定义函数时省略返回值类型。 6、用户自定义函数的声明:(1) 函数的使用必须遵循“先定义,后调用” 的原则。【被调函数书写在主调函数的前面】 (2) 若被调函数在主调函数的后面,必须在主调函数内部声明被调函数。(3) 若被调函数的返回值为int,则不必声明,可以书写在任意位置。*第7章 指针与地址*一、基础知识点:1、变量的本质:变量是内存中的存储空间,各种数据类型的数据在内存中所占存储空间的第一个字节的地址就是整个变量的地址。2、指 针的概念:指针就是内存的地址。指针变量的概念:存放地址的变量。3、指 向的概念:指针变量存储的是普通变量的地址,就说指针指向这个普通变量。 4、指针变量的基类型:指针所指向的普通变量的数据类型就是指针变量的基类型。 5、指针变量的定义:指针变量的基类型 *指针变量名;6、让指针变量指向普通变量:int a=10,*p= ; int a=10,*p; ;二、指针的移动:设一片连续的存储空间里存放着:10 20 30 40 50,定义int *p,并使指针变量p指向10。1、*+p; 执行后,指针变量p指向 ,整个表达式的结果为 。2、+*p; 执行后,指针变量p指向 ,整个表达式的结果为 。3、*p+; 执行后,指针变量p指向 ,整个表达式的结果为 。4、(*p)+; 执行后,指针变量p指向 ,整个表达式的结果为 。三、指针与函数:1、指针与函数参数的传递:(1) 实参是指针变量或变量的地址,则形参必须采用基类型与实参基类型相同的指针变量的形式。 例:函数定义部分 int ay(int *m,int *n) 函数体;【定义了一个函数,函数名为ay,函数有两个参数,均为基类型为int的指针变量,函数返回值类型为int】 函数调用部分 int y=ay(&a,&b); /*将普通变量的地址传递给形参指针变量m和n,m指向变量a,n指向变量b*/ int y=ay(p,s);/*将指针变量传递给形参指针变量m和n,m指向指针变量p所指,n指向指针变量s所指*/ 函数声明部分 int ay(int *,int *);(2) 这种参数的传递过程被称为 地址传递 ,形参在用户自定义函数执行过程中发生了变化,实参也会发生变化。2、函数返回地址值:(1) 函数返回地址值是指:函数的返回值是 变量的地址 或 指针变量 。(2) 此时,函数的返回值类型为基类型与返回值相同的指针型。 例:函数定义部分:int * st(int *s,int c) int a,*p=&a; ; return &a; /*返回变量的地址*/ int * st(int *s,int c) int a,*p=&a; ; return p; /*返回指针变量*/ 函数调用部分:int a=20;int *w=st(&a,a); /*将返回值赋给基类型为int的指针变量w*/ 函数声明部分:int * st(int *,int);*第8章 数组*数组Array,是内存中一片连续的存储空间,在数据结构中被称为线性表或顺序表。一、一维数组的定义与初始化: 1、int a6; /*定义一个数组,数组名为 ,数组共有 个数组元素,数组元素的下标从 到 ,每个数组元素的数据类型均为 。*/ 2、一维数组的初始化:【在定义一维数组的同时为数组元素赋初值】(1) int a6=10,20,30,40,50,60;(2) int a6=10,20,30; /*整型数组初始化,只赋部分值,则剩余的数组元素a2、a3、a4 的值均为0*/(3) char c6=A,B,C; /*字符型数组初始化,只赋部分值,则剩余的数组元素c2、c3、c4 的值均为0*/(4) int a=10,20,30,40,50,60; /*允许在定义数组并为数组元素赋初值时省略一维下标,此时该数组的数组元素个数为初始化的元素个数*/a0 a1 a2 a3 a4 a5a10 20 30 40 50 60p二、一维数组与指针: 1、 一维数组数组名是一个指向一维数组首元素的指针常量。 即:a=&a0 2、定义指针变量,指向一维数组首元素: (1) 方法1:int *p=&a0; (2) 方法2:int *p=a; 3、引用数组元素a3的方法:a3 *(a+3) *(p+3) *(p+=3) p34、p3这种格式可以正确引用数组元素,因为 指向一维数组首元素的指针变量,可以像数组名一样引用数组元素。三、一维数组与函数:1、数组元素做实参,形参采用 普通变量 。【数组元素的使用方法和普通变量相同,可以使用普通变量的地方都可以使用数组元素】 调用函数sum(a0); 则函数首部可以写为:void sum(int m) 函数体; 2、数组名做实参,形参采用 (1) 基类型为数组类型的指针变量、(2) 带有下标的一维数组、(3)省略下标的一维数组。 调用函数sum(a); 则函数首部可以写为下列三种格式:void sum(int *p) 函数体;void sum(int *p6) 函数体;void sum(int *p) 函数体;3、数组元素地址做实参,形参采用 基类型相同的指针变量。 调用函数sum(&a1); 则函数首部可以写为:void sum(int *p) 函数体;四、二维数组的定义与初始化: 1、int c54; /*定义一个数组,数组名为 ,数组共有 个数组元素,数组元素的下标从 到 ,每个数组元素的数据类型均为 。*/ 2、二维数组的初始化:【在定义二维数组的同时为数组元素赋初值】 (1) int c54=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20;(2) int c54=1,2,3,4,5,6,9,13,14,15,17,18,19,20; /*下列数组元素的值为0:c12、c13、c21、c22、c23、c33*/ (3) int c54=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20;(4) int c4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20; /*允许在定义数组并为数组元素赋初值时省略一维下标,此时该数组的数组元素个数为初始化的元素个数*/五、二维数组与指针:c00c01c02c03c10c11c12c13c20c21c22c23c30c31c32c33c40c41c42c43二维数组的结构 1、二维数组的本质: 二维数组是数组元素为一维数组的一维数组 。 2、int c54;(1) 二维数组的一维形式:c0、c1、c2、c3、c4。 二维数组的一维形式是指向每一行首元素的指针常量。c1=&c10 即:ci=&ci0(2) 二维数组数组名:c。 二维数组数组名是指向c0的指针常量。即:c=&c0=&c00 3、引用数组元素c23的方法: c23 *(c2+3) *(c0+2*4+3) *(*(c+2)+3) (*(c+2)3 4、定义指针数组,并将数组的每一个元素指向二维数组每一行的首元素:int c54,*p5;方法1:for(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论