ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:21.93KB ,
资源ID:3729688      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3729688.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言2 A4.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c语言2 A4.docx

1、c语言2 A4c语言特点:语言简洁、紧凑,使用方便、灵活。共有个关键字,种控制语句。运算符丰富,公有种运算符。数据结构丰富,数据类型有:整型、实型、字符型、数组、指针、结构体、共用体等。具有结构化的控制语句(如if else、while、dowhile、switch、for )语法限制不太严格,程序设计自由度大。允许直接访问物理地址,能进行位(bit )操作,可以直接对硬件操作。生成目标代码质量高,程序执行效率高。可移植性好。用途:C虽不擅长科学计算和管理领域,但对操作系统和系统实用程序以及对硬件进行操作方面,有明显的优势。现在很多大型应用软件也用编写。数据类型、运算符与表达式数据类型1.整型

2、、2.字符型、3.实型或浮点型(单精度和双精度)、4.枚举类型、5.数组类型、6.结构体类型、7.共用体类型、8.指针类型、9.空类型。量1.常量、2.变量常量:值不可改变,符号常量名通常用大写。变量:值可以改变,变量名只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。否则为不合法的变量名。变量在编译时为其分配相应存储单元。实型数据整型变量:1.基本型(int )、2.短整型(short int )、3.长整型(long int )、4.无符号型。不同机器上各类数据所占内存字节数不同,如:一般int 型为个字节,long型为4 个字节。整型数据表示方法:1. 十进制不用说了2. 八

3、进制以0 开头,如01233. 十六进制以0x 开头,如0x1e。实型常量表示形式:十进制形式由数字和小数点组成(必须有小数点),如:0.12、.123、1230.0 等。指数形式如123e3代表12310的三次方。实型变量:1.单精度(float )、2.双精度(double)。在一般系统中float 型占4 字节,7 位有效数字,double型占8 字节,1516位有效数字。字符型数据字符常量:1.用单引号括起来,如a,b等。2.还有一些是特殊的字符常量,如n,t等。分别代表换行和横向跳格。定义字符变量以char 来定义,一个变量只能存放一个字符常量。字符串常量由双引号括起来的字符序列。注

4、意a和a不同,前者为字符常量,后者为字符串常量。每个字符串的结尾加一个结束标志n,实际上a包含两个字符:a和n。数值型数据间混合运算整型、字符型、实型数据间可以混合运算,运算时不同类型数据要转换成同一类型再运算,转换规则:char,short - int - unsigned - long - double = = != )3.逻辑运算符( ! & | )4.位运算符( | & )5.赋值运算符( = )6.条件运算符( ? : )7.逗号运算符( , )8.指针运算符( * & )9.求字节数( sizeof )10.强制类型转换(类型)11.分量运算符( . - )12.下标运算符( )1

5、3.其它运算符( 如函数调用运算符( ) )自增自减运算符:+i :使用i 之前先使i 加i+:使用i 之后,使i 加。逗号表达式求解过程:先求解表达式,再求解表达式,整个表达式的值是表达式的值。控制语句:1.if() else2.for()3.while()4.dowhile()5.continue6.break7.switch8.goto9.return基本结构:1.顺序结构,2.选择结构,3.循环结构数据输出c 语言不提供输入输出语句,输入输出操作是由c 的库函数完成。要包含头文件stdio.h。putchar( ) 向终端输出一个字符printf( )的格式字符: d 格式符用来输出十

6、进制整数%d 按整型数据的实际长度输出%md 使输出长度为m(m0),如果数据长度小于m,则左补空格,如果大于m,则输出实际长度%ld 输出长整型数据 o 格式符以八进制形式输出整数 x 格式符以十六进制形式输出整数 u 格式符用来输出unsigned 型数据,以十进制形式输出 c 格式符用来输出一个字符 s 格式符输出一个字符串%s 输出实际长度字符串%ms 输出的串占m 列,如果串长度小于m,左补空格,如果大于m,实际输出%-ms 输出的串占m 列,如果串长度小于m,右补空格,%m.ns 输出占m 列,但只取字符串中左端n 个字符并靠右对齐%-m.ns m、n 含义同上,靠左对齐,如果nm

