欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言复习提纲.pdf

    • 资源ID:80688529       资源大小:1.40MB        全文页数:31页
    • 资源格式: PDF        下载积分:19.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要19.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言复习提纲.pdf

    -1-C 语言复习提纲 第一章 C 语言程序设计概述 一、Visual C+6.0 开发环境 1、了解 Visual C+6.0 的安装过程;2、了解 Visual C+6。0 的工作界面,菜单和工具栏的使用;二、掌握 C 语言程序运行的过程 1、编辑:是指把按照 C 语法规则编写的程序代码通过编辑器(Visual C+6。0,Turbo C 3.0)输入计算机,并存盘。在存盘时,C 源文件的扩展名为.c 2、编译:将 C 语言源程序编译成目标程序,即对源程序进行编译,并将源程序转换为扩展名为。obj 的二进制目标代码(即把已经编辑好的源程序翻译成二进制目标代码的过程).3、连接:将用户程序生成的目标代码文件(。obj)和系统提供的库文件(。lib)中的某些代码连接在一起,生成一个可执行文件(.exe)。4、执行:执行生成的可执行代码,并输出结果.5、调试:是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。三、结构化程序设计的基本概念 1、概念 以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,将原来较为复杂的问题化简为一系列简单模块的设计,任何模块都可以使用一些基本的结构来实现,任何复杂的程序,都可以使用这些基本结构按一定的顺序组合起来,这些基本结构的特点都是只有一个入口、一个出口,这样的程序设计方法称为结构化程序设计。2、基本思想 结构化程序设计的基本思想是采用自顶向下,逐步细化、模块化设计、结构化编码的程序设计方法和单入口单出口”的控制结构。3、三种基本结构 顺序结构 选择结构 循环结构 4、三种基本结构的特点 只有一个入口 只有一个出口 每一个基本结构中的每一部分都有机会执行到 结构内不存在“死循环”5、设计原则 自顶向下 逐步细化 模块化设计 结构化编码 四、C 程序的基本组成:C 程序是由若干个函数构成的,至少有一个主函数 main(),main()的位置可以任意,其他各函数在程序中的前后位置也是可以任意的。程序的执行总是从主函数开始,在主函数中结束。主函数是可以调用其他任何非主函数的函数,任何非主函数也可以调用其它任何非主函数。C 程序的基本组成:声明区、主程序区、函数定义区。1、声明区 处在程序文件的所有函数的外部,一般包含:包含头文件、宏定义、类定义、结构体定义、函数声明、全局变量声明、条件编译等。2、主程序区 主程序以 main()函数开始,main()函数(主函数)是程序运行时的入口,包含局部变量的声明、函数调用、一般运算、结构控制、对象与结构的处理、文件处理等。3、函数定义区 函数的定义包含函数说明和函数体两部分。-2-4、注释/或/*/为注释,不能嵌套 不产生编译代码,不影响程序的执行效率.五、标识符 1、标识符的定义:用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符.2、标识符的命名规则:由字母、数字或下画线组成,并且第 1 个字符必须为字母或下画线。注意:标识符区分大小写,即大写字母和小写字母的通常意义不同,且不能与关键字重名。练习 1_1:下列变量标识符哪些是正确的,哪些是不正确的?a3bc if a!bc _abc abc _3abc a_bc 3abc 3、标识符分类:关键字、预定义标识符、用户自定义标识符。第二章 数据类型、运算符和表达式 一、C 语言的数据类型 C 语言中基本数据类型包括整型、实型、字符型、枚举类型,构造类型有数组、结构体、共用体等。、基本数据类型(见 P17)、构造类型又称为组合类型,它是由基本类型按照某种规则组合而成的.数组:是由具有相同数据类型的元素组成的集合。结构体:是由不同的数据类型构成的一种混合的数据结构,构成结构体的成员的数据类型一般不同,并且在内存中分别占据不同的存储单元.共用体:是类似于结构体的一种构造类型,与结构体不同的是构成共同体的数据成员共用同一段内存单元。枚举:是将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。、指针类型变量用于存储另一变量的地址,而不能用来存放基本类型的数据。它在内存中占图2_1 C语言的数据类型 数据类型 基本类型 空类型(无值类型)void 构造类型 指针类型 实型(浮点型)联合型类型union 单字符型char 整型int 单精度型float 双精度型double 字符型 宽字符型w-char 逻辑型bool 类类型class 枚举类型enum 结构类型struct 数组类型-3-据一个存储单元。、类是一种数据类型,它定义的是一种对象类型,由数据和方法组成,描述了属于该类型的所有对象的性质。二、常量和变量、常量:在程序运行的整个过程中,其值始终保持不变的量.整型常量:表示形式有十进制、八进制(以 0 开头)和十六进制(以 0 x 或 0X 开头).整型常量可以后缀字母 L(或 l)表示长整数,后缀字母 U(或 u)表示无符号整数。实型常量(浮点型常量):表示形式有一般形式和指数形式。实型常量缺省为 double 型(双精度型),如后缀 f 或 F,则为 float 型(单精度型)。字符常量:用单撇号括起来的一个字符。如A,等.转义字符:用反斜杠引导的,具有特定含义的字符(见 P22表 2-4),如 n,367,x8a。注:C 语言字符集中的任何一个字符均可用转义字符来表示.字符串常量:用双撇号括起来的字符序列。如”student”,”广东广州等。布尔常量:false,true。符号常量:define 宏名 常数 练习 2_1:下列哪些是合法的常量:12。7f 0986 0986。012 、0625L 87U 0 x98C2 01a -6.87E-2 1.2e0.5 E-3 0 xFF 2L 72 160 -0 xffff 5E2。0 -0 xcdf 1。3E 2E0 0668(21)011 (22)0 xe (23)01 (24)-0 x48a (25)0 x 变量:指程序在运行时其值可改变的量.变量应先定义(声明其类型和名称)后使用;变量定义的一般形式为:数据类型 ,变名 2,,c 等价于 a!=(bc)“=”与“=”的区别 4、逻辑运算符与逻辑表达式-4-注意:逻辑非的优先级最高,逻辑与次之,逻辑或最低 练习 2_4 若有 int a=3,b=0;则表达式 a&!b 的值为 1。练习 2_5 设有变量说明:int a=8,b=7;那么执行语句:printf(”%d,%d n”,+a,b-),输出的结果是 9,7 练习 2_6 设 a,b,c 均为 int 型变量,则执行语句 a=b=3;c=+a|+b;后,b 的值为 3.练习 2_7 设 x、y 和 z 都是 int 型变量,且 x=8,y=3,z=5,则表达式 x*y/z+6-14z 的值为6.练习 2_8 设有定义:int x=1,y=1;则执行语句 printf(dn,(x-+y);后的输出结果是 0。练习 2_9 设 x,y,z,t 均为 int 型变量,则执行以下语句 x=y=z=1;t=+x|+y&+z;后,x、y、z、t 的值分别为 2,1,1,1。6、条件运算符 表达式 1?表达式 2:表达式 3 注意:结合性是自右向左。ab?a:cd?c:d 相当于 ab?a:(cd?c:d)条件运算符的优先级别高于赋值运算符,低于关系运算符和算术运算符。如:ab?ab:b-a 相当于 ab?(ab):(b-a)练习 2_10 设有变量说明:int x=3,y=5;那么表达式:z=xy?x:y 运算后,z 的值是 5。7、位运算符 位运算符是对其操作数按其二进制形式逐位进行运算,参加位运算的操作数必须为整数。练习 2_11 int a=5,b=6;ab=4;ab=7;ab=3;b=-7;b2=1。注:在位运算中,操作数左移三位,其结果相当于操作数乘以 8.8、逗号运算符 表达式,表达式,表达式 n 注意:自左至右,依次计算各表达式的值,“表达式 n”的值即为整个逗号表达式的值.如:a=3 5,a*4,a+5 的值为 20。四、运算符的优先级与结合性 1、所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称为左结合性。反之,称为右结合性.结合性是语言的独有概念.除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。2、表达式求值 按运算符的优先级高低次序执行.例如,先乘除后加减.如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按语言规定的结合方向(结合性)进行.例如,算术运算符的结合方向是“自左至右”,即:在执行“a b+c”时,变量 b 先与减号结合,执行“a b”;然后再执行加 c 的运算。练习 2_12 设 int x=2,y=3,z=4;执行语句行 x+;y+=1;z=x+y-以后,x,y 和 z 的值分别是多少?答案:3,3,7 练习 2_13 若有定义 int m=2;则逻辑表达式(m=3)&(m=3)的值是 1。练习 2_14 如果 a=5,b=3,c=7,d=9,则条件表达式 ab?a:cd);后,n 的值为 2。练习 2_16 如果 a=5,b=3,c=7,d=9,则条件表达式 a 3。2,根据定义和数据的输入方式,输入函数语句的正确形式为 scanf(”%lflf,d,&f)。(scanf(”%4.2lf%3.1lf,d,f)或 scanf(”%4.2f%3。1f,&d,f)都是错误的)练习 3_2 有下列程序段 int m=2,n=2;n=m+-1;printf(%d dn,m,n);输出结果是 3,1。第四章 选择结构程序设计 一、算法 1、算法的概念:算法是指为解决一个问题而采取的确定的、有限的方法和步骤.2、算法的描述方法最常用的有自然语言、流程图、NS 流程图、PAD 图和伪代码等。二、顺序结构程序设计 顺序结构是结构化程序设计中最简单、最常见的一种程序结构.顺序结构中的语句是按照书写的先后次序执行的,并且每个语句都会被执行到.练习 4_1 编写一个程序,从键盘上输入一个学生 5 门课的成绩,计算出该学生的总成绩和平均成绩,并用自然语言描述算法。解:设变量 a、b、c、d、e 分别表示学生 5 门课的成绩,sum 表示总成绩,aver 表示平均成绩,则用自然语言描述算法如下:输入学生 5 门课的成绩 a、b、c、d、e;求总成绩 sum=a+b+c+d+e;求平均成绩:aver=sum/5。0;输出总成绩和平均成绩.程序如下:#include stdio。h main()float a,b,c,d,e,sum,aver;printf(”请输入学生 5 门课的成绩n”);scanf(%f,f,%f,f,f,&a,&b,c,d,&e);sum=a+b+c+d+e;-7-aver=sum/5.0;printf(”总成绩=%0。2f,平均成绩=。2fn,sum,aver);练习 4_2 编写一个程序,从键盘输入梯形的上底、下底和高的值(浮点数),计算并输出其面积(保留两位小数),并用 N-S 结构图表示算法。解:设变量 a、b、h、area 分别表示梯形的上底、下底、高和面积,则用 N-S 结构图表示算法如下:程序如下:include stdio。h main()float a,b,h,area;printf(请输入梯形的上底、下底和高n”);scanf(”f,f,%f,a,&b,h);area=(a+b)h/2。0;printf(梯形的面积为%0。2fn”,area);练习 4_3 编写一个程序,从键盘输入圆的半径,计算并输出圆的周长和面积(保留两位小数),用伪代码表示出算法。解:设用变量 r、length、area 分别表示圆的半径、周长和面积,则用伪代码表示算法如下:BEGIN input r length=23。14*r area=3。14*rr print length,area END 程序如下:#include#define PI 3.14 main()float r,length,area;printf(请输入圆的半径n”);scanf(”f”,&r);length=2PIr;area=PI*rr;printf(”圆的周长为%0.2fn,length);printf(圆的面积为0.2fn,area);三、选择结构程序设计 1、if 语句、if 语句的一般格式 输入梯形的上底 a、下底 b 和高 h 计算梯形的面积:area=(a+b)*h/2。0 输出结果.-8-if(表达式)语句组 1;else 语句组 2;if 语句中的“表达式必须用“(”和“)括起来。表示程序执行的条件,常用关系运算符、逻辑运算符等表示的条件表达式,其结果只有两个值“1”或“0”(成立或不成立)。如:表示字符型变量 ch 是大写英文字符的 C 语言表达式是 ch=Ach=Z,要判断字符变量 ch 中的值是否为数字字符,则其表达式是 ch=0&ch=9.else 子句(可选)是 if 语句的一部分,必须与 if 配对使用,不能单独使用。当 if 和 else 下面的语句组,仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。、if 语句的执行过程 缺省 else 子句时 当“表达式”的值不等于 0(即判定为“逻辑真”)时,则执行语句组 1,否则直接转向执行下一条。指定 else 子句时 当“表达式”的值不等于 0(即判定为“逻辑真)时,则执行语句组 1,然后转向下一条语句;否则,执行语句组 2。、if 语句的嵌套与嵌套匹配原则 if 语句允许嵌套。所谓 if 语句的嵌套是指,在“语句组 1”或(和)“语句组 2”中,又包含有 if 语句的情况。if 语句嵌套时,为避免嵌套的 if-else 语句的二义性,C 语言规定:else 总是与在其之前最近的未配对的 if 语句组成配对关系.练习 4_4:铁路托运行李,假设每张车票可按每公斤 0.3 元托运 40 公斤以内的行李,如果超过40 公斤时,超过的部分每公斤加价 0.5 元,试编写一道计算行李托运费的程序。解:/*程序功能:计算行李托运费*/include stdio。h Void main()float w,x;printf(”输入行李的重量:”);scanf(f”,&w);if(w40。0)x=40.00.3+(w40。0)*0。8;else x=w*0.5;printf(”行李重量 w=.2f 公斤,托运费 x=。2f 元n”,w,x);2switch 语句、switch 语句的一般形式 switch(表达式)case 常量表达式 1:语句组;break;case 常量表达式 2:语句组;break;。.。.case 常量表达式:语句组;break;-9-default:语句组;break;、执行过程 当 switch 后面“表达式”的值,与某个 case 后面的“常量表达式”的值相同时,就执行该case 后面的语句(组);当执行到 break 语句时,跳出 switch 语句,转向执行 switch 语句的下一条.如果没有任何一个 case 后面的“常量表达式的值,与“表达式”的值匹配,则执行default 后面的语句(组).然后,再执行 switch 语句的下一条。说明 switch 后面的“表达式”,可以是 int、char 和枚举型中的一种。每个 case 子句后面的“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象(即对表达式的同一值,有两种或两种以上的执行方案)。case 后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以要退出 switch 语句,方法是使用 break 语句。各 case 及 default 子句的先后次序,不影响程序执行结果。多个 case 子句,可共用同一语句(组)用 switch 语句实现的多分支结构程序,完全可以用 if 语句或 if 语句的嵌套来实现。练习 4_5 以下程序段的输出结果是 int x=7,y=8,z=9;if(xy)x=y,y=z;z=x;printf(”d,d,dn,x,y,z);结果:7,8,7 练习 4_6 以下程序的输出结果是 include stdio。h void main()int m=5;if(m+5)printf(%dn”,m);else printf(”%dn,m-);结果:6 练习 4_7 以下程序的输出结果是#include stdio。h void main()int k=1,x=0,y=0;switch(k)case 0:y+;case 1:x+;case 2:x+;y+;printf(x=%d,y=%dn”,x,y);结果 x=2,y=1 第五章 循环结构程序设计-10-一、循环程序设计 1、while 语句、一般格式 while(循环继续条件)循环体语句组;、执行过程 求解“循环继续条件表达式。如果其值为非 0,转;否则转。执行循环体语句组,然后转。执行 while 语句的下一条。练习 5_1:/程序功能:求 1100 的累计和*/include stdio。h void main()int i=1,sum=0;/初始化循环控制变量 i 和累计器 sum*/while(i=100)sum+=i;/*实现累加/i+;/*循环控制变量 i 增 1/printf(“sum=dn”,sum);程序运行情况如下:sum=5050 2、dowhile 语句(直到型循环)、一般格式 do 循环体语句组;while(循环继续条件);/*本行的分号不能缺省/当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。、执行过程 执行循环体语句组.计算“循环继续条件”表达式。如果“循环继续条件”表达式的值为非 0(真),则转向继续执行;否则,转向。执行 dowhile 的下一条语句。、do-while 循环语句的特点是:先执行循环体语句组,然后再判断循环条件。因此 do。.。.while 语句不论条件是否成立,至少要执行一次循环体。练习 5_2:用 dowhile 语句求解 1100 的累计和。/*程序功能:求 1100 的累计和/main()int i=1,sum=0;/定义并初始化循环控制变量,以及累计器*/Do sum+=i;/*累加/i+;while(i=100);/循环继续条件:i=100*/printf(“sum=dn”,sum);3、for 语句、for 语句的一般格式 for(变量赋初值;循环继续条件;循环变量增值)-11-循环体语句组;、for 语句的执行过程 求解“变量赋初值”表达式。求解“循环继续条件”表达式.如果其值非 0,执行;否则,转至.执行循环体语句组,并求解“循环变量增值”表达式,然后转向。执行 for 语句的下一条语句。、说明“变量赋初值”、“循环继续条件”和“循环变量增值”部分均可缺省,甚至全部缺省,但其间的分号不能省略。当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。“循环变量赋初值”表达式,既可以是给循环变量赋初值的赋值表达式,也可以是与此无关的其它表达式(如逗号表达式).例如,for(sum=0;i=100;i+)sum+=i;for(sum=0,i=1;i=100;i+)sum+=i;“循环继续条件”部分是一个逻辑量,除一般的关系(或逻辑)表达式外,也允许是数值(或字符)表达式。如:while(!E)等价于 while(0),while(E)等价于 while(1).for 语句最为灵活,不仅可用于循环次数已经确定的情况,也可用于循环次数虽不确定、但给出了循环继续条件的情况。练习 5_3:求 n 的阶乘 n!(n!=1*2*n)./程序功能:求 n!*/main()int i,n;long fact=1;/将累乘器 fact 初始化为 1/printf(“Input n:”);scanf(“%d,&n);for(i=1;i=n;i+)fact*=i;/实现累乘*/printf(”d!=%ldn”,n,fact);程序运行情况如下:Input n:5 5!=120 练习 5_4 有以下程序 include stdio.h void main()int a=10,b=10,i;for(i=0;a8;b=+i)printf(”%d d,a-,b);程序输出的结果是 10 10 9 1 练习 5_5 有以下程序#include stdio。h void main()int k;for(k=0;k void main()int m;for(m=1;m=1)a-;程序执行后,a 的值是 0。练习 5_10 以下程序 include void main()int i;for(i=0;i10;i+);printf(”d”,i);输出结果是 10.5、循环的嵌套、循环语句的循环体内,又包含另一个完整的循环结构,称为循环的嵌套。循环嵌套的概念,对所有高级语言都是一样的.、for 语句和 while 语句允许嵌套,dowhile 语句也不例外.练习 5_11:编程:输出下列图形 *-13-*解:/*程序功能:打印 5 行*”,第一行 1 个,第二行 3 个,第三行 5 个。.。*/#include stdio.h void main()int i=1;while(i3)程序代码如下:#includestdio。h-14-void main()int F1=1,F2=1;int F,S=2,n=3;while(n=12)F=F1+F2;F1=F2;F2=F;S=S+F;n+;printf(”S=dn,S);第六章 数组 数组是数目固定、类型相同的若干变量的有序集合。一、一维数组 1、一维数组的定义:数据类型 数组名常量表达式,数组名 2常量表达式 2;“数据类型”是指数组元素的数据类型。数组名,与变量名一样,必须遵循标识符命名规则。“常量表达式”必须用方括号括起来,指的是数组的元素个数(又称数组长度),它是一个整型值,其中可以包含常数和符号常量,但不能包含变量.数组元素的下标,是元素相对于数组起始地址的偏移量,所以从 0 开始顺序编号。数组名中存放的是一个地址常量,它代表整个数组的首地址。同一数组中的所有元素,按其下标的顺序占用一段连续的存储单元。注:数组名能与其他变量名相同,数组名后是用方括号括起来的常量表达式,不能和圆括号.2、数组元素的引用 引用数组中的任意一个元素的形式:数组名下标表达式 “下标表达式可以是任何非负整型数据,取值范围是 0(元素个数1).1 个数组元素,实质上就是 1 个变量,它具有和相同类型单个变量一样的属性,可以对它进行赋值和参与各种运算。在 C 语言中,数组作为 1 个整体,不能参加数据运算,只能对单个的元素进行处理。、一维数组元素的初始化 初始化格式:数据类型 数组名常量表达式初值表 如果对数组的全部元素赋以初值,定义时可以不指定数组长度(系统根据初值个数自动确定)。如果被定义数组的长度,与初值个数不同,则数组长度不能省略。“初值表”中的初值个数,可以少于元素个数,即允许只给部分元素赋初值.3、数组元素的存储 数组元素在计算机内存中存储时,占据一片连续的存储空间,数组名代表数组元素占据的内存空间的首地址.由于数组各元素的数据类型相同,因此在数组中,每一个元素在内存里占用的存储单元数都是相同的。练习 6_1:从键盘上任意输入 n 个整数,用冒泡法按从小到大地排序,并在屏幕上显示出来。解:冒泡法排序的基本思想:从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N1)次比较后,最大的数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍比较后就可以完成排序。include”stdio。h#define NUM 10 /*定义符号常量(数据个数 N)*/-15-main()int dataNUM;/*定义 1 个 1 维整型数组 data/int i,j,temp;/*定义循环变量和临时变量/printf(”请输入 10 个整数:n);for(i=0;iNUM;i+)scanf(”%d,&datai);/冒泡法排序*/for(i=0;iNUM1;i+)/*外循环:控制比较趟数/for(j=NUM1;ji;j)/*内循环:进行每趟比较*/if(datajdataj1)/*如果 dataj大于 dataj-1,交换两者的位置/temp=dataj;dataj=dataj-1;dataj1=temp;/*输出排序后的数据/printf(n 排序后的数据:n”);for(i=0;iNUM;i+)printf(%d,datai);printf(”n”);练习 6_2 下列对一维数组正确赋初值的语句是 A、int a10=”I am a student”;B、char a=”I am a student;C、int a3=1,3,5,7,9,1;D、char a3=”I am a student”.练习 6_3、在下面关于一维数组的定义中,有语法错误的是 A、int x =1,2,3,4,5;B、int x5=0;C、int x5;D、int x;答案:D 练习 6 _4 青年歌手参加歌曲大奖赛,有 10 个评委对他进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分),并在屏幕上输出去掉的最高分和去掉的最低分及这位选手的最后得分。解:#include stdio。h main()int i,j,min;float temp,ave=0;-16-float a11;printf(”n 输入评委所打的分数:n);for(i=1;i=10;i+)scanf(%f,&ai);/*选择法排序/for(i=1;i=9;i+)/*外循环:控制比较趟数/min=i;for(j=i+1;jaj)min=j;temp=ai;ai=amin;amin=temp;for(i=2;i字符串 2,函数返回值正整数。使用说明 如果一个字符串是另一个字符串从头开始的子串,则母串为大。不能使用关系运算符“”来比较两个字符串,只能用 strcmp()函数来处理。4、拷贝字符串strcpy()函数 调用方式:strcpy(字符数组,字符串)其中“字符串”可以是串常量,也可以是字符数组。函数功能:将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖.使用说明 字符数组必须定义得足够大,以便容纳复制过来的字符串.复制时,连同结束标志0一起复制.不能用赋值运算符“”将一个字符串直接赋值给一个字符数组,只能用 strcpy()函数来处理。5连接字符串strcat()函数 调用方式:strcat(字符数组,字符串)函数功能:把“字符串连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用说明 由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。连接前两个字符串都有结束标志0,连接后“字符数组”中存储的字符串的结束标志0被舍弃,只在目标串的最后保留一个0.6求字符串长度strlen()函数(len 是 length 的缩写)调用方式:strlen(字符串)函数功能:求字符串(常量或字符数组)的实际长度(不包含结束标志).练习 6_7 执行 char str10=I am a teacher0”;strlen(str)后的结果是 14。7将字符串中大写字母转换成小写strlwr()函数 调用方式:strlwr(字符串)函数功能:将字符串中的大写字母转换成小写,其它字符(包括小写字母和非字母字符)不转换。-19-8将字符串中小写字母转换成大写strupr()函数 调用方式:strupr(字符串)函数功能:将字符串中小写字母转换成大写,其它字符(包括大写字母和非字母字符)不转换。第七章 函数 一、函数的定义与调用 1、函数的定义 任何函数(包括主函数 main())都是由函数说明和函数体两部分组成.根据函数是否需要参数,可将函数分为无参函数和有参函数两种.、无参函数的一般形式 函数类型 函数名(void)说明语句部分;可执行语句部分;注意:在旧标准中,函数可以缺省参数表。但在新标准中,函数不可缺省参数表;如果不需要参数,则用“void”表示,主函数 main()例外。、有参函数的一般形式 函数类型 函数名(数据类型 参数,数据类型 参数 2)说明语句部分;可执行语句部分;有参函数比无参函数多了一个参数表。调用有参函数时,调用函数将赋予这些参数实际的值。为了与调用函数提供的实际参数区别开,将函数定义中的参数表称为形式参数表,简称形参表。练习 7_1:定义一个函数,用于求两个数中的大数。解:/功能:定义一个求较大数的函数并在主函数中调用*/int max(int n1,int n2)/*定义一个函数 max()*/return(n1n2?n1:n2);main()int max(int n1,int n2);/*函数说明/int num1,num2;printf(”input two numbers:n);scanf(dd”,&num1,&num2);printf(”max=dn”,max(num1,num2));、说明 函数定义不允许嵌套(但函数的调用可以嵌套)。在语言中,所有函数(包括主函数 main()都是平行的。一个函数的定义,可以放在程序中的任意位置,主函数 main()之前或之后。但在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义.空函数既无参数、函数体又为空的函数.其一般形式为:函数类型 函数名(void)在老版本 C 语言中,参数类型说明允许放在函数说明部分的第 2 行单独指定。2、函数的返回值与函数类型 函数返回值与 return 语句 有参函数的返回值,是通过函数中的 return 语句来获得的。-20-return 语句的一般格式:return(返回值表达式);return 语句的功能:返回调用函数,并将“返回值表达式”的值带给调用函数。注意:调用函数中无 return 语句,并不是不返回一个值,而是一个不确定的值。为了明确表示不返回值,可以用“void定义成“无(空)类型”.函数类型 函数的类型说明符指明了函数的类型,它实际上是函数返回值的类型。如果不要求函数有返回值,函数的类型说明符可以写为 void,如果缺省,C 语言函数返回类型的默认定义类型是 int 型.在定义函数时,对函数类型的说明,应与 return 语句中、返回值表达式的类型一致。如果不一致,则以函数类型为准.如果缺省函数类型,则系统一律按整型处理。即:在 C 语言中,函数返回值的数据类型取决于在定义该函数时所指定的数据类型.3、对被调用函数的说明和函数原型 在 ANSI C 新标准中,采用函数原型方式,对被调用函数进行说明,其一般格式如下:函数类型 函数名(数据类型 参数名,数据类型 参数名 2);/C 语言同时又规定,在以下 3 种情况下,可以省去对被调用函数的说明:当被调用函数的函数定义出现在调用函数之前时。因为在调用之前,编译系统已经知道了被调用函数的函数类型、参数个数、类型和顺序。如果在所有函数定义之前,在函数外部(例如文件开始处)预先对各个函数进行了说明,则在调用函数中可缺省对被调用函数的说明。当一个函数是 int 类型时,它与被调用者的前后位置关系可以忽略,可以省略对被调函数的说明.4、函数的调用 一般形式为:函数名(实际参数表)切记:实参的个数、类型和顺序,应该与被调用函数所要求的参数(形参)个数、类型和顺序一致,才能正确地进行数据传递。、调用函数方式:函数表达式。函数作为表达式的一项,出现在表达式中,以函数返回值参与表达式的运算。函数语句。C/C 语言中的函数可以只进行某些操作而不返回函数值,这时的函数调用可作为一条独立的语句.函数实参。函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。、说明:调用函数时,函数名称必须与具有该功能的自定义函数名称完全一致。实参在类型上按顺序与形参,必须一一对应和匹配。如果类型不匹配,C 编译程序将按赋值兼容的规则进行转换。如果实参和形参的类型不赋值兼容,通常并不给出出错信息,且程序仍然继续执行,只是得不到正确的结果.如果实参表中包括多个参数,对实参的求值顺序随系统而异。有的系统按自左向右顺序求实参的值,有的系统则相反.Turbo C 和 MS C 是按自右向左的顺序进行的。练习 7_2 写出以下程序运行的结果 include stdio。h void main()int x=2,y=5;int max(int,int);max(x,y);printf(max=dn,max(x,y);int max(int a,int b)int temp;if(ab)-21-temp=a;else temp=b;return temp;运行结果:max=5 5、函数的形参与实参、函数的参数分为形参和实参两种,作用是实现数据传送。形参出现在函数定义中,只能在该函数体内使用。发生函数调用时,调用函数把实参的值复制1 份,传送给被调用函数的形参,从而实现调用函数向被调用函数的数据传送。练习 7_3:实参对形参的数据传递。/实参对形参的数据传递。*/void main()void s(int n);/说明函数*/int n=100;/*定义实参 n,并初始化/s(n);/调用函数*/printf(”n_s=dn,n);/输出调用后实参的值,便于进行比较*/void s(int n)int i;printf(”n_x=%dn”,n);/*输出改变前形参的值*/for(i=n1;i=1;i-)n=n+i;/改变形参的值*/printf(”n_x=dn”,n);/*输出改变后形参的值/、说明:实参可以是常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。形参变量只有在被调用时,才分配内存单元;调用结束时,即刻释放所分配的内存单元。因此,形参只有在该函数内有效。调用结束,返回调用函数后,则不能再使用该形参变量。实参对形参的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参.实参和形参占用不同的内存单元,即使同名也互不影响。6、函数的嵌套调用和递归调用、函数的嵌套调用 指在执行被调用函数时,被调用函数又调用了其它函数。如图所示:-22-、函数的递归调用 函数的递归调用是指,一个函数在它的函数体内,直接或间接地调用它自身。练习 7_4 用递归函数解决猴子吃桃问题。问题描述如下:有一堆桃子不知其数,猴子每天吃前一天的一半多一个,到第十天只剩一个,试编程求这堆桃子的个数.解:设第 n 天的桃子数为 x(n),则根据题意可写出递归公式 1 (n=10)x(n)=(x(n+1)+1)2 (n10)据此可以写出递归函数.程序代码如下:#include stdio.h void main()int x(int n);printf(”第一天的桃子数为:%dn”,x(1);int x(int n)int total;if(n=10)total=1;else total=(x(n+1)+1)*2;return total;二、变量的作用域、局部变量与全局变量 变量的作用域是指变量在程序中的有效范围。C 语言中的变量,按作用域范围可分为两种:局部变量和全局变量。、局部变量(内部变量)在一个函数内部说明的变量是内部变量,它只在该函数范围内有效。只有在包含变量说明的函数内部,才能使用被说明的变量,在此函数之外就不能使用这些变量了。所以内部变量也称“局部变量。局部变量的作用域被限定在其所定义的局部范围中。、关于局部变量的作用域还要说明以下几点:主函数 mai

    注意事项

    本文(C语言复习提纲.pdf)为本站会员(l***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开