c语言知识点总结代码

2024-10-02

c语言知识点总结代码(精选7篇)

1.c语言知识点总结代码 篇一

C语言 程序代码编写规范

(初级程序员 讨论版)

前言

一个好的程序编写规范是编写高质量程序的保证。清晰、规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性。

说明

此文挡还在完善改进中,如有不足,欢迎指正。本文档主要适用于刚刚开始接触编程的初学者。

对于具有一定工程项目开发经验的程序员,建议学习C语言程序代码编写规范—高级版。

目录 代码书写规范 2 注释书写规范 3 命名规范内容代码书写规范

1.1函数定义

每个函数的定义和说明应该从第1列开始书写。函数名(包括参数表)和函数体的花括号(“{”和“}”)应该各占一行。在函数体结尾的括号(“}”)后面应该加上注释,注释中应该包括函数名,这样比较方便进行括号配对检查,也可以清晰地看出来函数是否结束。

范例1:函数的声明

void matMyFunction(int n){ …… } /* matMyFunction*/ 1.2空格的使用

使用空格分割所有演算符号和操作数。

这条规则的例外是“->”,““.”, “()”和“[]”,这些操作符和操作数之间不空格。当需要把一个程序行的内容分成几行写时,操作符号应该放在行末,而不是下一行的开头。

1.3缩进的设置

代码书写应该遵从结构化的要求,采用缩进的格式。最小缩进量为4个空格,整个文件内部应该统一,不要混用Tab键和4个空格这两种情况,因为不同的编辑器对Tab键的处理方法不同。

1.4折行的使用

每行的长度不要超过80个字符,当程序行太长时,应该分行书写。分行时应该按照自然的逻辑关系进行,例如:不要把一个简单的逻辑判断写在两行上。

分行后的缩进应该按照程序的逻辑关系进行对齐。例如:参数表折行后,下面的行应该在参数表左括号的下方。

范例2:折行的格式dwNewShape = matAffineTransform(coords, translation,rotation);

if(((new_shape.x > left_border)&&

(new_shape.x < right_border))&&

((new_shape.y > bottom_border)&&

(new_shape.y < top_border))){

draw(new_shape);}

1.5嵌套语句(语句块)的格式

对于嵌套式的语句--即语句块(如,if、while、switch等)应该包括在花括号中。花括号的左括号应该单独占一行,并与关键字对齐。建议即使语句块中只有一条语句,也应该使用花括号包括,这样可以使程序结构更清晰,也可以避免出错。建议对比较长的块,在末尾的花括号后加上注释以表明该语言块结束。

范例3:嵌套语句格式 if(value < max){

if(value!= 0)

{

func(value);

} } } else {

error(“The value is too big.”);} /* if(value < max)*/ 注释书写规范

注释必须做到清晰,准确地描述内容。对于程序中复杂的部分必须有注释加以说明。注释量要适中,过多或过少都易导致阅读困难。

2.1注释风格

语言中使用一组(/* … */)作为注释界定符。注释内容尽量用英语方式表述。

注释的基本样式参考范例4。

注释应该出现在要说明的内容之前,而不应该出现在其后。

除了说明变量的用途和语言块末尾使用的注释,尽量不使用行末的注释方式。

范例4:几种注释样式

/*

* ************************************************* 强调注释

* ************************************************ */ /* * 块注释 */

/* 单行注释 */

int i;/*行末注释*/ 2.2何时需要注释

如果变量的名字不能完全说明其用途,应该使用注释加以说明。

如果为了提高性能而使某些代码变得难懂,应该使用注释加以说明。对于一个比较长的程序段落,应该加注释予以说明。如果设计文档中有流程图,则程序中对应的位置应该加注释予以说明。

如果程序中使用了某个复杂的算法,建议注明其出处。

如果在调试中发现某段落容易出现错误,应该注明。命名规范

3.1常量、变量命名

用#define定义的符号常量全部采用大写。

变量命名的基本原则:

可以选择有意义的英文(小写字母)组成变量名,使人看到该变量就能大致清 楚其含义。

不要使用人名、地名和汉语拼音。

如果使用缩写,应该使用那些约定俗成的,而不是自己编造的。

多个单词组成的变量名,每个单词的首字母应该大写。如:dwUserInputValue。

3.2函数命名

函数命名原则与变量命名原则基本相同。对于初学者,函数命名可以采用 “FunctionName”的形式。

2.c语言知识点总结代码 篇二

数据排序是计算机编程过程中经常会遇到的一个问题,同样C语言中关于排序问题的算法也有多种。本文主要对一些常见的排序算法进行一个归纳总结,方便初学者对这一问题有一个全面的了解。

所谓数据排序,就是将一组无序的数据,按照其中的某个关键字的大小,递增或递减的排列成有序的数据序列。在C语言的学习过程当中,经常会碰到关于整数、浮点数、字符以及字符串的排序问题。一般的排序方法有:冒泡排序、选择排序、插入排序、shel(希尔)排序、快速排序、堆排序等。下面就通过具体的例子,对这些排序方法的基本思想、执行过程、算法代码进行一个总结分析。

2 各种排序算法的分析

2.1 冒泡排序

冒泡排序法是C语言当中最为常见和通用的一种排序方法。

2.1.1 基本思想

在待排序的一组数中,相邻的两个数两两比较后发现它们的顺序与排序要求相反时,就将它们互换(即:如果从小到大排序,则两两比较时,让较大的数往下沉,较小数往上冒)。如此下去,直至最终完成排序。冒泡排序过程中,如果对N个数进行排序的话,需要进行比较的轮数是N-1轮,每轮进行N-1-i次。由于在排序过程中,它的工作看起来像冒泡,所以称作冒泡排序。

2.1.2 算法代码

