c语言国家二级 培训,国家计算机二级C语言培训教案.doc

本文详细介绍了C语言的基础知识,包括数据类型、运算符、流程控制和函数的使用。讲解了如何定义和使用整型、实型、字符型变量,以及如何进行输入输出操作。此外,文章还探讨了选择结构(如if-else语句)和循环结构(如for、while、do-while),强调了函数在程序设计中的重要性,以及如何通过函数实现模块化编程。内容涵盖了C语言的基本语法和编程技巧,旨在帮助初学者掌握C语言程序设计的基本技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

253b171540df25e1b84436cbe50dfc72.gif国家计算机二级C语言培训教案.doc

全国计算机等级考试(二级) C 语言程序设计课程 教 案 讲授人邹竞 2008 年 8 月 课程安排 日期 星 期 上课时 间 课程形 式 授课内容 备注 国家计算机二级C 语言程序设计教案 1 8 月 12 日 二 800 理论 第 1 章、第 2 章 8 月 12 日 二 1430 理论 第 3 章 顺序结构、 第 4 章 选择结构 布置习题 1 8 月 13 日 三 800 理论 第 5 章 循环结构 8 月 13 日 三 1430 上机 循环结构 习题 1 解答、 布置习题 2 8 月 14 日 四 800 理论 第 6 章 字符型数据 习题 2 解答 8 月 14 日 四 1430 理论 第 7 章 函数 布置习题 3 8 月 15 日 五 800 上机 循环结构、函数 习题 3 解答 8 月 15 日 五 1430 理论 第 8 章 地址和指针 布置习题 4 8 月 16 日 六 800 理论 第 9 章 数组 8 月 16 日 六 1430 上机 循环结构、函数 习题 4 解答、 布置习题 5 8 月 17 日 日 800 理论 第 9 章 数组、第 10 章 字符串 国家计算机二级C 语言程序设计教案 2 8 月 17 日 日 1430 理论 第 11 章 、 第 12 章 、 第 13 章 8 月 18 日 一 800 上机 指针、一维数组 习题 5 解答 8 月 18 日 一 1430 理论 第 14 章、第 15 章 、 第 16 章 布置习题 6 8 月 19 日 二 800 理论 公共基础知识 8 月 19 日 二 1430 上机 指针、一维数组 习题 6 解答、 布置习题 7 8 月 20 日 三 800 上机 二维数组 8 月 20 日 三 1430 上机 二维数组 8 月 21 日 四 800 上机 字符串 习题 7 解答 8 月 21 日 四 1430 上机 字符串 8 月 22 日 五 800 上机 字符串 8 月 22 日 五 1430 上机 结构体 国家计算机二级C 语言程序设计教案 3 8 月 23 日 六 800 上机 结构体、文件 9 月 4 日 四 1900 上机 填空题 9 月 7 日 日 1900 上机 改错题 9 月 8 日 一 1900 上机 设计题 9 月 9 日 二 1900 上机 综合练习、考试注意 事项 国家计算机二级C 语言程序设计教案 4 第一章 程序设计基本概念 一、程序和程序设计 1、程序 计算机程序是一组有限的指令序列。 它告诉计算机该做什么,怎么做。 2、程序设计 程序设计即通过程序设计语言将需要处理的对象和 对其处理的方法转化成计算机能够理解的指令。 3、程序设计语言 与计算机打交道就必须用计算机理解的语言。 所谓程 序设计语言是指具有一定的语法规则, 能够被计算机所理 解的一组符号的集合。 程序设计语言大致可分为三类 (1)机器语言 计算机的自然语言 ,由0和1组成的符号 序列表示指令。机器语言程序可以被计算机直接执行。 (2)汇编语言 用英文单词的缩写来表示指令, 与机器语言指令一一 对应。 执行时需要通过 汇编程序 转换为机器语言执行。 (3)高级语言 类似于人类的自然语言,一条语句可对应多条指令。 国家计算机二级C 语言程序设计教案 5 执行时可通过编译程序或者解释程序转换为机器 语言执行。 C 语言属于高级语言中的一种,由 C 语言直接编写的 代码称为 C 语言源程序 ,计算机无法直接执行,而必 须通过编译程序转换成为机器语言程序再由计算机执行, 即生成目标程序 。 C 语言源程序的后缀名为.c ,编译之后生成的目 标程序后缀名为.obj ,再由连接程序与库函数连接生 成后缀名为.的可执行文件,在 windows 中直接执 行。 4、C 程序开发过程 (1)确定数据结构。数据结构数据的组织形式。在 C 语言中,数据结构是通过数据类型的形式体现出来的。即将 需要处理的数据用 C 语言支持的形式表示。 (2)确定算法。算法求解的步骤地描述,也即操作的 具体步骤。将求解的步骤用特定的形式进行描述。 (3)编写程序代码。将算法转换成为 C 语言程序代码。 (4)编译连接,修改错误。通过编译器将 C 语言源程序 转换成为可执行的目标程序。C 语言编译器能够自动寻找 部分程序错误(主要是语法错误) ,提示错误原因及错误 国家计算机二级C 语言程序设计教案 6 位置。在这些错误未被改正之前,不会生成目标程序。 (5)运行,修改错误。部分错误编译器无法查出,但会 导致程序中断运行,称为运行时错误;有些程序能够正常 运行,但运行结果与期望的结果不符,称为逻辑错误。运 行时错误和逻辑错误出现时,都必须返回编辑源程序,修 改后再编译运行。 二、算法 1、算法的概念 算法即运算方法,是对问题求解步骤的描述。 一个问题有多种解决方法,即同一个问题可以设计多种 算法。 2、算法的特点 (1)有穷性对于任何合法输入,可在有穷的时间内, 通过有穷步骤得出结果。 (2)确定性每个步骤有确定的意义,对相同的输入 必须得到相同的结果。 (3)有效性每个步骤都应当有可能有效地被执行到, 并得到确定的结果。 (4)输入可以有 0 个或多个输入。 (5)输出可以有一个或多个输出。没有输出的算法 是没有意义的。 国家计算机二级C 语言程序设计教案 7 3、算法举例 例 1 求 012310 的和。 算法 1 step1sum0; step2sumsum1; step3sumsum2; step10sumsum9; step11sumsum10; step12输出 sum 的值; 该算法可以得出正确的结果,但步骤太繁琐。 算法 2 (设置累加器) step1sum0; step2add1; step3sumsumadd; step4addadd1; step5 判断 add 的值, 如果 addb Y N 输入 a 和 b 输出 a 输出 b 结束 国家计算机二级C 语言程序设计教案 10 whileadd void main int sum,add; sum0; add1; do sumsumadd; 国家计算机二级C 语言程序设计教案 12 addadd1; whileadd main int a,b; scanfd,d, ifab printf大的数是d,a; else printf大的数是d,b; (1)C 语言程序由函数构成 函数组成 C 语言程序的基本单位;C 程序中的函数分为 两种库函数和自定义函数。 库函数是预先编译好的、严格而高效的函数,C 语言中 的输入输出操作就是通过调用 scanf和 printf两个库函 数完成的。 国家计算机二级C 语言程序设计教案 13 (2)函数由函数首部和函数体构成 函数首部是函数的第一行,其格式为 函数类型 函数名 (参数类型 参数名, ) 例 int fun int x , int y 函数首部之后的内的部分称为函数体。 函数体包括声明部分和执行部分。 (3)程序从 main()函数开始执行 不管 main函数在程序中的位置如何, 一个 C 程序总是 从 main函数体的第一条语句开始执行, 到最后一条语句结 束。同一程序中其他函数的执行是通过函数的调用完成的。 (4)语句以分号结束 (5)程序书写自由 一行可以写多条语句;一条语句也可写在多行。 (6)程序中可以添加注释 /* */ 程序是写给计算机看的,而注释是写给程序员看的,以 增加程序的可读性。注释中的内容不会被计算机执行。 (7)C 语言区分大小写 (8)变量先声明再使用 2、C 语言程序的书写规则 (1)一个 C 程序中必须有且只能有一个 main()函数 国家计算机二级C 语言程序设计教案 14 (2)函数名后必须有一对小括号() (3)语句末尾必须有分号,预处理命令和函数首部后不能 有分号 (4)关键字和库函数名必须用小写 (5)标识符、关键字之间必须用间隔符或空格分开 (6)括号和引号必须成对出现 (7)声明部分必须在执行部分之前 (8)程序书写最好采用缩进格式 二、标识符、常量和变量 1、标识符 程序员为变量、数组、函数等取的名字,必须满足一定的规 则 由字母、数字和下划线组成;第一个字符不能为数字;区分 大小写。 (1)关键字 又称为保留字,是 C 语言中具有特定含义的单词,共 32 个。 (2)预定义标识符 C 语言中已有特殊含义的标识符,如库函数名等,但可 重新定义。 (3)用户标识符 国家计算机二级C 语言程序设计教案 15 不能与关键字相同,尽量不要与预定义标识符相同,应 当做到见名思意 。 2、常量 常量是指在程序运行过程中,其值不能被改变的量。 常量按照类型又可分为 整型常量、 实型常量、 字符常量、 字符串常量。 3、符号常量 符号常量即用一个标识符代替的常量。 其定义形式为 define 标识符 常量 如 define PI 3.14 define PRICE 40 程序中任何使用该常量的地方都可用指定标识符代替。 符号常量不同于变量,其值在程序运行过程中不能改变。 为与变量区分, 定义符号常量时, 标识符一般采用全大写。 使用符号常量的优点 (1)可提高程序的可读性; (2)一改全改,便于调试。 4、变量 国家计算机二级C 语言程序设计教案 16 变量即程序运行过程中,其值可以改变的量。 一个变量实际上对应一个存储单元,其有 4 个属性 (1)变量地址变量在内存中的实际地址; (2)变量名变量名就是区分这个单元的符号化的地址。 调用一个变量时,实际上就是通过该变量的变量名访问对 应的存储单元。 例如ab;即读取变量名为 b 的存储单元的值,然后写 入到变量名为 a 的存储单元中,变量 b 的值不变。 (3)变量类型确定了变量所占内存单元的大小和存储 方式; (4)变量的值变量所对应的内存单元中存放的数据。 变量的定义形式 类型 变量名; 变量必须先定义后使用,一次可定义多个变量。 变量的初始化 在定义变量的同时为其赋值,不可使用连等同时为多 个变量初始化。 数据类型 数据类型表现为数据为何种类型以及能对其进行何种操作。 程序中用到的所有数据都必须指明其类型。 数据类型 基本类型 字符型 整型 实型 枚举型 数组类型 双精度实型 单精度实型 国家计算机二级C 语言程序设计教案 17 三、整型数据 1、整型常量 整型常量即整常数,可用三种形式表示 (1)十进制整数。 如123,0,-123 等。 (2)八进制整数,以 0 作为前缀表示。 如037(31D) ,-010(-8D)等。 (3)十六进制整数,以 0X 或者 0 x 作为前缀表示。 如0 xF(15D) ,-0 x10(-16D)等。 当数值在-2 15215-1 范围内, 则表示为基本整型常量, 在内 存中用 2 个字节保存。 当数值在上述范围之外而在-2 31231-1 范围内, 则表示为长 整型常量,在内存中用 4 个字节保存。 整型常量默认为基本整型常量。如需表示一个长整型常 量,即用 4 个字节保存,可在其后添加 l 或者 L,如 15 为基 本整型常量,而 15L 表示长整型常量,其值相同,但前者在 国家计算机二级C 语言程序设计教案 18 内存中占据 2 个字节,而后者用 4 个字节保存。 2、整型变量 根据占用内存字节数的不同,整型变量又分为类 (1)基本整型(类型关键字为 int) 。 (2)短整型(类型关键字为 short int) 。 (3)长整型(类型关键字为 long int) 。 (4)无符号整型。无符号型又分为无符号基本整型 (unsigned int) 、无符号短整型(unsigned short) 和无符号长整型(unsigned long)三种,只能用来存储无 符号整数。 上述各类型整型变量占用的内存字节数,随系统而异。 在 VC6.0 中,一般用 4 字节表示一个 int 型变量,且 long 型(字节)int 型(4 字节)short 型(字节) 。 四、实型数据 1、实型常量 实型常量有两种表示形式 (1)十进制小数形式。 如1.0,0.03,-1.2345 等。 (2)指数形式。 如123e3,-4.567e-7 等。 国家计算机二级C 语言程序设计教案 19 实型常量默认为双精度实型常量,在内存中用 8 个字节保 存。如需表示为单精度实型常量,可在其后添加后缀 f 或者 F,在内存中占据 4 个字节,以加快计算机的处理速度。如 1.0表示一个双精度实型常量, 而1.0F表示单精度实型常量。 2、实型变量 实型变量分为单精度float、双精度double 。 单精度其类型说明符为 float 单精度说明符 双精度double 双精度说明符。在 VC 中单精度实型占 4个字节 (32位) 内存空间, 其数值范围为3.4E-383.4E38, 只能提供七位有效数字。双精度型占 8 个字节(64 位)内 存空间,其数值范围为 1.7E-3081.7E308,可提供 16 位 有效数字。 运算符和表达式 1、概念 (1)运算符 运算符是表示各种运算的符号。 按运算对象(操作数)的个数,运算符可分为单目、双 目和多目等三类。 (2)表达式 由操作数和运算符组成的符合C语言语法的式子称为表达 国家计算机二级C 语言程序设计教案 20 式。 如12 a 1.23 x (1)格式控制(如上例中ad,bc )包括在一对双 引号中,分为两个部分 1 格式说明由格式符组成的格式字符串,指定数据输 出的类型(如上例中d 和c) 。 2 普通字符将字符按原样输出。 (如上例中 a和,b) 格式控制部分中,除了格式说明之外的所有字符按原样输 出。 (2)输出项(如上例中 x 和 y) 列出需要输出的一个或多个常量、变量或表达式,各参数 之间用,隔开。 2、printf 函数中常用的格式说明 每一个格式说明通常以开头,以一个格式字符作为结 束,其中可包括宽度说明 、左对齐符号-等。 (1)格式字符 不同类型的数据必须使用不同的格式字符输出。常 用格式字符如下 1 c 格式符 按字符型数据输出。 2 d 或 i 格式符 国家计算机二级C 语言程序设计教案 30 按十进制整型数据输出。hd 表示按短整型输出,ld 表示按长整型输出。 3 o 格式符 按八进制整型数据输出。输出的八进制数不会带前 导 0。 如 8 输出 10,如 015 输出 15。 4 x 格式符 按十六进制整型数据输出。输出的十六进制数不带 前导 0 x。 如 22 输出 16,0 x12 输出 12,025 输出 15。 5 u 格式符 按无符号十进制整型数据输出。 6 f 格式符 按小数形式的实型数据输出。 7 e 格式符 按指数形式的实型数据输出。会自动转换成为格式化 指数形式, 小数部分位数默认为 6, 指数部分位数默认 为 3,不足在左端补 0。 如 12.3456 输出 1.234560e001 8 g 格式符 由系统决定是采用 f 还是 e 格式符输出,原则为宽 度最小。 国家计算机二级C 语言程序设计教案 31 9 s 格式符 输出一个字符串。 10p 格式符 输出变量的内存地址。 11 表示输出一个。 (2)宽度说明 1 可通过在格式符前加一个整型常量说明数据的输出 宽度,如指定宽度小于数据的实际宽度,则按实 际宽度输出;否则,按指定宽度输出,左补空格。 例int a12345; printfd,3d,7d,a,a,a; 输出12345,12345, 12345 2 对于输出实型数据的 f和e格式符, 可通过加 i.j 来控制输出宽度。i 指定输出数据的总宽度(f 包括小数点,e 包括 e 和符号) ;j 指定小数位 数。 如 j 小于实际位数,则按 j 位输出,最后一位 四舍五入;如 j 大于实际位数,则在最后补 0。 例double x12.3456; printff,3.3f,10.3f,10.5f,x,x,x 国家计算机二级C 语言程序设计教案 32 ,x; 输出12.3456,12.346, 12.346, 12.34560 printfe,3.3e,12.3e,18.8e,x,x,x ,x; 输出1.234560e001,1.235e001, 1.235e001, 1.23456000e001 3 也可只使用.j 指定小数部分宽度。.0 表示舍去 小数部分和小数点。 例 printf.3f,.2e,.0f,.0e,x,x,x,x; 输出12.346,1.23e001,12,1e001 4 使用 s 格式符输出字符串时,也可使用 i.j 形式 控制输出宽度。i 指定输出总宽度,j 指定输 出字符串的前 j 个字符。 例String sabcdef; printfs,2s,3.2s,8.4s,.3s,s,s, s,s,s; 输出abcdef,abcdef, ab, abcd,abc (3)左对齐符号 国家计算机二级C 语言程序设计教案 33 输出数据默认右对齐,可在和宽度之间加- 实现左对齐。 例int a123; printf-5d,5d,d,a,a,a; 输出123 , 123,123 (4)使用注意 1 格式说明的个数和类型应当与输出项一至,如格式 说明的个数少于输出项,则多余的输出项将不进 行输出;反之则会输出一些不确定值。 2 格式控制中,除了格式说明之外的所有字符都会照 原样输出。 二、数据输入 1、scanf 函数的一般调用形式 scanf函数是用来从外部输入设备向计算机主机输入 数据的。 一般格式 scanf格式控制, 输入项首地址表; 格式控制与 printf函数的相似, 但输入时格式控制部 分如果有普通字符,必须一起输入。 输入项首地址表由若干个输入项首地址组成,相邻 2 个输入项首地址之间,用逗号分开。 国家计算机二级C 语言程序设计教案 34 输入项首地址表中的地址,可以是变量的首地址,也可 以是字符数组名或指针变量。 变量首地址的表示方法 scanfddd, 输入可以为1 2 3 也可以为1 国家计算机二级C 语言程序设计教案 35 2 3 (2)指定输入宽度 可以指定数据的宽度,系统将按指定宽度读取数据。 例scanf3d2d4d, 如输入1234567890 则 a 为 123,b 为 45,c 为 6789 (3)跳过输入数据 可通过在和格式字符间加入*以跳过某个输入的数据。 例scanfd*ddd, 如输入1 2 3 4 则 a 为 1,b 为 3,c 为 4。 (4)格式控制中的普通字符输入 格式控制中除了格式说明之外,任何普通字符在输入时 必须按原样输入。 例scanfxd,yd,a,b; 则必须输入x1,y2 三、C 语言基本语句 1、流程控制语句 (1)选择语句 if条件 ;else ; 国家计算机二级C 语言程序设计教案 36 switch 语句 (2)循环语句 for条件 ; while条件 ; do while条件; (3)转移语句 break;中止执行 switch 语句或循环语句 continue;中止本次循环 return;从函数中返回控制权及返回值 goto;无条件跳转 2、表达式语句 由表达式加上 分号(; )构成的语句。 如a1; abc; i; xmaxa,b; 3、函数调用语句 调用函数,完成相应操作功能的语句。 如printfvery good; 4、空语句 不执行任何操作。 5、复合语句 国家计算机二级C 语言程序设计教案 37 用一对括起来的多条语句,可作为一条语句使 用,也称为语句块;其中可包含声明部分。 例如 xyz; abc; printfd d,x,a; 是一条复合语句。我们可以把它看成是一条语句。 注意复合语句内的各条语句都必须以分号; 结尾, 在括号外不能加分号。 第四章 选择结构 一、关系运算和逻辑运算 1、C 语言中的逻辑值 在 C 语言中,运算符的操作数以非 0 表示真 ,以 0 表示假 。表达式结果以 1 表示真 ,以 0 表示假 。 2、关系运算符和关系表达式 所谓关系运算实际上就是比较运算 ,即将两个 国家计算机二级C 语言程序设计教案 38 数据进行比较,判定两个数据是否符合给定的关系。 例如, a b中的表示一个大于关系运算。如 果 a 的值是 5,b 的值是 3,则大于关系运算的结果为 真 ,即条件成立;如果 a 的值是 2,b 的值是 3,则大于 关系运算的结果为假 ,即条件不成立。 (1)关系运算符 关系运算符的操作数可以是整型、字符型和实型,而结果是 整型(0 和 1) 。 C 语言提供 6 种关系运算符 大于, 大于或等于, 等于, 不等于 注意在语言中, 等于关系运算符是双等号 , 而不是单等号 (赋值运算符) 。 优先级 (1)在关系运算符中,前 4 个优先级相同,后 2 个也相 同,且前 4 个高于后 2 个。 (2)与其它种类运算符的优先级关系 关系运算符的优先级,低于算术运算符,但高于赋值运算 符。 (2)关系表达式 所谓关系表达式是指,用关系运算符将两个表达式连接 起来,进行关系运算的式子。 国家计算机二级C 语言程序设计教案 39 例如,下面的关系表达式都是合法的 ab, abc-d, a3b, ab bc 例如,假设 num13,num24,num35,则 (1)num1num2 的值0。 (2)num1num2num3 的值1。 (3)num10 printf“Please three numbers“; scanf“d,d,d“, if num1num2 maxnum1; 国家计算机二级C 语言程序设计教案 43 else maxnum2; if num3max maxnum3; printf“The three numbers ared,d,dn“,num1,num2,num3; printf“maxdn“,max; 程序运行情况如下 Please three numbers11,22,18 The three numbers are11,22,18 max22 本案例中的第 1 个 if 语句,可优化为如下不带 else 子句的 形式 maxnum1; ifnum2max maxnum2; 这种优化形式的基本思想是首先取一个数预置为 max(最 大值) ,然后再用 max 依次与其余的数逐个比较,如果发现 有比 max 大的, 就用它给 max 重新赋值, 比较完所有的数后, max 中的数就是最大值。这种方法,对从 3 个或 3 个以上的 国家计算机二级C 语言程序设计教案 44 数中找最大值的处理,非常有效。 案例 2输入任意三个数 num1、num2、num3,按从小到大的 顺序排序输出。 main int num1,num2,num3,temp; printf“Please three numbers“; scanf“d,d,d“, if num1num2 tempnum1;num1num2;num2temp; if num2num3 tempnum2;num2num3;num3temp; if num1num2 tempnum1;num1num2;num2temp; printf“Three umbers after sorted d,d,dn“,num1,num2,num3; 程序运行情况如下 Please three numbers11,22,18 Three numbers after sorted 11,18,22 案例 3 写一程序,从键盘上输入 1 年份 year(4 位十进制 数) ,判断其是否闰年。闰年的条件是能被 4 整除、但不 能被 100 整除,或者能被 400 整除。 算法设计要点 国家计算机二级C 语言程序设计教案 45 (1)如果能被整除,则余数为,即如果的值 等于,则表示能被整除 (2)首先将是否闰年的标志 leap 预置为 0(非闰年) ,这样 仅当 year 为闰年时将 leap 置为 1 即可。这种处理两种状态 值的方法,对优化算法和提高程序可读性非常有效,请读者 仔细体会。 参考程序如下 main int year,leap0; /* leap0预置为非闰年*/ printf“Please the year“; scanf“d“, if year 40 if year 100 0 leap1; else if year4000 leap1; if leap printf“d is a leap year.n“,year; else printf“d is not a leap year.n“,year; 利用逻辑运算能描述复杂条件的特点,可将上述程序优化如 下 main 国家计算机二级C 语言程序设计教案 46 int year; printf“Please the year“; scanf“d“, if year40 else printf“d is not a leap year.n“,year; 5、if 语句使用说明 (1)if 后面的表达式 ,除常见的关系表达式或逻辑表 达式外,也允许是其它类型的数据,如整型、实型、字符型 等。 (2)if 语句允许嵌套,但嵌套的层数不宜太多。在实际 编程时,应适当控制嵌套层数23 层。 (3) 语句组 1和语句组 2 ,可以只包含一个简单语 句,也可以是复合语句。 务必牢记不管是简单语句,还是复合语句中的各个语句, 每个语句后面的分号必不可少 例如,案例 1中的 if num1num2 maxnum1; 国家计算机二级C 语言程序设计教案 47 else maxnum2;语句 if 行后面的赋值语句maxnum1;分号不能省略。但不要 误认为 if 和 else 是 2 个独立的语句,它们都属于 if 语句 中的一部分,else 是 if 语句的子句。 三、条件表达式 1一般格式 表达式 1表达式 2表达式 3 条件表达式中的表达式 1 、 表达式 2 、 表达式 3 的类型,可以各不相同。 2运算规则 如果表达式 1的值为非 0即逻辑真, 则运算结果 等于表达式 2的值;否则,运算结果等于表达式 3 的值。 3运算符的优先级与结合性 条件运算符的优先级,高于赋值运算符,但低于关系运 算符和算术运算符。其结合性为从右到左 (即右结合性) 。 案例 4 从键盘上输入一个字符,如果它是大写字母,则把 它转换成小写字母输出;否则,直接输出。 main 国家计算机二级C 语言程序设计教案 48 char ch; printf“ a character “; scanf“c“, chchA x; goto A; 所有使用了 goto 语句的程序都能改写成不带 goto 语句 的程序,由于 goto 语句过多会使程序难以理解和维护,所 国家计算机二级C 语言程序设计教案 59 以尽量少使用 goto 语句。 六、几种循环结构的比较 C 语言中,三种循环结构(不考虑用 if/goto 构成的循 环)都可以用来处理同一个问题,但在具体使用时存在一些 细微的差别。如果不考虑可读性,一般情况下它们可以相互 代替。 1循环变量初始化while 和 do-while 循环,循环变 量初始化应该在 while 和 do-while 语句之前完成;而 for 循环,循环变量的初始化可以在表达式 1 中完成。 2循环条件while 和 do-while 循环只在 while 后面 指定循环条件;而 for 循环可以在表达式 2 中指定。 3循环变量修改使循环趋向结束while 和 do-while 循环要在循环体内包含使循环趋于结束的操作;for 循环可 以在表达式 3 中完成。 4for 循环可以省略循环体, 将部分操作放到表达式 2, 表达式 3 中,for 语句功能强大。 5while 和 for 循环先测试表达式,后执行循环体,而 do-while 是先执行循环体, 再判断表达式。 (所以 while,for 循环是典型的当型循环,而 do-while 循环可以看作是直到 型循环) 。 6三种基本循环结构一般可以相互替代,不能说哪种更加 国家计算机二级C 语言程序设计教案 60 优越。具体使用哪一种结构依赖于程序的可读性和程序设计 者个人程序设计的风格(偏好) 。我们应当尽量选择恰当的 循环结构,使程序更加容易理解。 (尽管 for 循环功能强大, 但是并不是在任何场合都可以不分条件使用) 。 七、程序举例 例题 1一球从 100 米高度自由落下,每次落地后反跳回原 高度的一半;再落下,求它在第 10 次落地时,共经过多少 米第 10 次反弹多高 图 1 1、程序分析本题主要考察循环的使用。 设高度为 n100,经过距离为 s100 第一次反弹前经过 100 米 每一次循环需要完成的工作有 (1)求反弹的高度。高度为前一次高度的一半,即 nn/2 (2)求经过距离。除第一次外,距离为ssn*2 国家计算机二级C 语言程序设计教案 61 循环次数为 10 次。 2、算法流程图如下 3、程序源代码如下 include main double n100,s100; int i; fori1;i main int i; double a2,b1,s2.0/1,t; fori2;iB等。 字符数据与其它数据混合运算时,会转换成为 int 再运 算。 字符数据在内存中用一个字节保存,其表示范围为 国家计算机二级C 语言程序设计教案 68 -128127, 对字符变量赋值时, 超出范围会出现错误。 如 char ch160; ch 的值为-96 二、字符变量 字符变量的类型关键字为 char, 一般占用 1 字节内存单 元。 字符变量用来存储字符常量。将一个字符常量存储到一个字 符变量中,实际上是将该字符的 ASCII 码值(无符号整数) 存储到内存单元中。 三、字符输入输出 1、调用 printf 和 scanf 输入输出字符 字符数据的格式说明符是 c 格式符。 (1)printf c 格式符中可指定宽度,如5c。 (2)scanf 1 如格式符形式为c c 则输入数据之间不能以为间隔符,否则空格会作为字符 读入。 2 如格式符形式为c c 输入数据间必须有 1 个以上空格, 多个空格当作一个空格 处理。 国家计算机二级C 语言程序设计教案 69 例输入 abc,则 a 和 c 会被读入。 3 格式符中规定数据宽度,如3c3c 则指定宽度内第一个字符被读入。 例输入 abcdef, 则 a 和 d 被读入。 4 当包含其他格式符时,如dcdc 则根据类型读取数据 例输入 1a 2 b 则读入的数据为 1 a 2 输入 1.23a 2b 则读入的数据为 1 . 23 a 2、调用 putchar 和 getchar 输入输出字符 (1)字符输出函数putchar putchar函数的格式 putcharch; 其中 ch 可以是一个字符变量或常量,也可以是一个转义 字符。 putchar函数的作用向终端输出一个字符。 1 putchar函数只能用于单个字符的输出,且一次只 能输出一个字符。另外,从功能角度来看,printf函数可 以完全代替 putchar函数。 2 在程序中使用 putchar函数,务必牢记在程序(或 文件)的开头加上编译预处理命令(也称包含命令) ,即 include “stdio.h“ 国家计算机二级C 语言程序设计教案 70 (2)字符输入函数getchar getchar函数的格式getchar; getchar函数的作用 从系统隐含的输入设备(如键盘) 输入一个字符。另外,从功能角度来看,scanf函数可以 完全代替 getchar函数。 1 getchar函数只能用于单个字符的输入,一次输入一 个字符。 2 程序中要使用 getchar函数,必须在程序(或文件) 的开头加上编译预处理命令。 四、程序举例 1、统计输入字符中的元音字母个数,以 结束。 2、教材例 6.5 第 7 章 函数 一、 函数概述 1、函数的概念 函数是可被多次调用、用以实现一个特定功能的程序模 国家计算机二级C 语言程序设计教案 71 块。 2、函数的一般意义 在软件设计和程序编制中使用函数可以有效地改善软件 质量评价的两大重要指标可维护性和可重用性 使用函数可以遵循自顶向下、逐步求精的结构化程 序设计思想,把一个较大或复杂的问题分解成若干较小且较 易解决的问题,继而各个击破、分而治之,实现对复杂问题 的求解。使用函数作为程序的基本模块单位,将一个较复杂 的应用程序分解成若干功能较单一的程序模块即函数并 加以实现,有利于实现程序的模块化,使程序设计变得简单 和直观, 改善程序的可理解性和可修改性,从而改善软件的 可维护性; 把程序中经常用到的一些计算或操作编成通用函数以 供随时调用,可以大大减轻代码编制的工作量,有效地改善 软件的可重用性。 3、函数在 C 语言程序中的特殊意义 函数是 C 语言程序的基本组成单位。C 语言程序的每个 模块都是函数,编写 C 语言程序就是编写一个个函数。 一个 C 语言程序由一个主函数和若干个函数构成。 合理组织函数有利于提高 C 语言程序的开发效率。 一个 C 程序由一个或多个源程序文件组成,这些源程序文件可分 国家计算机二级C 语言程序设计教案 72 别编写、编译和凋试。 C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值