二级c语言重点_第1页
二级c语言重点_第2页
二级c语言重点_第3页
二级c语言重点_第4页
二级c语言重点_第5页
已阅读5页,还剩23页未读, 继续免费阅读

下载本文档

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

文档简介

1、全国计算机等级考试 二级C语言本讲义概括了C语言的知识点,归纳总结了语法基础,选择结构,循环结构,函数,数组,字符串,指针,线性链表和其他的知识,让同学们能够更好地学习,愿同学们在考试中取得好成绩第一章 C语言概述第一课 Hello World简单的小程序输出Hello World:/头文件#include <stdio.h>/主函数main()printf("hello worldn");/函数体注意:1.C语言属于编译型语言2.一个程序必须有主函数,而且只能有一个3.C语言源文件的扩展名是.c4.C语言中语句结束的标志是分号第二

2、课 格式化输出函数格式化输出函数:printf()1.不属于C语言基本语法2.C语言并非必须包含头文件3.printf()函数是在头文件<stdio.h>中定义的4.用什么库函数,包含什么头文件程序执行1.编译:.c->.obj(二进制文件)2.组建:.obj->.exe(可执行文件)3.运行:在程序结束后不会关闭窗口调用dos系统命令:system()使用system()函数要引入头文件<stdlib.h>转义符1.n:换行2.:反斜杠3.':单引号'4.":双引号"5.t:缩进第三课 变量定义变量1.定义变量:a.定义

3、一个整数型变量int 变量名b.定义多个整数型变量int 变量名1,变量名2,.输出变量printf("%d",变量名);其中%d是格式控制符printf输出的是双引号中的内容输入变量a.scanf("%d",&变量名);变量名前要加&b.scanf("%d%d",&变量名1,&变量名2);其中,%d%d之间没有空格,输入顺序与变量顺序一致间隔符:回车、空格、制表符第四课 变量的赋值变量的赋值1.%相当于百分号字符%2.顺序结构:从上往下依次执行3.变量:变量值可在程序中变化4.变量

4、初始化:将定义域赋值合并在一起,比如:int a=5;5.赋值:将等号右边的值赋值给左边,比如:a=a+1;运算符1.算术运算符:+、-、*、/、%2.赋值运算符:=3.复合运算符:+=、-=、*=、/=、%=4.自增自减运算符:+、-第五课 变量的交换借助第三方变量交换的实例#include <stdio.h>main()int a,b,temp;printf("请输入两个整数:");scanf("%d%d",&a,&b);printf("a=%d,b=%dn",a,b);&

5、#160;   temp=a;a=b;b=temp;printf("a=%d,b=%dn",a,b);不借助第三方变量交换的实例#include <stdio.h>main()int a,b;printf("请输入两个整数:");scanf("%d%d",&a,&b);printf("a=%d,b=%dn",a,b);    a=a+b;b=a-b;a=a-b;printf("a=%d,b

6、=%dn",a,b);第六课 变量修饰符变量修饰符知识点1.sizeof():计算变量在内存中所占大小2.字符变量只占1字节3.bit:最小存储单位,只能存储0或14.int:整型,占4字节,取值范围:-231231-1,格式控制符:%d5.short:短整型,占2个字节,格式控制符:%hd6.long:长整型,占4个字节,格式控制符:%ld7.signed:有符号8.unsigned:无符号,格式控制符:%u第七课 浮点类型普通浮点类型a.定义:float a;b.赋值:float a=3.5f;双精度浮点类型a.定义:double a;b.赋值:do

7、uble a=3.5;变量、常量都占内存空间浮点型的常量:double a=.3相当于double a=0.3格式控制符a.float控制符:%e:科学计数法形式,最常考,实数E整数(整数、0、负数)%f:保留6位小数,不足部分以0补位%g:原样输出,最常用b.double控制符:%le、%lf、%lg注意:1.浮点数和整数运算,结果为浮点数2.整数和整数运算,结果为整数3.实数不可以参与余数运算第八课 格式化输入输出C语言中三种进制1.八进制a.逢8进一b.表示八进制:0、1、2、3、4、5、6、7c.格式控制符:%od.赋值:以0作为开头,例如:int