例:对数组aa[5]={8,5,10,7,3}的元素从小到大进行排序。

该例子用冒泡法实现的代码段如下:

2.1.3 执行过程

第一轮:8,5,10,7,3->5,8,10,7,3->5,8,7,10,3->5,8,7,3,10(交换3次)

第二轮:5,8,7,3,10->5,7,8,3,10->5,7,3,8,10(交换2次)

第三轮:5,7,3,8,10->5,3,7,8,10(交换1次)

第四轮:5,3,7,8,10->3,5,7,8,10(交换1次)

2.1.4 分析

在程序执行过程中,关系到算法性能的主要因素是循环和交换的次数,次数越多,性能越差。

对上面这个例子中包含5个元素的数组采用冒泡法进行排序,总共进行交换的次数是3+2+1+1=7次。冒泡法的特点是原理简单,但其缺点是交换次数多、效率低。

2.2 选择排序

2.2.1 基本思想

在待排序的一组数中,每轮将首数与后数进行两两比较,按大小进行交换,选出待排序数组中最小(或最大)的一个元素,放在已经排好序的数列的最后。如此下去,直至最终完成排序。冒泡排序过程中,如果对N个数进行排序的话,需要进行比较的轮数是N-1次,每轮从i+1开始到N-1为止。

2.2.2 算法代码

同上例:对数组aa[5]={8,5,10,7,3}的元素从小到大进行排序。

2.2.3 执行过程

第一轮:8,5,10,7,3->3,5,10,7,8(交换1次)

第二轮:3,5,10,7,8(交换0次)

第三轮:3,5,10,7,8->3,5,7,10,8(交换1次)

第四轮:3,5,7,10,8->3,5,7,8,10(交换1次)

2.2.4 分析

对上面这个例子中包含5个元素的数组采用冒泡法进行排序,总共进行交换的次数是1+0+1+1=3次。选择法的循环过程与冒泡法一致,它定义了作为记号的变量k赋初值为i,依次把a[k]同后面元素比较,若有元素比a[k]小,则将该元素下标赋值给k,使得变量k当中存放的永远是最小元素的下标。最后再a[k]与a[i]交换,这样就比冒泡法省下许多无用的交换,提高了效率。

2.3 直接插入排序

2.3.1 基本思想

在待排序的一组数中,先比较前两个数,按大小顺序排列好,然后每次从后面的无序数中取出第一个元素,把它插入到前面有序数的合适位置,使有序数组仍然有序,把数组元素插完也就完成了排序。

2.3.2 算法代码

同上例:对数组aa[5]={8,5,10,7,3}的元素从小到大进行排序。

2.3.3 执行过程

第一轮:8,5,10,7,3->5,8,10,7,3(交换1次)

第二轮:5,8,10,7,3(交换0次)

第三轮:5,8,10,7,3->5,7,8,10,3(交换1次)

第四轮:5,7,8,10,3->3,5,7,8,10(交换1次)

2.3.4 分析

对上面这个例子中包含5个元素的数组采用冒泡法进行排序,总共进行交换的次数是1+0+1+1=3次。直接插入排序的特点是算法简单、容易实现。它是采用逐步增加有序元素想法,直至所有元素排列完成。如果待排序数组元素不是特别多的时候,该算法的效率快是较佳的排序方法。但对于大数组,这种算法比较慢就不大适用了。

2.4 shell排序

2.4.1 基本思想

希尔算法的本质是缩小增量排序,是对直接插入排序算法的改进。先取一个小于N的整数p作为第一个增量,将待排序的一组数按增量p分割成多个组,对每个组分别进行一趟直接插入排序。然后缩小增量p的值(一般取其一半)再排序,直到p=1时完成排序。

2.4.2 算法代码

同上例:对数组aa[5]={8,5,10,7,3}的元素从小到大进行排序。

2.4.3 执行过程

第一轮:8,5,10,7,3->8,5,3,7,10(交换1次)

第二轮:8,5,3,7,10->3,5,8,7,10(交换1次)

第三轮:3,5,8,7,10->3,5,7,8,10(交换1次)

2.4.4 分析

对上面这个例子中包含5个元素的数组采用冒泡法进行排序,总共进行交换的次数是1+1+1=3次。Shell排序的优点是不管待排序数组长度多长,在分组增量p的切割下每个子组的规模都不会太大,然后用直接插入排序效率较高。后来增量p的逐渐递减,分组数逐渐减少,而各组的记录数目逐渐增多,但由于排过序,整个数组的有序性越来越清晰,所以排序的效率依然较高。所以,希尔排序在效率上比直接插人排序有很大的改进。

2.4.5 快速排序

2.4.5. 1 基本思想

在待排序的一组数中,先选择其中一个元素作为分隔点(一般选取数组中间的那个元素),然后把比该元素小的数据放在左边,大的放在右边。再按此方法对两边的数据分别再快速排序(也就是递归调用),直到整个数组有序为止。

2.4.5. 2 算法代码

同上例:对数组aa[5]={8,5,10,7,3}的元素从小到大进行排序。

2.4.5. 3 执行过程

第一轮:8,5,10,7,3->8,5,3,7,10(交换1次)

第二轮:8,5,3,7,10->3,5,8,7,10(交换1次)

第三轮:3,5,8,7,10->3,5,7,8,10(交换1次)

2.4.5. 4 分析

对上面这个例子中包含5个元素的数组采用冒泡法进行排序,总共进行交换的次数是1+1+1=3次。快速排序是对冒泡排序的一种本质改进,其优点是运算速度快,数据移动少。缺点是算法稍复杂。快速排序法中关键是对三个参数的设定,即待排序数组元素的起始下标、最后一个元素下标以及分隔元素下标的确定。

3 总结