7、,则m 自动取n 值 f 格式符以小数形式输出实数%f 整数部分全部输出,小数部分输出6 位%m.nf 输出数据共占m 列,其中有n 位小数。如果数值长度小于m,左补空格%-m.nf 同上,右补空格 e 格式符以指数形式输出实数%e 系统指定位小数,5 位指数(e+002 ) g 格式符输出实数,根据数值大小,自动选f 格式或e 格式数据输入getchar( ) 从终端输入一个字符scanf( 格式控制,地址列表) 标准C scanf 中不使用%u,对于unsigned 型数据,以%d 或%o 或%x 输入。后的*,用来跳过它相应的数据。输入数据时不能规定精度如scanf( %7.2f, &a

8、 );是不合法的。逻辑运算和判断选取控制关系运算符:关系运算符( = = != )前四种优先级高于后两种。If 语句1.If(表达式) 语句2.If(表达式) 语句1 else 语句23.If(表达式1) 语句1Else if(表达式2) 语句2else 语句n条件运算符(ab)?a:b 条件为真,表达式取值a,否则取值bSwitch 语句Switch(表达式)case 常量表达式:语句; break;case 常量表达式:语句2; break;case 常量表达式n:语句; break;default :语句;循环控制循环语句:1.goto 语句(现已很少使用)2.while 语句先判断表达

9、式后执行语句3.do-while 语句先执行语句后判断表达式for 语句Break 语句和continue 语句Break 语句用于跳出循环continue 用于结束本次循环。数组一维数组只有静态存储(static)和外部存储(extern)数组才能初始化。初始化数组可以不指定数组长度。二维数组字符数组部分字符串处理函数1.puts(字符数组) 将一个字符串输出到终端。2.gets(字符数组) 从终端输入一个字符串到字符数组,并且得到一个函数值,为该字符数组的首地址3.strcat(字符数组,字符数组2) 连接两个字符数组中的字符串,数组1 必须足够大。4.Strcpy(字符数组,字符串2)

10、将字符串拷贝到字符数组中。5.Strcmp(字符串1,字符串2) 比较字符串,相等返回0,字符串字符串2,返回正数,小于返回负数。6.Strlen(字符数组) 求字符串长度。7.Strlwr( 字符串) 将字符串中的大写字母转换成小写8.Strupr( 字符串) 将字符串中的小写字母转换成大写函数形参和实参 在函数被调用之前,形参不占内存 实参可以是常量、变量或表达式 必须指定形参的类型 实参与形参类型应一致 实参对形参的数据传递是值传递,即单向传递函数返回值如果想让函数返回一个值,在函数中就要用return 语句来获得定义函数,对函数值指定类型;如果不指定,默认返回整型。函数调用函数调用方式

11、:1.函数语句,2.函数表达式,3.函数参数1. 注意实参和形参的个数、类型应一一对应。对实参表求值的顺序是不确定的,有的系统按自左至右,有的系统则按自右至左的顺序。2. 如果主调函数和被调函数在同一文件中,并且主调函数在前那么要在主调函数中对被调函数进行说明。除非:(1)被调函数的返回值类型为整型或字符型(2)被调函数出现在主调函数之前。3. 对函数的说明和定义不同定义是指对函数功能的确立,包括指定函数名,函数值类型,形参及其类型、函数体等。说明则只是对已定义的函数返回值类型进行说明,只包括函数名、函数类型以及一个空的括弧,不包括形参和函数体。4. 允许函数的递归调用(在调用一个函数的过程中

12、又出现直接或间接的调用该函数本身)。数组作为函数参数1)数组元素作为函数参数和一般变量相同2)数组名作参数应该在主调和被调函数分别定义数组,形参数组的大小可以不定义。注意:数组名作参数,不是单向传递。3)多维数组作参数,在被调函数中对形参数组定义时可以省略第一维的大小说明,但不能省略第二维或更高维的说明。变量从变量作用域角度分1.局部变量、2.全局变量。1)内部变量(局部变量)在一个函数内定义,只在函数范围内有效的变量。2)外部变量(全局变量)在函数外定义,可以为本文件其它函数所共用,有效范围从定义变量的位置开始到本文件结束。因在程序全部执行过程中都占用资源,而且使函数的通用性降低了。,应尽量