8、0;a=010;2.十进制a.逢10进一b.表示十进制:0、1、2、3、4、5、6、7、8、9c.格式控制符:%d3.十六进制a.逢16进一b.表示十六进制:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、Fc.格式控制符:%xd.赋值:以0x作为开头,例如:int a=0x10格式控制符1.%md:空格补位,一共占m位,若m<变量长度,不加空格,正常输出2.%m.nf:一共占m位,小数点占n位第二章 选择结构第一课 if语句if语句的一般格式:if(逻辑条件)满足条件时,执行的语句else不满足条件时,执行的语句省略形式:if(逻辑条件)执行语句第二课 关系运算符

9、6中关系运算符1.>:大于2.<:小于3.=:等于4.>=:大于等于5.<=:小于等于6.!=:不等于关系表达式:计算结果为真或假C语言中,0表示假,非0表示真判断奇偶偶数:能被2整除奇数:不能被2整数第三课 语句的概念表达式语句表达式;函数调用语句函数名(参数);复合语句语句1;语句2;语句3;.控制语句.if语句通用写法:if(逻辑条件)语句1else语句2其中,语句可以为表达式语句、函数调用语句、复合语句、控制语句和空语句.switch语句.for语句.while语句.do语句.break语句.continue语句.return语句.goto语句5.空语句不执行任

10、何内容;第四课 逻辑运算符逻辑非(!)!真 假!假 真逻辑与(&&)真 && 真 真真 && 假 假假 && 真 假假 && 假 假逻辑或(|)真 | 真 真真 | 假 真假 | 真 真假 | 假 假第五课 嵌套的if语句嵌套的if语句格式if(逻辑表达式1)

11、语句1else if(逻辑表达式2)语句2else if(逻辑表达式3)语句3.else语句nelse匹配:遵循就近原则else与离自己最近的未匹配if匹配第六课 switch语句switch语句一般格式switch(表达式)  case 情况1:语句1break;  case 情况2:语句2break;.  case 情况n:语句nbreak;  default:默认语句break;其中,break是跳出switch语句,default不一定放在最后注意:swit

12、ch不能检查实数,case后面也不能判断实数第七课 条件运算符格式表达式1?表达式2:表达式3用法1if(表达式1)表达式2;else表达式3;用法2if(表达式1)表达式=表达式2;else表达式=表达式3;嵌套格式表达式1?表达式2:(表达式3?表达式4:表达式5)单目运算符:只对一个表达式进行运算双目运算符:对两个表达式进行运算三目运算符:对三个表达式进行运算第八课 注释按用途可分为1.序言性注释2.功能性注释格式/*注释内容*/第九课 a+和+a自增a+:后缀表达式+a:前缀表达式执行过程中:a+=a,+a=a+1第十课 逻辑短路逻辑短路1.逻辑或:只要前面逻辑表达式为真了,整个式子结

13、果就为真,后面的就不需要执行了2.逻辑与:只要前面逻辑表达式为假了,整个式子结果就为假,后面的就不需要执行了第三章 循环结构第一课 for循环for循环一般格式for(初始化表达式;判定条件;自增表达式)循环体第三课 质数质数(素数)质数(素数):只能分解成1和自己判断质数的方法:排除法求平方根:sqrt()第四课 while循环和do循环while循环格式while(判断条件)   循环体 do循环格式 do   循环体 while(判定条件);第五课 break和continueBreakbreak:结束整个循环Cont

14、inuecontinue:结束本次循环,进入下次循环控制语句1.选择结构a.if()elseb.switch()2.循环结构a.for()b.while()c.dowhile3.流程控制a.break;b.continue;c.goto;第六课 随机数随机数知识点1.生成随机数:rand()2.伪随机数:数字虽然随机,但每次生成结果都相同3.与时间有关的头文件:time.h4.控制随机数范围:rand()%100:任何整数%100,范围都是0-99100+rand()%100:范围是100-199第七课 水仙花数判断规则1.是一个三位数(100-999)2.设百位a,十位b,个位c,则a3+b