除了上述分析的五种常见的排序方法外,还有堆排序、归并排序等。在选择排序算法的时候,要根据待排元素数目N的大小以及元素本身的初始状态来做最佳的抉择。如果N数较小,则可采取直接插入排序或选择排序;若数组本身初始状态局部或整体有序时,则可采取冒泡排序或插入排序;若N数较大,则可采取快速排序、堆排序或归并排序。

参考文献

[1]谭浩强.C程序设计[M].3版.北京:清华大学出版社,2005.

[2]谭浩强,张基温,唐永炎.C程序设计教程[M].北京:高等教育出版社,1992.

3.c语言知识点总结代码 篇三

1955年,卡普耶卡(D.R.Kaprekar)研究了对四位数的一种变换:任给出四位数k0,用它的四个数字由大到小重新排列成一个四位数m,再减去它的反序数rev(m),得出数k1=m-rev(m),然后,继续对k1重复上述变换,得数k2.如此进行下去,卡普耶卡发现,无论k0是多大的四位数,只要四个数字不全相同,最多进行7次上述变换,就会出现四位数6174.#include

main()

{

int s,a, b, c, d;

int t=0,x;

int m,n;

printf(“请输入一个四位每位不全相同的数:”);

scanf(“%d”, &s);

a=s/1000;

b=s%1000/100;

c=s%100/10;

d=s%10;

for(x=0;;x++){

if(x==0){

if(a==b&&a==c&&a==d&&b==c&&b==d&&c==d){

printf(“输入的四位不合法!n”);break;

}

}

a=s/1000;b=s%1000/100;c=s%100/10;d=s%10;

if(a

if(b

if(c

if(a

if(b

if(a

m=a*1000+b*100+c*10+d;

n=a+b*10+c*100+d*1000;

if(m-n==6174){

printf(“s=%d-%d=%dn”, m, n, m-n);

printf(“结束!n”);break;

}else{

s=m-n;

printf(“s=%d-%d=%dn”, m, n, s);

4.c语言知识点总结代码 篇四

设计购物卡管理系统,系统主要模块:(1 实现系统内制卡、发卡功能;(2 实现系统内账户及相关账户管理;(3 实现卡交易和合法性检查;(4 实现卡交易积分功能;(5 实现卡报表功能;(6 数据以文件形式存储。【提示】

制卡:指申请一张购物卡,但还没有使用。发卡:该购物卡已经启用。

实现卡交易:指从卡中消费掉一定的金额。

一、系统需求分析

根据题目要求, 由于数据要以文件形式存储, 所以应提供文件的输入、输出等操作;在程序中要实现银行卡的各项功能,应提供制卡、发卡、存 款、消费、查询账户相关信息、查询账户交易记录、查询全部信息、退出 程序等一系列操作;另外还应提供键盘式选择菜单实现功能选择。

二、系统总体设计

分析了整个系统之后,根据上面的系统需求分析,可以将这个系统的 设计分为如下七大模块:制卡、发卡、存款、消费、查询账户相关信息、查询账户交易记录、查询全部信息。

三、系统详细设计 1.主函数设计

主函数的设计比较简介,只包括一个菜单函数,主要实现菜单功能, 提供了菜单输入、模块选择、退出系统等模块的调用。其中各功能模块用 菜单方式选择。

【流程图】 1 N 2 【小结】

函数开头有“文件包含”的预处理命令,所谓“文件包含”处理是指 一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件 包含到本文件之中。C 语言提供了 #include命令用来实现“文件包含”的 操作。

在本程序中包含了一下头文件:“string.h”、“ctype.h”、“stdio.h” ,方便 调用库函数实现某些功能。

在程序设计中,只使用一些基本类型(或称简单类型的变量(如整 型、实型、字符型变量等和构造类型数据——数组,是远远不够的。有 时候需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组 合在一个整体中的数据是相互联系的。

在这个程序中,定义了一个结构体数组来存放购物卡用户的各种信 息,包括账户卡号、户主姓名、账户余额、账户状态、账户积分,结构体 如下:

struct user { int num;/*账户号码 */ char name[20];/*户主名称 */ float surplus;/*账户余额 */ char state[2];/*账户状态, y :已启用, n :未启用 */ int point;/*账户积分 */ }u[100];同时在各分函数中,定义了 int、float、char 等一系列变量类型,用来 实现函数功能。

在主函数前面,要加上对各功能函数的声明,声明的作用是把函数的 4 名字、函数的类型以及形参的类型、个数和顺序通知编译系统,以便在调 用该函数时系统按此进行对照检查,例如函数名是否正确,实参与形参的 类型和个数是否一致等。

主函数比较简单,但是函数的调用很多,所以,在程序的开头就加上 了各函数的声明,如下: void c_c(;/*制卡函数模块 */ void s_u(;/*发卡函数模块 */ void in_m(;/*存款函数模块 */

void out_m(;/*取款函数模块 */ void c_i(;/*查询账户相关信息函数模块 */ void c_r(;/*查询账户交易记录函数模块 */ void check(;/*查询全部信息函数模块 */ void menu(;/*主菜单函数模块 */ void back(;/*返回函数模块 */ void check_b(;/*给用户提示已有信息 */ 实现菜单选择功能,使用的是 switch 语句,根据用户输入的菜单选项 a ,调用不同的函数实现各种功能: switch(a { case 1:c_c(;break;/*制卡模块 */ case 2:s_u(;break;/*发卡模块 */ case 3:in_m(;break;/*存款模块 */ case 4:out_m(;break;/*取款模块 */ case 5:c_i(;break;/*查询账户相关信息模块 */ case 6:c_r(;break;/*查询交易记录模块 */ case 7:check(;break;/*查看所有信息模块 */ case 8:exit(0;break;/*退出模块 */ } 2.各功能模块设计

2.1 制卡模块 【流程图】

2.2 发卡模块 【流程图】

N

2.3 存款模块 【流程图】

2.4 消费模块

【流程图】 11 12

2.5 查询账户相关信息模块

【流程图】 13 N 14

5.C语言心得与基础知识 篇五

float,double都不能保证可以存储一个小数、近似值 1.213e+2 例题:如何判断浮点型变量 X 的值是否是零

if(|x-0.000001|<=0.000001)shi;else no;

为什么循环更新的变量不能定义成浮点型?

心得:试数,数学归纳法,五次在纸上

2.自增[自减]

3.例子:回文数

12112321123

43214.什么时候使用while,什么时候使用for,多尝试!do...while 主要用于人机交互。

do{....} while(表达式);while 与 for 是等价的,可以相互转换; 数组为n个变量连续分配内存空间

所有的变量数据类型必须一样所有变量所占的字节大小必须相等

例子:

int [3];

初始化: 完全初始化

不完全初始化不初始化,所有元素是垃圾值

清零 int [3] = {0};一位数组名不代表数组中所有的元素,代表地址

是否存在多维数组,不存在因为内存是线性一维的,N维数组可以作为每个元素是N-1维数组的一维数组

6.游戏

分感官效果和内核设计两部分.感官效果,涉及图形技术图像技术、音频技术等等多媒体编程.内核设计,要做一个合理的游戏,必须在明确游戏思路和算法的前提下,精确定义玩家可以从事什么行为,不能从事的行为要怎么样标记,异常的操作又要怎么处理。7.函数定义的本质:详细描述之所以能够实现某个特定功能的具体方法

return表达式的含义:终止被调函数,向主函数返回表达式的值。如果表达式为空,则只终止函数不向主调函数返回值

函数返回值的类型也称为函数的类型,如果函数名前面的返回值类型和函数执行体 中的return,表达式中的类型不同的话,最终函数返回的类型一函数名的类型相同。函数分为有参函数和无参函数。库函数,自定义函数。有返回值,无返回值函数 普通函数和主函数,一个程序只能有且只有一个主函数。主函数可以调用普通函数。普通 函数可以相互调用。主函数是程序的入口,也是程序的出口。

{值传递 和地址传递函数}

8.指针

int * p;P是变量名,p变量的数据类型是int * 类型,而int *类型实际就是存放int 类型变量地址的 类型。*p代表的是以p的内容为地址的变量

指针就是地址,地址就是指针,地址就是内存单元的编号(门牌号),指针只是编号。指针变量是存放地址的变量。指针和指针变量是两个不同的概念。但是要注意,通常我们叙述时会把指针变量简称指针。

指针的重要性:表示一些复杂的数据结构,如链表,树,图等模拟现实的显示;快速的传递数据。使函数返回一个以上的值(普通函数返回一个值,return)。直接访问硬件。能够方便的处理字符串。是理解面向对象语言中的基础。。。指针是C语言的灵魂。

指针的分类:基本类型的指针;指针和数组;指针和函数;指针和结构体;

指针的定义:

地址:地址就是内存单元的编号(门牌号),地址是从零开始的非负整数。

范围:CPU(内存的速度快于硬盘)直接处理内存条里的数据。。CPU如何控制内存条,先把内存条的数据读入CPU里,CPU内部进行处理,把结果写回内存条,但内存条数据达到一定程度,会一次性写到硬盘。(控制线,地址线,数据线)。通过地址线能确定CPU对内存条的哪个单元进行控制。范围:【0--4G-1】

指针:指针变量就是存放内存单元编号的变量

指针的本质上就是一个操作受限的非负整数。(不能进行相加等运算,可以进行相减,连续空间的不同单元)。

基本类型的指针:

指针和数组:包括一维、二维数组。

一维数组名是一个指针常量,存放的是一维数组第一个元素的地址。

如果一个函数要处理一个一维数组,则需要接收该数组的哪些信息?界定一个一维数组要几个参数:

sizeof 的返回值就是给数据类型所占的字节数

一个指针变量无论他指向的变量占几个字节,该指针变量本身只占四个字节。

动态内存分配的问题:

数组的优点:存取速度快

传统数组的缺点:

数组的长度必须事先指定,不能是变量

例如:int a[5];int len = 7;int a[len];//错误

传统形式定义的数组,该数组的内存程序无法手动编程释放,只能在函数运行完毕后由系统自动释放。数字一旦定义,系统为该数组分配的存储空间就会一直在。。在一个函数运行期间,系统为该函数中所分配的空间会一直存在,直到函数运行完毕后由系统自动释放。

数组的长度不能在函数的运行过程中动态的扩充或缩小。数组的长度 一旦定义,其长

度就不能在改变。

A函数定义的数组在A函数运行期间可以被其他函数调用,当A运行完毕后,A函数中的数组将无法在其他函数使用。(A内的内存空间被释放啦)传统方式定义的数组不能跨函数使用。

为什么需要动态分配内存:

因为能解决传统数组的缺陷。传统数组也叫静态数组。

动态内存分配举例: int *p =(int *)malloc(4);//12行

/*1.要使用malloc函数,必须添加malloc.h这个头文件 2.malloc 函数只有一个形参,并且是整数 3.malloc(4)的4表示请求系统为本程序分配四个字节 4.malloc函数只能返回第一个字节的地址。5.地址,内存单元的编号。12行分配了8个字节,p变量占四个,p指向的内存也占四个字节

*/ 6.p本身所占的内存是静态分配的,p所指向的内存是动态分配的。

free(p);//把p指向的内存释放,p本身不能释放,而只有main函数终止由系统释放。静态内存与动态内存的比较:静态内存是由系统自动分配,由系统自动释放,静态是在栈分配的动态内存是由程序员手动分配,手动释放动态内存是在堆分配的。

跨函数使用内存的问题:

枚举:如果一个变量只有几种可能的值。。指将变的值一一列举出来。变量的值只限于列举出来的值的范围内。enum 枚举值称为枚举元素或者枚举常量。值 0,1,2,3.。。

算法:

通俗的定义:

解题的方法和步骤

狭义的定义:

对存储数据的操作 对不同的存储结构,要完成某一个功能所执行的操作不一样 例如:输出数组中所有的元素操作和要输出链表中所有的元素操作不一样...说明了算法依附于存储结构的,不同的存储结构所执行的算法不一样。

广义的定义:

广义的算法也叫泛型。无论数据如何存储的,对该数据的操作都是一样的。我们至少可以通过两种结构来存储数据,一个是数组,一个是链表。

链表:

头结点(其数据类型和首节点的类型是一摸一样的,头结点是首节点前面那个节点,头结点不存放有效数据,设置头结点的目的是方便对链表的操作),头指针(存放头结点地址的指针变量),首节点(存放第一个有效数据的节点),尾节点

头指针->头结点->首节点->.......->尾节点(null)

确定链表需要一个参数:头指针

优点:插入删除元素效率高,不需要一个连续的很大的内存。

NULL本质也是零,而零 不代表数字零,而代表的是内存单元的编号零。\以零为编号的存储单元不可读不可写

字符串是作为字符数组来处理的,字符串中的字符是逐个存放到数组元素中的,字符串的实际长度与数组的实际长度相等。字符串结束标志: ‘’例如:C Program 共有9个字符,但内存占10个字节,字符串作为一维数组存放在内存中。缺点:查找某个位置的元素效率低

1、C中内存分为四个区

栈:用来存放函数的形参和函数内的局部变量。由编译器分配空间,在函数执行完后由编译器自动释放。

堆:用来存放由动态分配函数(如malloc)分配的空间。是由程序员自己手动分配的,并且必须由程序员使用free释放。如果忘记用free释放,会导致所分配的空间一直占着不放,导致内存泄露。

全局局:用来存放全局变量和静态变量。存在于程序的整个运行期间,是由编译器分配和释放的。

文字常量区:例如char *c = “123456”;则”123456”为文字常量,存放于文字常量区。也由编译器控制分配和释放。

6.c语言笔记总结 篇六

font-weight 设置或检索对象中的文本字体的粗细。

text-decoration 检索或设置对象中的文本的装饰。

font-style 设置或检索对象中的字体样式。line-height 设置或检索行距。

text-transform 检索或设置对象中的文本的大小写。

background-color 设置或检索对象的背景颜色。

background-image 设置或检索对象的背景图像。

background-attachment : 设置或检索背景图像是随对象内容滚动还是固定的。

background-position: 设置或检索对象的背景图像位置。必须先指定 background-image 属性。

display: 设置或检索对象是否及如何显示

7.c语言总结 篇七

大家可以看出,指针、数组、字符串无论在笔试还是上机都是重中之重,既是重点又是难点。C语言程序初步、顺序结构、选择结构、循环结构、函数是基础。编译预处理、作用域与存储类、位运算、文件等是难点但不是重点,每年都会考到,但题量都不大。结构体与共用体可以说比较重点又是难点。公共基础部分除了程序设计基础这一部分,其他三部分旗鼓相当,都是重点。

第一章 C语言基本知识

【考点1】C程序

用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。

【考点2】main函数

又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。

【考点3】存储形式

计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。【考点4】注释

是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。【考点5】书写格式

每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。

【考点6】标识符

是标识名字的有效字符序列,可以理解为C程序中的单词。

标识符的命名规则是:

(1)标识符只能由字母、数字和下划线组成,字母区分大小写。

(2)标识符的第一个字符必须是字母或下划线,不能为数字。C语言标识符分如下3类

(1)关键字。它们在程序中有固定的含义,不能另作他用。

如:int、for、switch等。

(2)预定义标识符。预先定义并具有特定含义的标识符。

如:define、include等。

(3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。【考点7】常量与变量

常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。【考点8】整型数据

整型常量有十进制、八进制、十六进制三种表示形式,没有二进制形式。八进制整型常量加前导数字0,十六进制常量加前导0X,八进制常量中不会出现8。

整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned)。一个基本整型占4个字节。其它类型的整型占用字节数和取值范围详见教材第9页。【考点9】实型数据

实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。口诀:E前E后必有数,E前为实E后整数。

实型变量分为单精度型(float)和双精度型

(double),单精度型占四个字节。【考点10】算术运算

算术运算符一共有+、—、*、/、%这五个。求余运算要求运算对象只能为整型,除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。【考点11】强制类型转换

将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。【考点12】赋值

赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。

复合赋值运算符是将算术运算符或位运算符与赋值运算符组合在一起组成的运算符,掌握复合赋值表达式转化为赋值表达式的方法。如n+=100可转化为n=n+100。【考点13】自加自减运算

自加运算符“++”与自减运算符“--”是单目运算符,运算对象必须是变量。自增自减运算分前缀运算和后缀运算,它们所对应的表达式的值是有区别的,如j=i++;等价于j=i;i=i+1;而j=++i;等价于i=i+1;j=i。口诀:加加在前先加后用,加加在后先用后加。【考点14】逗号运算

逗号运算符运算优先级最低,可将多个表达式构成一个新的表达式。

第二章

顺序结构

【考点1】运算符、表达式、语句

运算对象加运算符构成表达式,表达式加分号构成表达式语句,运算对象可以是表达式、常量、变量。如赋值运算符加运算对象构成赋值表达式,赋值表达式加分号又可构成赋值语句。【考点2】运算符的优先级和结合顺序

运算符按参加运算的对象数目可分为单目运算符、双目运算符和三目运算符。初等运算符的优先级别最高,然后依次是单目运算符、算术运算符、关系运算符、逻辑运算符(除逻辑非!)、条件运算符、赋值运算符、逗号运算符。位运算符优先级介于算术运算符与逻辑运算符之间。结合顺序大多为自左向右,而自右向左的有三个:单目运算符、条件运算符和赋值运算符。

口决: 圆方括号、箭头一句号,自增自减非反负、针强地址长度,乘除,加减,再移位,小等大等、等等不等,八位与,七位异,六位或,五与,四或,三疑,二赋,一真逗。

其中“,”号为一个等级分段。【考点3】printf函数

格式为:printf(输出控制,输出列表)。输出控制是用一对双引号括起来的,包含格式说明和原样信息。输出列表包含若干输出项。【考点4】printf函数中格式说明

%d对应整型,%f对应单精度实型,%c对应字符型,%o对应八进制无符号整型,%x对应无符号十六进制整型,%u对应无符号整型,%e对应指数型,%s对应字符串型。可在%和格式字符之间加一个数来控制数据所占的宽度和小数位数。【考点5】scanf函数

输入项要求带取地址符&。当用键盘输入多个数据时,数据之间用分隔符。分隔符包括空格符、制表符和回车符,但不包括逗号。【考点】6如何交换两个变量

要使用中间变量,语句为:t=x;x=y;x=t;

第三章

选择结构

【考点1】关系运算

C语言用非0表示逻辑真,用0表示逻辑假。关系运算符有6个,分别是>,>=,<,<=,==,!=,前四种优先级高于后两种。关系表达式真时为1,假时为0。注意a

【考点2】逻辑运算

逻辑运算符共有3个:逻辑与(&&),逻辑或(||),逻辑非(!)。注意短路现象,例a++||b++,如果表达式a++的值非零,则表达式b++不再执行。【考点3】if语句

可以单独出现,也可以与else匹配出现。if语句可以嵌套,这时else总是与离它最近的且没有与else匹配的if匹配。【考点4】条件运算

是唯一的三目运算符,格式为:表达式1?表达式2:表达式3。表达式1值为非0时,整个表达式值为表达式2的值,表达式1值为0时,整个表达式值为表达式3的值。口诀:真前假后 【考点5】switch语句

格式及执行过程详见教材P43,要注意每条case后有没有break语句的区别。还要注意switch后小括号里面的表达式不能为实型,case后表达式不能有变量。口诀:switch表不为实,case表不为变。

第四章

循环结构

【考点1】三种循环结构

三种循环结构分别为:while,do-while,for,三种结构的格式及执行顺序详见教材第50、53、55页。注意for循环中的小括号中必须是两个分号;循环一定要有结束条件,否则成了死循环;do-while()循环最后的while();后一定要有分号。【考点2】break与continue

break是终止所在整个循环,而continue是提前结束本轮循环。break语句可出现在循环结构与switch语句中,continue只出现在循环结构中。【考点3】循环的嵌套

就是循环里面还有循环,计算要一层一层分析,一般只考查两层嵌套,循环嵌套通常是处理二维数组。

【考点4】循环结构的复习

循环结构是重点,笔试所占分值一般在13分左右,在上机考试中也是必考点,应用性很强。要求学员重点理解并多加练习,领会掌握。

第五章

字符型数据 位运算

【考点1】字符常量

一个字符常量用一对单引号括起来,字符常量只能包括一个字符,‟ab‟是非法的。空格常用‟□‟来表示。字符常量可用对应的ASCII码表示,需记住:‟0‟的ASCII码为48,‟A‟的ASCII码为65,‟a‟的ASCII码为97。

【考点2】转义字符

一对单引号中以一个反斜线后跟一个特定字符或八进制、十六进制数来构成转义字符。比如‟n‟表示换行,‟101‟或‟x41‟表示ASCII码为65的字符‟A‟。【考点3】字符型数据可以和整型数据相互转换

如:‟0‟-0=48 „A‟+32=‟a‟

char a=65;printf(“%d%c”,a,a);结果为65A 【考点4】位运算符

C语言提供6种位运算符:按位求反~,按位左移<<,按位右移>>,按位与&,按位异或|,按位或^。一般情况下需要先转化进制。异或运算的规则:0异或1得到1,0异或0得到0,1异或1得到0。可记为“相同为0,不同为1”。【考点5】putchar与getchar函数

可用于输出或输入单个字符,这两个函数是stdio.h文件中的库函数,它们是printf与scanf函数的简化。

第六章

函数

【考点1】函数的定义

函数是具有一定功能的一个程序块。函数的首部为:函数类型 函数名(类型1 形参1,类型2 形参2,……)。在函数定义中不可以再定义函数,即不能嵌套定义函数。函数类型默认为int型。【考点2】库函数

调用C语言标准库函数时要包含include命令,include命令行以#开头,后面是””或<>括起来的后缀为”.h”的头文件。以#开头的一行称为编译预处理命令行,编译预处理不是C语言语句,不加分号,不占运行时间。【考点3】函数的返回值

函数通过return语句返回一个值,返回的值类型与函数类型一样。return语句只执行一次,执行完或函数体结束后退出函数。【考点4】函数的声明

函数要“先定义后调用”,或“先声明再调用后定义”。函数的声明一定要有函数名、函数返回值类型、函数参数类型,但不一定要有形参的名称。【考点5】函数的调用

程序从上往下执行,当碰到函数名后,把值传给调用函数,当程序得到了返回值或调用函数结束,再顺序往下执行。【考点6】函数的参数及值传递

形式参数简称形参,是定义函数时函数名后面括号中的参数。实在参数简称实参,是调用函数时函数名后面括号中的参数。实参和形参分别占据不同的存储单元。实参向形参单向传递数值。“传值”与“传址”的区别:传数值的话,形参的变化不会改变实参的变化。传地址的话,形参的变化就有可能改变实参所对应的量。

【考点7】函数的递归调用

函数直接或间接地调用自己称为函数的递归调用。递归调用必须有一个明确的结束递归的条件。在做递归题时可把递归的步骤一步步写下来,不要弄颠倒了。【考点8】要求掌握的库函数

sqrt()算术平方根函数,fabs()绝对值函数,pow()幂函数,sin()正弦函数

第七章

指针

【考点1】指针变量

指针变量是用来存储地址的,而一般变量是存储数值的。指针变量可指向任意一种数据类型,但不管它指向的数据占用多少字节,一个指针变量占用四个字节。【考点2】指针变量的定义

格式为:类型名 *指针变量名。二维指针int **p;可以理解为基类型为(int *)类型。【考点3】指针变量的初始化

指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用,如果不指向任何数据就赋“空值”NULL。【考点4】指针变量的引用

&是取地址符,*是间接访问运算符,它们是互逆的两个运算符。在指针变量名前加间接访问运算符就等价它所指向的量。【考点5】指针的运算

*p++和(*p)++之间的差别:*p++是地址变化,(*p)++是指针变量所指的数据变化。一个指针变量加一个整数不是简单的数学相加,而是连续移动若干地址。当两个指针指向同一数组时,它们可以比较大小进行减法运算。

第八章

数组

【考点1】数组的定义

数组是一组具有相同类型的数据的集合,这些数据称为数组元素。格式为:类型名 数组名[常量表达式]。数组的所占字节数为元素个数与基类型所占字节数的乘积。【考点2】数组的初始化

第一维长度可以不写,其它维必须写。int a[]={1,2};合法,int a[][3]={2,3,4};合法,int a[2][]={2,3,4};非法。数组初始化元素值默认为0,没有初始化元素值为随机。如在int a[5]={0,1,2};中,元素a[4]值为0;而在int a[5];中,元素a[4]值为一个不确定的随机数。【考点3】元素的引用

数组元素的下标从0开始,到数组长度减1结束。所以int a[5];中数组最后一个元素是a[4]。要把数组元素看作一个整体,可以把a[4]当作一个整型变量。【考点4】二维数组

数组a[2][3]={1,2,3,4,5,6};中含6个元素,有2行3列。第一行为a[0]行,第2行为a[1]行,a[0]、a[1]叫行首地址,是地址常量。*(a[0]+1)是第一行第一个元素往后跳一列,即元素a[0][1]值为2,*(a[0]+3)是第一行第一个元素往后跳三个,即元素a[1][0]值为4。【考点5】行指针

是一个指针变量,占四个字节,行指针指向一行连续数据,形式为:int(*p)[2];,p只能存放含有两个整型元素的一维数组的首地址。注意(*p)两边的小括号不能省略,否则就成了指针数组,是若干指针元素的集合。【考点6】数组名

数组名是数组的首地址。数组名不能单独引用,不能通过一个数组名代表全部元素。数组名是地址常量,不能对数组名赋值,所以a++是错误的。但数组名可以作为地址与一个整数相加得到一个新地址。

【考点7】元素形式的转换

助记:“脱衣服法则”a[2]变成*(a+2),a[2][3]变成*(a+2)[3]再可变成*(*(a+2)+3)。

第九章

字符串 【考点1】字符串常量及表示

字符串常量是由双引号括起来的一串字符,如”ABC”。在存储字符串时,系统会自动在其尾部加上一个空值‟‟,空值也要占用一个字节,也就是字符串”ABC”需要占四个字节。【考点2】字符数组

C语言没有字符串变量,只能采用字符数组来存储字符串。数组的大小应该比它将要实际存放的最长字符串多一个元素,从而存放‟‟。【考点3】字符串赋值

可以用下面的形式进行赋值:char str[]=”Hello!”;或char *p;p=”Hello!”;,但不能用下面的形式:char str[10];str=”Hello”;因为str是一个地址常量,不能进行赋值操作。【考点4】字符串的输入与输出

可以用scanf和printf函数,如scanf(”%s”,str);,也可用专门处理字符串的两个函数gets和puts函数,还可以对字符数组逐个元素进行赋值,但一定要在最后赋一个‟‟。使用gets函数可以接收空格,使用puts函数在最后输出一个换行。【考点5】字符串函数

要掌握的四个字符串函数:字符串拷贝函数

strcpy(),求字符串长度函数strlen(),字符串链接函数strcat(),字符串比较函数strcmp()。使用这些函数需在预处理部分包含头文件”string.h”。字符串长度要小于字符数组的长度,例:char str[10]=”Hello”;sizeof(str)的值为10(数组长度),strlen(str)的值为5(字符串长度)。这些函数是考试常用到的函数,大家一定要熟练应用这几个函数。

第十章

结构体与共用体

【考点1】结构体类型的说明

结构体是若干个类型数据的集合,结构体类型说明格式如下:struct 类型名 {类型1 成员名1;类型2 成员名2;……};,以上整个部分是一个数据类型,与整型的int是同样地位。可用typedef把结构体类型替换成一个只有几个字母的简短标识符。【考点2】结构体变量的定义

结构体变量是用说明的结构体类型所定义的一个变量,与结构体类型不是一回事。一个结构体变量所占字节数为其所有成员所占字节数之和。如struct stu{char name[10];int age;} a,b;则表明定义了两个结构体变量a,b,每个变量占14个字节。a,b与int i,j;中的变量i,j是同样地位。【考点3】结构体成员的引用

引用成员可用以下3种方式:(1)结构体变量名.成员名;(2)指针变量名->成员名:(3)(*指针变量名).成员名。点(.)称为成员运算符,箭头(->)称为结构指向运算符。【考点4】链表

链表是由一个个结点构成的,一个结点就是一个结构体变量。每个结点可以分为数据域与指针域两个部分,数据域用来存放要存储的数据,指针域用来指向下一个结点。链表是考试中的难点,在C语言和公共基础部分都会考到,要领悟掌握。【考点5】共用体

共用体的使用格式与结构体相似,共用体定义的关键字为union,共用体所占字节数是所有成员中字节数最大的那个。

第十一章

文件

【考点1】文件类型指针

文件指针是一个指向结构体类型的指针,定义格式为:FILE *指针变量名。在使用文件时,都需要先定义文件指针。【考点2】文本文件与二进制文件

文本形式存放的是字符的ASCII码,二进制形式存放的是数据的二进制。例如“100”如果是文本形式就是存储‟1‟、‟0‟、‟0‟三个字符的ASCII码(00110001 00110000 00110000),如果是二进制形式就把100转化成二进制(01100100)。【考点3】打开文件

文件的打开形式如下:FILE *fp;fp=fopen(“c:lab.c”,”rb”)。fopen函数的前面一部分为文件名,后面一部分为文件的使用方式。打开方式详见教材第127页,其中r代表读,w代表写,a代表添加,b代表二进制位的。【考点4】文件函数

判断文件结束feof函数,移动文件指针位置fseek函数,获得文件位置ftell函数,文件位置移到开头rewind函数,文件字符输入输出fgetc函数和fputc函数,文件输入输出fscanf函数和fprintf函数,文件字符串输入输出fgets函数和fputs函数,读写二进制文件fread函数和fwrite函数。

以上函数要求知道格式会用,清楚是用于二进制文件还是文本文件,要把教材文件这章仔细复习下,不要在考试的时候把这些文件函数搞混了。

第十二章

深 入 讨 论

【考点1】编译预处理

凡以#开头的这一行,都是编译预处理命令行,编译预处理不加分号,不占运行时间。宏替换仅是简单的文本替换,如#define f(x)(x)*(x)和#define f(x)x*x替换f(2+2)时就有区别,前者展开为(2+2)*(2+2),后者为2+2*2+2。如果源文件f2.c中有#include”f1.c”可以理解为把源文件f1.c原样包含到f2.c中,使f1.c和f2.c融合到一起成为一个C程序编译。所以一个C程序必有主函数,但一个C源文件未必有主函数。

【考点2】标识符作用域

局部变量是在函数内或复合语句内定义的变量,作用域为定义它的函数内。局部变量有三种类型:自动auto,寄存器register和静态static。

自动变量随着函数的使用与否创建消失;寄存器变量分配在cpu中,没有内存地址;静态变量占用固定存储单元,在程序执行过程不释放,直到程序运行结束。

全局变量是在函数外定义的变量,作用域从定义它的位置到整个源文件结束为止,生存期为整个程序运行期间。全局变量都是静态变量。【考点3】动态存储分配

malloc(size)用来创建连续size个字节存储区,返回值类型为void *型。malloc函数常用于动态创建链表结点;如int *p;p=(int *)malloc(sizeof(int))。

calloc(n,size)创建n个同一类型的存储空间,可以理解为n个malloc。free(p)释放动态分配的存储单元。

一、基本数据结构与算法

1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。

2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。

3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。5.线性单链表、双向链表与循环链表的结构及其基本运算。

6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。

二、程序设计基础

1.程序设计方法与风格。2.结构化程序设计。

3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。

三、软件工程基础

1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。3.结构化设计方法,总体设计与详细设计。

4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。

5.程序的调试,静态调试与动态调试。

四、数据库设计基础

1.数据库的基本概念:数据库,数据库管理系统,数据库系统。2.数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型。

3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。4.数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略。

基 本 要 求

1.熟悉Visual C++6.0集成开发环境。

2.掌握结构化程序设计的方法,具有良好的程序设计风格。3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。

4.在Visual C++6.0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。

一、C语言的结构

1.程序的构成,main函数和其他函数。2.头文件,数据说明,函数的开始和结束标志。3.源程序的书写格式。4.C语言的风格。

二、数据类型及其运算

1.C的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。2.C运算符的种类、运算优先级和结合性。3.不同类型数据间的转换与运算。

4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。

三、基本语句

1.表达式语句,空语句,复合语句。

2.输入与输出函数的调用,正确输入数据并正确设计输出格式。

四、选择结构程序设计

1.用if语句实现选择结构。

2.用switch语句实现多分支选择结构。3.选择结构的嵌套。

五、循环结构程序设计

1.for循环结构。

2.while和do-while循环结构。3.continue语句和break语句。4.循环的嵌套。

六、数组的定义和引用

1.一维数组和二维数组的定义、初始化和数组元素的引用。2.字符串与字符数组。

七、函数

1.库函数的正确调用。2.函数的定义方法。3.函数的类型和返回值。

4.形式参数与实在参数,参数值的传递。5.函数的正确调用,嵌套调用,递归调用。6.局部变量和全局变量。

7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。

八、编译预处理

1.宏定义和调用(不带参数的宏,带参数的宏)。2.“文件包含”处理。

九、指针

1.地址与指针变量的概念,地址运算符与间址运算符。

2.一维、二维数组和字符串的以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。3.用指针作函数参数。4.返回地址值的函数。5.指针数组,指向指针的指针。

十、结构体(即“结构”)与共用体(即“联合”)

1.用typedef说明一个新类型。

2.结构体和共用体类型数据的定义和成员的引用。

3.通过结构体构成链表,单向链表的建立,结构点的输出、删除与插入。

十一、位运算

1.位运算符的含义及使用。2.简单的位运算。

十二、文件操作

上一篇:园林施工员培训作业(树种)下一篇:多媒体在初中语文教学中的利弊分析