13、少使用全局变量如果在定义外部变量之前的函数要想使用该外部变量,则应在该函数中用extern 作外部变量说明。从变量值存在的时间(生存期)角度分1.动态存储变量、2.静态存储变量静态存储变量:在程序运行期间给变量分配固定的存储空间动态存储变量:程序运行期间根据需要动态的给变量分配存储空间。变量存储方法:1.静态存储类、2.动态存储类,包括:1.自动的(auto),2.静态的(static),3.寄存器的(register),4.外部的(extern)。局部变量存储方式函数中的局部变量如不作专门说明,都之auto 的,即动态存储的,auto 可以省略。局部变量也可以定义为static 的,这时它在

14、函数内值是不变的。静态局部变量如不赋初值,编译时系统自动赋值为;动态局部变量如不赋初值,则它的值是个不确定的值。只有在定义全局变量和局部静态变量时才能对数组赋初值。register 变量为提高执行效率,c 允许将局部变量值放在寄存器中要用register 说明。只有局部动态变量和形式参数可以作为register 变量,其它不行。全局变量的存储方式全局变量在函数外部定义,编译时分配在静态存储区,可以在程序中各个函数所引用。引用全局变量多个文件的情况时,假如在一个文件定义全局变量,在别的文件引用,则在此文件中用extern 对全局变量说明如果全局变量定义时用static 的话,此全局变量就只能在本

15、文件中引用了,而不能被其它文件引用。存储类别从作用域角度分1.局部变量、2.全局变量局部变量:自动变量,即动态局部变量(离开函数,值就消失)静态局部变量(离开函数,值仍保留)寄存器变量(离开函数,值就消失)(形参可定义为自动变量和寄存器变量)全局变量:静态全局变量(只限本文件引用)全局变量(允许其它文件引用)从存在的时间分1.静态存储,2.动态存储动态存储:自动变量(本函数内有效)寄存器变量(本函数内有效)静态存储:静态局部变量(函数内有效)静态全局变量(本文件内有效)全局变量(其它文件可引用)从变量值存放的位置分静态存储区:静态局部变量静态全局变量全局变量动态存储区:自动变量和形参寄存器内:

16、寄存器变量7 内部函数和外部函数内部函数:只能被本文件中的其它函数调用,定义时前加static,内部函数又称静态函数。外部函数:可以被其它文件调用,定义时前加extern,如果省略,则隐含为外部函数,在需要调用此函数的文件中,一般要用extern 说明。预编译处理c 编译系统在对程序进行通常的编译之前,先进行预处理预处理功能1)宏定义2)文件包含3)条件编译1 宏定义1. 不带参数的宏定义、2. 带参数的宏定义不带参数的宏定义用一个指定的标识符来代表一个字符串,形式:#define 标识符字符串几点说明:) 宏名一般用大写) 宏定义不作语法检查,只有在编译被宏展开后的源程序时才会报错) 宏定义

17、不是c 语句,不在行末加分号) 宏名有效范围为定义到本源文件结束) 可以用#undef 命令终止宏定义的作用域) 在宏定义时,可以引用已定义的宏名带参数的宏定义定义形式:#define 宏名(参数表) 字符串和函数有些类似,不同:) 函数调用时,先求实参表达式值,再代入形参,而宏只是简单替换,并不求值) 函数调用是在程序运行时分配内存的,而宏展开时并不分配内存,也没有返回值的概念) 对函数中的实参和形参都要定义类型,而且要求一致,宏名无类型,其参数也没有类型。) 函数只有一个返回值,而宏可以得到几个结果) 宏替换不占运行时间,只占编译时间,而函数调用占运行时间2 文件包含处理将文件1 的全部内

