已阅读5页,还剩128页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级语言程序设计 一 cprogramming c程序设计基础 2 参考书 参考书 c程序设计语言 b w kernighan d m ritchie 机械工业出版社 徐宝文等译 从问题到程序 程序设计与c语言引论 裘宗燕编著 机械工业出版社 c语言教程 孙玉芳 孟庆昌编著 c程序设计基础 3 作业 答疑及考试 网址 周四下午七八节 2 14周 实验楼705 c程序设计基础 4 作业要求及考核 必须在规定时间内提交 一定要按照题目要求提交 比如 输入 输出数据格式 必须完全一致 提交文件名称等等 严禁抄袭 考核方式 作业占10 期中占30 期末占60 c程序设计基础 5 课程大纲 上课学时 241 15周实验学时 24先修课程 计算机导论课程目标 在40 60分钟内编写并调试通过 能正确运行 一般在40 50行有效代码以内的程序 c程序设计基础 6 学习方法 培养自学能力 课前预习 课堂积极思考课后上机 先实验 课堂讲的知识点 程序后作业掌握程序设计的唯一途径 70 80学时 上机实践 实验 编程 try 相当一部分同学建立程序设计思路的过程比较慢 程序设计风格差 解决问题的速度慢 难以建立比较好的编程模式 放弃较难的知识点 高级语言程序设计 一 往届学生存在的问题 通过调查具有上述问题的同学发现 大多数同学具有学习的欲望 课题上能够认真听讲 也基本上能够听懂 课下能够保证足够的时间去做作业 高级语言程序设计 一 问题的原因 高级语言程序设计 一 实践性强 高级语言程序设计 一 实践性强 程序实验环节 高级语言程序设计 一 cprogramming 第一讲 c语言基础 一 c程序设计基础 12 本章目标 了解c语言的历史及现状 初步了解c程序的结构 掌握简单的标准输入 输出 知道在某个操作系统环境下 windows 一个c程序的编写过程 掌握变量 常量 简单数据类型 类型转换 表达式及常用的c语言运算符 掌握运算符优先级及结合律 掌握选择 循环等控制结构 掌握程序测试和调试方法 c程序设计基础 13 为什么要学c程序设计 c语言仍是目前广泛使用的编程语言 主要特点 表达能力强 支持结构化程序设计 语言简洁 代码效率高 c编写的程序仅比用汇编语言编写的程序相差20 可移植性好 特别适合编写操作系统 编译程序 数据库系统 嵌入式软件及图形 图象处理等对性能要求高的软件 c语言是目前广泛流行的面向对象语言c c 及java的基础 c程序设计基础 14 c语言历史 c语言的产生与unix操作系统是密不可分的 unix由belllab的k thompson和d m ritchie最先在1969年开发的o s 它的前身是mit和ae开发的multies 1970年 v1 v2版在pdp 7机上用汇编语言实现1971年v3pdp11 23 1972年v4pdp11 451972年 d m ritchie开发出新语言c c b bcpl cpl单数据型语言 1973年 ritchie和thompson用c改写了unix核心 90 即v5 c程序设计基础 15 c语言历史 续 c语言的发展经历三个阶段 第一阶段 78年以前 c称为unixc 即c被看成unix的一部分 第二阶段 78年d ritchie的 c程序设计语言 出版到88年ansic 标准c 标准出现 此c又称为k rc 第三阶段 88年ansic标准 89年3月批准 cpl1968c strachey 小测试 本课程的名称 a c语言b c语言程序设计c 高级程序设计语言d 高级语言程序设计 c程序设计基础 16 c程序设计基础 17 一个简单的c程序 在屏幕上显示一行正文 例 file hello c includemain printf hello world n include为一条预处理指令 当程序中用到输入 输出函数时 应在文件开始处加上该指令 main为一函数名 由 括起来的部分为函数体 函数名为一标识符 printf为一条输出语句 在c语言中分号 为语句的结束符 printf为标准i o库中标准输出函数 为一字符串常量 n为c语言转义字符 表示回车 为注释 不可嵌套 例 更标准的格式 file hello c includeintmain printf hello world n return0 c程序设计基础 18 c程序结构 一个c程序由一系列外部说明和函数组成 一个c程序可由一个或多个函数组成 但其中必有一个 也只能有一个 命名为main 主函数 其它函数可由用户任取名字 程序运行时必须从main开始 但main函数在程序中的前后位置没有关系 一个函数由局部变量说明及语句序列组成 组成c程序的各个函数可在一个源文件上 也可以分放在多个文件上 函数不能跨文件 每个源文件可单独编译 c源文件必须以 c作后缀 h为c程序的头文件 19 c程序的编辑 编译和运行 开始 c程序设计基础 20 在windows下使用vc编写及运行c程序 c程序设计基础 21 项目名 程序存储位置 注意 不要使用默认的存储位置 否则很难找到写的程序 console模式 c程序设计基础 22 c程序设计基础 23 c程序设计基础 24 给出c源文件名 c程序设计基础 25 编辑c程序 c程序设计基础 26 c程序设计基础 27 编译compile 编译及连接build 编译及连接信息 运行execute c程序设计基础 28 运行结果 显示在控制台窗口内 实验 上述步骤需要多作几次练习 1 在不同位置创建项目 2 查看创建后自动生成几个文件 3 试着修改显示的文字 c程序设计基础 29 在unix linux 下编写及运行一个c程序 cc o执行文件名 c 文件名o 指定执行文件名 缺省为a outc 产生 o文件如 s1 c s2 cs3 c组成一个c程序 则有 cc cs1 ccc cs2 ccc oss1 os2 os3 c c程序设计基础 30 程序设计与程序设计语言 程序设计语言 programminglanguage 用来表达程序的计算机能够执行的人工语言 如 fortran c c java c 等 程序设计 programming 为计算机解决问题所需的分析 设计 编写及调试程序过程 theprocessofplanning writing testing andcorrectingthestepsrequiredforacomputertosolveaproblemorperformanoperation c程序设计基础 31 另一个简单的c程序 整数求和 int为整数数据类型说明符 其为一个关键字 a b c sum为变量 其为标识符 例 includeintmain c1 2 c inta b c sum a 1 b 2 scanf d a 1 为赋值语句 其中1为数字常量 为赋值运算符 scanf为标准输入函数 在此从键盘上读入一个整数存入变量c中 在此 printf将变量sum内容显示到屏幕上 为算术运算符 return返回一个值给操作系统 通常程序正常结束返回一个0值 c程序设计基础 32 标识符 在c语言中标识符定义为 由字母 或 开头的字母 或 数字串 标识符在c语言中可作为变量名 常量名 函数名 参数名 类型名 枚举名和标号等 c程序设计基础 33 判断下面哪些是非法的标识符 beijingc programminga86738a673 1024sin 25 numnum of stdudenta 1 c程序设计基础 34 c语言对字母大小写敏感 namenamename是互不相同的3个标识符 c程序设计基础 35 关键字 intautogotoiffloatstaticreturnelsecharexternbreakwhileshortregistercontinueforlongdounsignedswitchdoublecasestructdefaultunionvoidenumtypedefsizeofconstsigned 已经被系统使用的标识符 具有预先定义好的特殊意义 不能作为普通名字 c程序设计基础 36 define undef include ifdef ifndef endif 及line 虽不是关键字 但是最好把它们看作关键字 它们主要用于c预处理程序中 关键字 续 c程序设计基础 37 数据类型 注意 在c语言中 没有bool 布尔 类型 它用非0值表示真 true 用0表示假 false 整型短整型长整型无符号整型单精度浮点型双精度浮点型字符型 c程序设计基础 38 变量与变量说明 用来存储程序运行中的数据 在c中 所有变量必须先说明 定义 后使用 说明方式 存贮类型 数据类型变量 列 表 例 intlower upper step charc line 100 doublex doublepi 3 1415926 c程序设计基础 39 变量属性 doublesalary 1500 23 变量的类型 变量的名字 变量的值 变量的存储位置 地址 例如 0 x00222000 c程序设计基础 40 变量赋值 c语言用赋值运算符为变量赋值 赋值运算符用等于符号 表示 doubler r 3 2 doubler 3 2 赋值语句 变量的初始化 c程序设计基础 41 常量 文字量 字面量 1 整型常量 缺省为int类型 十进制 八进制 十六进制 long整型常量 2 浮点常量 缺省是double类型 如 23 153 8e 3 125e 46 7f c程序设计基础 42 3 字符常量 char类型 用一对单引号括起来单个字符称为字符常量 如 a b 一个字符常量的值是该字符在机器字符集 通常是ascii字符集 中的编码值 它是一个整数值 如上 在ascii字符集中 a 的值为65 b 的值为98 的值为63 转义字符 c程序设计基础 43 4 字符串常量 用一对双引号括起来的字符串称为字符串常量 如 thecprogramminglanguage 注意 所有字符串均以 0 结束 编码值为0的字符 因此 x 和 x 不同 末尾的 0 由编译程序自动添加 x x 字符串中可以有转移字符 printf welcome nto nbeijing n c程序设计基础 44 简单的c程序 整数求和 例 includemain c1 2 c inta b c sum a 1 b 2 scanf d c程序设计基础 45 标准输入 标准输出 标准输入 stdin 通常指键盘标准输出 stdout 通常指显示器在windows等图形界面的操作系统中 输入 输出信息一般被显示在一个窗口中 在vc的console编程模式下 显示标准输入 输出信息的窗口为控制台窗口 c程序设计基础 46 标准输出函数 printf 格式描述串 其他参数1 其他参数k 格式描述串是一字符串 其中的转换控制字符 以 开始 决定了其他参数的输出格式和个数 其它字符原样输出 c程序设计基础 47 例 doublex 3 5 doubley 4 5 doublesum sum x y printf sum f sum printf f n f n f x y sum 在控制字符前还可以加数字 如 4d 输出最小域宽为4个字符的整数 6 2f 输出最小域宽为6个字符的浮点数 并且小数点占两位 标准输入 输出 常见问题 续 输出域宽和实际输出长度 输入格式 6 2f输出数据 3 14159 屏幕显示 域宽为六个字符 输出数据若小于输出域宽 则右对齐输出 其它部分填空格 若输出数据长度多于给定域宽 则按实际数据输出 c程序设计基础 49 标准输入函数 scanf 格式描述串 其他参数1 其他参数k 格式描述串是一字符串 其中的转换控制字符 以 开始 决定了其他参数的个数和输出格式 其它字符要必须原样输入 c程序设计基础 50 例 输入一整数 intn scanf d 若不带 程序崩溃 标准输入 输出 常见问题 如何输出多个数据 intx 2 inty 3 printf d d d x y x y 输出结果 2 3 5 如何输入多个数据 intn floatr scanf d f 输入多个数据时 用空格或回车换行分隔这些数据 但在格式字符串中不用给出空格或回车换行符 实验 c程序设计基础 52 标准输入 输出 常见问题 floatr scanf r f 必须原样输入非转换字符 doubler scanf r f scanf r lf 一个输入例子 r 3 14 3 14将被读入到变量r中 doubler scanf r lf 标准输入 输出 常见问题 续 输入格式控制串末尾含有空白字符 如空格或 n 例 inta b scanf d d n whathappened 回车换行符无法读入 建议格式串的末尾不要有 n或空格符 实验 实验一 练习程序的编辑 编译 运行过程 实验二 实验前面所有的程序 实验三 下面的输出会出现什么情况 inta 5 doubleb 2 5 printf f a printf d b c程序设计基础 54 c程序设计基础 55 一个例子 计算圆的面积及周长 例 includemain doubleradius area perimeter scanf lf c程序设计基础 56 表达式与运算符 在c语言中 由运算符 operators 及运算对象 operands 构成的式子称为表达式 expression 如 x y z在c语言中 一个表达式后跟一个分号可构成一条语句 称为表达式语句如 a b c n 5 x c程序设计基础 57 算术运算符 算术运算符 在算术运算时 注意整除问题 如 doublef f 3 2 f f值为1 0而不是1 5 若要f为1 5 则应写为 f double 3 2 或者 f 3 0 2 f 3 2 0 实验 98 10 898 10 9 c程序设计基础 58 类型转换 c语言类型转换通常是自动的 隐式 自动 类型转换 如果一个运算符 有不同类型的运算对象 那么 较低 类型会自动转换成 较高 类型 1 自动转换方向 如 n 1 5结果将为double类型 赋值运算符右边表达式的类型会自动转换为赋值运算符左边变量类型 如 intx x 2 5 函数调用的自动类型转换 类型转换 续 实验 c程序设计基础 60 类型转换 续 强制类型转换 cast 显式类型转换 如 intx x double 5 2 发生了几次类型转换 一元运算符 优先级高于二元运算符 3次 实验 c程序设计基础 61 类型转换 续 不同数据类型之间的转换1 浮点数与整数的相互转换 2 无符号整数与整数的相互转换 一般整数 int 和无符号整数 unsigned 混合使用 则简单整数转换成无符号整数 3 字符与整数的相互转换 可以用整数的地方就可以用字符 而整数转换成字符时 超出8位就将高位丢掉 实验 字符与整数 注意 1 字符实际上是一特殊的整型 因此字符经常与整型进行混合运算 charch a intx ch 1 2 字符的ascii编码规则 a z a z 0 9 都是依次按照升序编码的 例如 a 编码为 97 b 编码为 98 z 编码为 122 a 编码为 65 b 编码为 66 z 编码为 90 0 编码为 48 9 编码为 57 区分 1 1 字符与整数 举例 问题描述 从标准输入读入一字母 输出其对应的ascii值 输入样例 b输出样例 98 问题分析 输入 大写或小写字母输入的若不是字母 怎么办 输出 对应的ascii值 charch 题目没说明 不考虑 intascii 字符与整数 举例 includeintmain charch intascii scanf c includeintmain charch scanf c 实验 c程序设计基础 65 增 减 量运算符 增 减 量运算符 依据运算符与运算对象间的位置 分为前置和后置运算前置运算是先进行增减量 再取其值 后置运算是先取其值 再进行增减量运算 如 n 5 n 5 x n x n 结果 结果 x 6 n 6 x 5 n 6 像 这类只要求一个运算对象的运算符又称为单目运算符 unaryoperators 运算符在有些书中称为自增 减 运算符 实验 c程序设计基础 66 赋值运算符 赋值运算符 结合律 右结合 c程序设计基础 67 赋值运算符 续 赋值运算符优点 表达式简明扼要 如 bfreelist frow b back 2 编译程序产生效率高 其用一个运算符完成其它语言中须多个运算符才能完成的功能 如 x n只有一个运算符 而x x n则有两个运算符 注意 y n 1 等价于y y n 1 而不是y y n 1 c程序设计基础 68 运算符优先级及结合律 c程序设计基础 69 运算符优先级及结合律 续 可以使用 运算符来改变表达式中运算符的计算次序 如 x y 12if x n 0 while c getchar eof 风格建议 在由多个运算符组成的表达式中应使用 来明确计算次序 这样更加清晰 可读性好 不易出错 例如 a b c 与a b c 问题1 1 问题描述 判断某学生成绩是否及格 大于等于60为及格 否则不及格 输入形式 从控制台 或标准输入 键盘 输入一个整数 表示学生成绩 输出形式 在屏幕 或标准输出 上输出pass或fail 分别表示及格 不及格 样例1 输入样例 36输出样例 fail样例2 输入样例 80输出样例 pass样例说明 从键盘输入成绩36 输出fail表示不及格 从键盘输入80 输出pass表示及格 问题1 1 问题分析 输入 学生成绩 类型 整型 功能 学生成绩值与60进行比较 大于或等于60则及格 否则不及格 输出 字符串 pass 或 fail 问题1 1 解题步骤 解决问题1 1的步骤可描述为 读入学生成绩值如果该成绩值大于或等于60输出信息 pass 否则输出信息 fail 解题步骤表示 解题步骤即可以用自然语言表述 如前 也可用用半结构化语言表示 如 read学生成绩值if成绩值 60print pass elseprint fail 条件 关系运算符及逻辑运算符 关系运算符 逻辑运算符 注意 在c语言中 没有bool 布尔 类型 它用非0值表示真 true 用0表示假 false 因此 在c中 任何一个表达式都可用为条件 关系和逻辑表达式的值为 1 真 或0 假 a b若公式a为0 则公式b不必求值 结果一定为0 a b若公式a为非0 则公式b不必求值 结果一定为非0 例如 5 3 x 5 2 3 x 7 条件 续 一些常见的条件例子 判断整形变量n的值为一个0到10之间的值 0 n n 10 判断字符变量c是字母 a c c z a c c z 判断某年是平年还是闰年 闰年为能被4整除但不能被100整除 或能被400整除 y 4 0 y 100 0 y 400 0 注意 条件表达式 0 n 10 不能得到预期结果 实验 选择结构 if语句 if 表达式 语句if 表达式 语句1else语句2 任何一个表达式都可用为条件 表达式的值为0表示假 非0表示真 选择结构 if语句 续 例 if a b max a elsemax b if a b max a min b if a b max a min b 实验 称为 复合语句 选择结构 if语句 续 注意 在if嵌套中 省略else会产生二义性 如 if score 60 if score 80 n elsem 即else与前面最接近的不带else的if相对应 若要使上面的else与第一个if相匹配 可使用 如 if score 60 if score 80 n elsem 实验 问题1 1 代码实现与测试 根据其算法描述 我们很容易将问题 判断学生成绩是否及格 的解决转换为相应的程序 程序设计的常用方法为首先给出问题的解题步骤 算法 然后将其编程序实现 如何判断程序解决了相应问题 可用下面输入数据来测试 检验 75 输出应为 pass 30 输出应为 fail 60 输出应为 pass 特殊数据 需要一个整型变量存储成绩值 数据结构 实验 条件运算符 与条件表达式 条件运算符 三目运算符 条件表达式 先计算表达式1 若其值为非零 则整个表达式结果为表达式2的值 否则就为表达式3的值 例 计算a和b的最大值if a b z a elsez b 等价于 z a b a b 例1 1a 判断学生成绩是否及格 includemain intscore scanf d 实验 问题1 2 问题 判断某学生成绩对应的五级评分成绩 问题分析 输入 学生成绩 类型 整型 输出 a 优 b 良 c 中 d 及格 e 不及格 处理 学生成绩值分别与90 80 70 60进行比较 以判断其为优 良 中 及格和不及格中哪一等级 问题1 2 解题步骤 解决该问题的步骤如下 读取学生成绩值如果该成绩值大于或等于90输出信息 优 否则如果该成绩值大于或等于80输出信息 良 否则如果该成绩值大于或等于70输出信息 中 否则如果该成绩值大于或等于60输出信息 及格 否则输出信息 不及格 变量定义 需要一个整型变量用于存放输入的学生成绩 问题1 2 代码实现与测试 读取学生成绩值如果该成绩值大于或等于90输出信息 优 否则如果该成绩值大于或等于80输出信息 良 否则如果该成绩值大于或等于70输出信息 中 否则如果该成绩值大于或等于60输出信息 及格 否则输出信息 不及格 步骤 例1 2 判断学生成绩对应的五级评分 includemain intscore scanf d 嵌套if结构 测试数据为 959085807570656055 实验 多路选择 if elseif 例1 2a 判断学生成绩对应的五级评分 includemain intscore scanf d 一种更好的风格 实验 多路选择 if elseif 续 注意 不当的判断顺序可能造成程序错误的执行结果 如 includemain intscore scanf d 下面程序功能与1 2a相同 但效率要低 includeintmain intscore scanf d 实验 程序员常犯如下三类语法错误使用未定义变量名 遗漏语句结束符 遗漏块语句结束符 下面通过示例来说明如何利用编译信息判断及定位语法错误 程序设计实践 编译 语法 错误及定位 在vc下 编译错误提示信息为 errorc2065 xxx undeclaredidentifier 在vc下 编译错误提示信息为 errorc2146 syntaxerror missing beforeidentifier printf 如 遗漏最后函数结束符 在vc下 编译错误提示信息为 fatalerrorc1004 unexpectedendoffilefound 程序设计实践 编译 语法 错误及定位 续 编译结果 程序设计实践 编译 语法 错误及定位 续 光标定位到错误行 然后根据英文错误提示修改错误 双击某个错误信息 遗漏分号错误 程序设计实践 编译 语法 错误及定位 续 标识符未定义错误 程序设计实践 编译 语法 错误及定位 续 错误信息提示并不完全准确 所以不能完全依赖信息提示 遗漏花括号错误 问题1 3 问题 从n个整数中找到最小的整数并输出 输入形式 先从控制台输入整数个数 然后在下一行上输入整数 以空格隔开 输出形式 向控制台输出最小的整数 样例输入 58956 120128样例输出 12 设整数个数为n 设最小整数为x 设当前读入的整数为data 读入data 若x大于datax data 若没有结束 则 否则 输出x 问题1 3 解题步骤细化 设整数个数为n 设最小整数为x 设当前读入的整数为data 读入data 若x大于datax data 若没有结束 则 否则 输出x 设整数个数为n 设最小整数为x 设当前读入的整数为data 设计数器m 表示已经读入的整数个数 m初始化为0 读取n x初始化为读入的第一个整数 如果m n 读入data 若x大于datax data m 否则 输出x c程序设计基础 93 c程序设计基础 93 设整数个数为n 设最小整数为x 设当前读入的整数为data 设已经读入m个整数 m初始化为0 读取n x初始化为读入的第一个整数 如果m n 读入data 若x大于datax data m 否则 输出x 设整数个数为n 设最小整数为x 设当前读入的整数为data 设已经读入m个整数 m初始化为0 读取n 读取第一个data 并赋给x m 如果m n 读入data 若x大于datax data m 否则 输出x 问题1 3 解题步骤继续细化 方法1 c程序设计基础 94 设整数个数为n 设最小整数为x 设当前读入的整数为data 设已经读入m个整数 m初始化为0 读取n x初始化为读入的第一个整数 如果m n 读入data 若x大于datax data m 否则 输出x 设整数个数为n 设最小整数为x 设当前读入的整数为data 设已经读入m个整数 m初始化为0 读取n 如果m n 读入data 若m 0 则 x data 若x大于datax data m 否则 输出x 问题1 3 解题步骤继续细化 方法2 循环结构 while语句 while 表达式 语句 简单语句或复合语句 可以是任何表达式 一般情况下是关系表达式 问题1 3 代码实现 includemain intm n data x m 0 scanf d while循环语句 设整数个数为n 设最小整数为x 设当前读入的整数为data 设已经读入m个整数 m初始化为0 读取n 如果m n 读入data 若m 0 则 x data 若x大于datax data m 否则 输出x 实验 思考 若if判断改为下述语句是否可以 if x data m 0 循环结构 while语句 续 例 从键盘读入字符后输出 并最后输出读入字符的个数 输入样例 hello welcome 输出样例 hello welcome 16 步骤分析 计数器初始化为0读入一个字符输出最新读入的字符计数器加1 若没有结束若结束输出计数器结果 字符输入函数 intgetchar 从标准输入读入并返回一字符 intch ch getchar 通常定义一整型变量保存输入的字符 字符输出函数 putchar intch 例 putchar a intch ch getchar putchar ch 向标准输出设备以字符形式输出ch 遇到结束时返回eof eof是标准库中定义的符号常量 一般为 1 在新的一行输入ctrl z后打回车键表示输入结束 循环结构 while语句 续 例 从键盘读入字符后输出 并输出读入字符的个数 includemain intch n 0 ch getchar while ch eof putchar ch n ch getchar printf n d n includemain intch n 0 while ch getchar eof putchar ch n printf n d n 1 程序如何结束 ctr z2 为何程序运行 hellohello 实验 解题步骤 计数器初始化为0读入一个字符ch ch不等于eof 输出最新读入的字符 计数器增1 读入下一个字符 否则 输出计数器 解题步骤 计数器初始化为0读入一个字符输出最新读入的字符计数器加1 若没有结束若结束输出计数器结果 多输出了一个结束符 循环结构 for语句 for 表达式1 表达式2 表达式3 语句其等价于 表达式1 while 表达式2 语句 表达式3 通常用来初始化循环变量 循环的终止条件 通常根据循环变量是否满足某个条件来终止循环 通常用来改变循环变量 循环结构 for语句 续 例1 3a includemain intm n data x scanf d 循环变量 includemain intm n data x m 0 scanf d 实验 循环结构 for语句 续 for特别适合于循环次数固定或有固定步长的循环 如下面是一个循环十次的循环 for i 0 i 10 i 当然也可以用于其它方面 循环结构 for语句 续 注意 从语法上讲 表达式中任一个都允许省略 但分号不能省 如 for c getchar eof 语句s for 语句s 当表达式2不出现时 则认为条件为真 循环永远下去 无穷循环 因此 while a b 等价于for a b 实验 例 输入m 求的结果并输出 问题分析 输入 输入整数m处理 从1到m依次求出每个数的平方并相加输出 平方和的结果 解题步骤 1 输入上限值m 2 初始化变量n和sum 3 若n小于等于m 3 1求n的平方并累加到sum 3 2n增1 4 输出结果sum includemain intm n sum scanf d 解题步骤 1 输入上限值m 2 初始化变量n和sum 3 若n小于等于m 3 1求n的平方并累加到sum 3 2n增1 4 输出结果sum includemain intm n sum scanf d includemain intm n sum scanf d 实验 c程序设计基础 109 循环结构 do while语句 do语句while 表达式 作用类似于while 但do while是否终止 其判定条件是在循环体之后 即它总是先执行一次循环体 再判断表达式的值是否为真 c程序设计基础 110 循环结构 do while语句 续 总的说来 while for 循环是在顶上测试循环终止条件 而do while是在每次通过循环体之后 在底部进行测试 所以循环体至少要进行一次 注意 do while与pascal语言中的repeat untill不同 其布尔表达式为false时继续循环 若为true时 终止循环 c程序设计基础 111 问题1 3 问题 从n个整数中找到最小的整数并输出 输入形式 先从控制台输入整数个数 然后在下一行上输入整数 以空格隔开 输出形式 向控制台输出最小的整数 样例输入 58956 120128样例输出 12 includemain intm n data x m 0 scanf d 设整数个数为n 设最小整数为x 设当前读入的整数为data 设已经读入m个整数 m初始化为0 读取n 读入data 若m 0 则 x data 若x大于datax data m 如果m n 则 否则 输出x 实验 c程序设计基础 113 循环结构 三种循环主要的用途 for通常用于固定步长的循环while通常用于循环条件在头部判断的循环do while通常用于至少循环一次的循环 问题1 4 问题 某班有n名学生 输入学生个数以及每个学生成绩 并判断其成绩是否及格 在判断学生成绩过程中 如果输入的学生成绩不合法 如大于100或为负数 则给出错误提示 并终止程序运行 问题分析 首先要判断所读入的成绩值是否非法 如果非法 则给出错误信息并退出处理 否则继续处理 解题步骤 1 读入学生人数n 初始化变量m为02 whilem小于n2 1读入一学生成绩值到变量score中2 2如果变量score值大于100或小于0 a 输出错误信息b 退出循环2 3判断score值 输出 pass 或 fail 2 4变量m加13 结束 break和continue语句 续 break 迫使程序从包含它的最内层循环体或switch语句中跳出 循环只能跳出一层 continue 迫使包含它的最内层循环体立即执行下一次循环 不管现在程序执行到何处 while break while continue break和continue语句 判断某班学生成绩对应的五级评分 includemain intm n score scanf d 实验 break和continue语句 续 例 统计非数字字符数 main intcount charc count 0 while c getchar eof if c 0 不用continue语句同样可以实现该程序 main intcount charc count 0 while c getchar eof if c 9 count printf nondigitalcharacter d n count 实验 控制结构 计算机语言提供三种方式来控制算法的执行 顺序 sequence 选择 selection 和循环 loop 语句 c语言语句分成简单语句和构造语句两类 简单语句1 表达式语句赋值表达式语句 如 x z 3 其它表达式语句 如 x y 函数调用语句等 如 printf d x y 2 转移语句goto标号 break continue return return 表达式 3 空语句 语句 续 构造语句1 选择 条件 语句if语句 if else语句2 循环语句for语句while语句do while语句3 开关语句switch语句 包括case语句 4 复合语句 注意 后没有分号 这与单个语句不同 程序设计实践 测试 testing 如何验证一个程序解决了问题 即实现了所要的功能 可分析每个输入数据的范围 然后对每个数据从下面几个方面来考虑测试数据 正常数据 范围内 如问题1 1中的75 以确定程序做了该做的事 边界数据 范围边界 如问题1 1中的60 以确定程序在数据边界上
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 品格教育面试题及答案
- 农商行面试题目及答案
- 内蒙古乌兰察布市集宁第一中学2026届化学高三上期中达标检测试题含解析
- 陕西省延安市2026届化学高一第一学期期中质量检测模拟试题含解析
- 2025年互联网数据中心服务代理销售合同范本
- 面试题目及答案
- 面试题及答案美团
- 安徽省铜陵市枞阳县浮山中学2026届化学高一第一学期期末联考模拟试题含解析
- 面试题 金融问题及答案
- 梅州国企面试题及答案
- 标准劳动合同解除协议范本
- 矿山隐蔽致灾因素普查规范讲解
- 基于碳基纳米材料的铅蓄电池电极性能优化与调控-洞察及研究
- 2025年“才聚齐鲁成就未来”山东钢铁集团有限公司社会招聘13人笔试历年参考题库附带答案详解
- 2025年新三类人员安全员c证继续教育考试题库及答案
- 2025浙江台州市信保基金融资担保有限责任公司招聘10人笔试历年参考题库附带答案详解
- 企业危机管理中的社会责任与可持续发展研究-洞察及研究
- 幼儿园童话故事表演《丑小鸭》课件
- 2025年风力发电机叶片维护与性能提升可行性分析报告
- 村干部考入事业编面试真题(含答案)
- 西南交通大学2025年秋季管理岗位与其他专技岗位公开招聘考试参考试题及答案解析
评论
0/150
提交评论