15、3+c=abc第四章 函数第一课 函数函数的一般格式函数类型 函数名(参数)函数体return 函数返回值;其中:1.参数可以省略2.return;返回函数调用位置除void类型外,所有函数都应有返回值返回值类型:应与函数类型一致函数类型intfloatdouble.void(空类型)函数的调用格式:函数名();函数声明:类型 函数名(参数);全局变量:作用范围为整个源文件局部变量:作用范围为函数f内部第二课 标识符标识符包括关键字和自定义标识符自定义标识符三大规则1.由字母、数字、下划线组成2.只能以字母、下划线开头3.不能与关键字重复第三课 形参和实参本课知识

16、点形参:函数定义时的参数实参:函数调用时的参数第十四课 递归函数递归函数自己调用自己经典递归1.阶乘终止条件:n=1递推公式:f(n)=n*f(n-1)2.斐波那契数列终止条件:n=1或n=2递推公式:f(n)=f(n-1)+f(n-2)第十七课 主函数的几种形式主函数的几种形式1.int main(void)函数体return 0;2.int main(int argc,char *argv)函数体return 0;3.main()函数体return 0:成功return 1:错误1return 2:错

17、误2.exit():成功exit(0):成功,直接结束程序exit(1):错误1exit(2):错误2.第十八课 宏宏有两种1.不带参数的宏#define 宏的名称2.带参数的宏注意:宏定义的后面是没有分号的C语言中3种常量1.普通常量2.符号常量:不带参数的宏3.const常量:使用方法类似变量第五章 数组第一课 数组的定义本课知识点1.数组定义int 数组名数组大小;int an,则最大的角标为n-12.可以根据初始化确定数组大小3.初始化数量不能大于数组大小4.使用宏来定义数组大小#define N 10int aN;5.不可以

18、使用变量定义数组第二课数组和函数本课知识点1.数组可以作为函数的参数2.函数中的数组参数可以省略大小void f(int x,int n)函数体第十一课 质数质数的两种算法不用数组的质数算法:1.若n不是质数,则必然存在一个不大于n的因数2.只要找到一个因数,则n就必然不是质数,退出循环用数组求质数的算法:筛法第十二课 冒泡排序排序原理1.最大的元素放在右边2.每次比上次至少循环一次3.最坏次数:(n-1)*n/2第十四课 二分查找查找算法1.顺序查找从前往后,按顺序依次查找2.二分查找(折半查找)前提:数组必须按序排好中位数:Mid=(Left+Right)2,

19、对于奇数、偶数都适应其中Left表示数组下界,Right表示数组上界第二十课 杨辉三角本课知识点1.规则1:最左列和斜边,均为12.规则2:当前数字=上方数字+左上数字生成杨辉三角的步骤:1.二维数组全部初始化为02.第一列全部初始化为13.从a(2,2)开始进行计算4.从a(1,1)开始输出第六章 字符串第一课 字符类型本课知识点1.字符类型只接受单个字符的赋值2.字符类型定义char c;c='w'3.字符类型格式控制符:%c4.输入字符:getchar()输出字符:putchar()5.字符运算:就是对它的ASCII码进行运算第二课 字符数组常见转义符1.

20、9;n':换行符2.'t':缩进3.''':单引号4.'':反斜杠5.'"':双引号6.'0':字符串结尾数字转义1.八进制ASCII码2.x十六进制ASCII码第三课 字符串本课知识点1.以'0'结尾的一串字符2.其本质仍然是字符数组3.字符串格式控制符:%s4.输入字符串:gets()5.输出字符串:puts(),结尾换行6.库函数:String.h第十五课 字符串函数本课知识点1.strlen():计算字符串长度,第一个'0'前有几个字符sizeof(

21、):计算数组占几字节2.strcpy(目标数组,原字符串):复制字符串3.strcmp():比较字符串大小0:两个字符串完全相等1:字符串1>字符串2-1:字符串1<字符串24.strcat():连接字符串第七章 指针第一课 指针变量本课知识点1.定义:使用*说明符进行定义int *p; int* p;float *p; float* p2.赋值:指针变量,用于存储变量地址只有指针变量指向一个变量时才可以为指针变量赋值第二课 指针和函数指针和函数1.按值传递:实参的值不受形参影响2.按地址传递:实参的值可以受到形参影响3.