18、容复制插入到#include 位置,作为一个源文件进行编译。#include 文件1在#include 命令中,文件名可以用 也可以用假如现在file1.c 中包含file2.h 文件,则系统先在file1.c所在目录中找file2.h,如果找不到,再按系统指定的标准方式检索目录,表示系统直接按指定的标准方式检索目录。所以用 保险一点。3 条件编译条件编译:不对整个程序都编译,而是编译满足条件的那部分。形式:1)#ifdef 标识符程序段#else程序段#endif作用:当标识符在前面已经被定义过(一般用#define),则对程序段编译,否则对程序段编译。)#ifndef 标识符程序段#els

19、e程序段#endif作用和#ifdef 相反,当标识符没被定义过,对程序段编译,否则对程序段编译。)#if 表达式程序段#else程序段#endif作用:当表达式值为真(非)时,对程序段编译,否则对程序段编译。指针指针变量用来存放指针(地址)的变量。一个变量在编译的时候系统为它分配一个地址,用一个变量(指针变量)来存放这个地址。指向指存放的地址,如指向变量的指针变量,指向就是指用来存放变量的地址再如指向数组的指针变量,指向就是指存放数组的地址。还有指向字符串的指针变量、指向函数的指针变量、指向指针的指针变量等。定义指针变量形式:类型标识符*标识符如:int *pointer;*:*表示poin

20、ter 是个指针变量,在用这个变量的时候不能写成*pointer, *pointer 是pointer 指向的变量。一个指针变量只能指向同一个类型的变量。如上面pointer 只能指向int 型变量。指针变量引用运算符:1. & 取地址运算符&a 代表变量a 的地址2. * 指针运算符*a 代表变量a 的值数组的指针:数组的起始地址数组元素的指针:数组元素的地址。指向数组元素的指针变量定义与赋值定义:和指向变量的指针变量定义相同c 规定数组名代表数组的首地址,即第一个数组元素地址。通过指针引用数组元素形式:ai、 *(a+i),如:定义一个指针变量p,将数组a 的首地址赋给p,p=a;然后用*

21、(p+i)引用。指针变量指向数组a 首地址,则p+指向数组的下一元素地址,即a1的地址。把数组名作函数参数这样形参数组和实参数组之间并不是值传递,而是共用同一段地址则在函数调用过程中如果形参的值发生变化,则实参的值也跟着变化。使指针指向多维数组以指向二维数组为居多。定义了一个二维数组a34则使1. a 代表了整个二维数组的首地址,也代表第0 行的首地址,同时也是第0 行第0 列的元素的首地址。2. a +0 和a0代表第0行首地址,a+1 和a1代表第一行的首地址。假如a 是一个数组的首地址,那么如果a 是一维的,a+I 代表第I 个元素的地址;如果a 是二维的,则a+I 代表第I 行的首地址

22、。表示第一行第二列的元素地址a1+2 或&a12或*(a+1)+2。在二维数组中a 代表整个数组的首地址,aI代表第I 行的首地址,aI与*(a+I)等价。用指针变量指向由m 个整数组成的一维数组如:int (*p)4则p 是一个指向包含4 个元素的一维数组如果p 先指向a0,则p+1 指向a1即p 的增值以一维数组的长度为单位。假如a34作用:p指向a0也就是数组a 的首地址。那么p+1 是a1的首地址即元素9 的地址因为在定义p 时int (*p)4,定义一维数组长度为4,所以p+1 就等于加了一个一维数组的长度4。指针变量指向字符串字符串表示形式:1.数组,2.字符指针如:char st

23、ring=I love c!;char *str=I love c!;字符指针在内存中开辟了一个数组,数组的首地址存放在字符指针变量str 中。不要认为str 是一个字符串变量。把字符串指针作函数参数字符串指针是字符数组的首地址。字符指针变量与字符数组的区别1 字符数组由若干元素组成,每个元素存放一个字符,而字符指针变量只存放字符串的首地址,不是整个字符串。 对数组初始化要用static,对指针变量不用。 对字符数组赋值,只能对各个元素赋值,不能象下面这样:char str14;str=I love c!;对指针变量可以,char *str;str=I love c!;注意:此时赋给str 的不是字符,而是字符串首地址。 数组在定义和编译时分配内存单元,而指针变量定义后最好将其初始化,否则指针变量的值会是一个不确定的值。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1