22、scanf():变量以地址传递4.函数地址:每一个函数也都有内存地址5.函数指针:int *p();声明一个函数,返回值类型为int*int (*p)();定义一个指针,用于指向一个函数第五课 指针和数组本课知识点1.p=a和p=&a0等价2.int f(int x)所有数组形式的形参 int x实质上都是指针类型 int *x3.xi和*(x+i)等价&xi和x+i等价4.int a10;a+;错误,数组不能改变其他地址第九课 指针和字符串本课知识点1.字符串的本质是一个字符数组2.字符

23、指针:可以指向字符串的指针3.字符数组和字符指针对比:字符数组不能修改其内存地址,可以修改其元素的值字符指针不能修改其元素的值,可以修改其内存地址第十六课 指针和二维数组本课知识点1.二维数组,每一个元素相当于一个变量int a23;a0->&a00a1->&a102.二维数组指针的定义int (*p)():指向函数的指针int (*p)3:指向列数为3的二维数组的指针3.两种形式数组形式:int a6,*p=a;p0->*pp1->*(p+1)p2->*(p+2).pi->*(p+i)pij->

24、(*(p+i)j指针形式:pij->*(*(p+i)+j)p00->*(*(p+0)+0)->*pp01->*(*(p+0)+1)->*(*p+1)p10->*(*(p+1)+0)->*(p+1)p11->*(*(p+1)+1)4.对应赋值:层次不同的指针不能相互赋值第八章 线性列表和其他第一课 结构体和共用体结构体1.定义struct 结构体类型名成员属性;/以分号结束2.定义变量struct 结构体类型名 变量名struct 结构体类型名成员属性变量名;3.赋值变量名.属性名4.初始化(定义时)stru

25、ct 结构体类型名 变量名=依次初始化各成员5.定义类型别名typedef 原类型名 新类型名共用体union 共用体类型名成员属性变量名;第二课 结构体和指针结构体指针基本用法main()Rect x=3,5,*p;    p=&x;printf("%dn",p->width);/p所指向的结构体的属性优先级:+p->x等价于+(p->x)第五课 malloc函数本课知识点1.malloc函数所在的头文件:<stdlib.h>2.mal

26、loc函数使用格式:malloc(空间大小)3.malloc函数返回值类型:void *4.malloc申请的空间并不会自动消失5.释放空间:free(p);第六课 线性链表定义#include <stdio.h>#include <stdlib.h>struct Nodeint data;struct Node *next;main()struct Node *header=NULL;创建struct Node *create(int n)struc

27、t Node *p;p=(struct Node*)malloc(sizeof(struct Node);p->data=n;p->next=null;return p;输出void output(struct Node *p)while(p) printf("%dn",p->data); p=p->next;修改void modify(struct Node *p,int n,int k)int

28、60;i;for(i=0;i<n;i+) p->next;p->data=k;插入void insert(struct Node *p,int n,int k)struct Node *pNew;int i;for(i=0;i<n-1;i+)p=p->next;pNew=(struct Node*)malloc(sizeof(struct Node);pNew->data=k;pNew->next=p->next;p->next=p

29、New;删除void del(struct Node *p,int n)struct Node *pDel;int i;for(i=0;i<n-1;i+)p=p->next;pDel=p->next;p->next=pDel->next;free(pDel);第十课 文件的打开和关闭定义文件指针FILE *fp打开文件fp=fopen("文件名","打开方式")12种打开方式文本文件:r:只读w:新建写入a:追加r+:读写w+:新建读写a+:读写二进制文件:rb:只读wb:新建写入ab:追加rb+:读写w

温馨提示

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

评论

0/150

提交评论