




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北方民族大学 课课 程程 报报 告告 课课 程程 名名 称 称 程序设计实践 专专 业业 班班 级级 软件工程 2 班 学学 生生 姓姓 名名 李思良 学学 号号 20152170 任任 课课 教教 师师 王晓锋 学学 期期 2015 20162015 2016 学年春季学期学年春季学期 课程报告任务书课程报告任务书 题题 目目 3030 个小程序组合成一个大程序个小程序组合成一个大程序 主要主要 内容内容 1 已知半径求圆面积 2 已知球半径 求表面积和体积 3 输入两个实数 交换其值输出 4 输入两个整数 求他们的平方和 5 分段计费 6 求一元二次方程的根 7 判断三个整数是否能构成三角形 8 计算 1 1000 之间能被三整除的所有自然数之和 9 猴子吃桃问题 10 输入一个正整数 求位数和位数之和 11 输入一行字符 统计大小写字母 数字和其他字符 12 输入一个四位数 将其加密后输出 14 用 for while do while 循环实现 100 以内素数之和 15 将大于 10 元小于 100 元的钱换成 1 元 2 元 5 元的组合 16 输出 99 乘法口诀 17 验证哥德巴赫猜想 18 求两个正整数的最大公约数和最小公倍数 19 判断素数 20 求 m n 以内全部素数 每行输出 10 个 21 输出 10000 到 99999 的所有回数 22 两个 6 6 矩阵的乘积 23 对一批数进行排列 求出最大值与平均数 24 输入一批学生的成绩 换成五分制 25 逆序输出 26 求阶乘 27 用递归函数求 Fibonacci 数列的前 40 个数 每行输出 8 个 28 输入某年某月某日 判断这一天是这一年的第几天 29 写出 1000 以内的所有完数 30 输入年和天数 输出对应的年 月 日 将以上 30 个子函数放在一个主函数内进行调用 任务任务 要求要求 一 提交材料应包括 1 系统源代码 2 课程报告 二 整个设计过程具体要求 1 需求分析需求分析 对子函数各功能进行分析 设计出需要完成的功能 完善各 个子函数的调用关系 2 设计过程设计过程 进一步明确各模块调用关系 进一步完善模块函数细节 函数 名 参数 返回值等 3 实现过程实现过程 养成良好的编码习惯 完成各个模块并进行测试 最终完成系 统整体测试 4 总结阶段总结阶段 按照要求完成系统设计和实现报告 并进行总结 答辩 报告撰写情况 报告撰写情况 30 分 分 系统完成情况 系统完成情况 30 分 分 答辩情况 答辩情况 40 分 分 内容内容 2020 分分 规范程度规范程度 5 5 分分 程序测试程序测试 5 5 分分 基本功能基本功能 2020 分分 扩展功能扩展功能 1010 分分 自述情况自述情况 1010 分分 答辩情况答辩情况 3030 分分 总分总分 成绩成绩 评定评定 成绩评定教师 成绩评定教师 1 需求分析 经过大一上学期的理论学习 在基础实验的基础上 本学期我们继续开设了 C 语言程序 设计实践课 课程要求我们对已经学习的基础实验进行整合与衔接处理 并最终形成一个系 统性质的规模较大的程序 本次课程设计要求我们达到能独立完成一个 1000 行以上的程序 完成后要求实现已知半径 求圆面积 已知球半径 求表面积和体积 输入两个实数 交换其值输出等 30 中功能 通过整个程序的开发过程 最终使我们掌握利用计算机解决实际问题的基本方法 熟悉 C 语言开发的全过程 提高综合应用 C 语言的能力 编程和调试能力 为学习计算机后续课 程打好专业基础 2 概要设计 模块划分 1 int diyi 已知半径求圆面积 2 int dier 已知球半径 求表面积和体积 3 void disan 输入两个实数 交换其值输出 4 void disi 输入两个整数 求他们的平方和 5 void diwu 分段计费 6 void diliu 求一元二次方程的根 7 void diqi 判断三个整数是否能构成三角形 8 void diba 计算 1 1000 之间能被三整除的所有自然数之和 9 void dijiu 猴子吃桃问题 10 void dishi 输入一个正整数 求位数和位数之和 11 void dishiyi 输入一行字符 统计大小写字母 数字和其他字符 12 void dishier 输入一个四位数 将其加密后输出 13 int dishisan 用冒泡排序对 10 个数排序 14 void dishisi 用 for while do while 循环实现 100 以内素数之和 15 void dishiwu 将大于 10 元小于 100 元的钱换成 1 元 2 元 5 元的组合 16 void dishiliu 输出 99 乘法口诀 17 void dihsiqi 验证哥德巴赫 18 void dishiba gcd int m int n int lcm int m int n 求两个正整数的最大公约数和最小公倍数 19 void dihsijiu int isprime int m 判断素数 20 void diershi 求 m n 以内全部素数 每行输出 10 个 21 void diershiyi 输出 10000 到 99999 的所有回数 22 void diershier 两个 6 6 矩阵的乘积 23 void diershisan void allPrimes int m int n void sort int array int n 对一批数进行排列 求出最大值与平均数 24 int diershisi char switchScore int score 输入一批学生的成绩 换成五分制 25 void diershiwu 逆序输出 long reverse long number 返回 number 的逆序数 26 void diershiliu 求阶乘 27 void diershiqi 用递归函数求 Fibonacci 数列的前 40 个数 每行输出 8 个 28 int dierhsiba 输入某年某月某日 判断这一天是这一年的第几天 29 void diershijiu 写出 1000 以内的所有完数 30 void disanshi void MonthDay int year int yearDay int pMonth int pDay 输入年和天数 输出对应的年 月 日 31 void myprint 显示菜单界面 将以上 30 个子函数放在一个主函数内进行调用 int main 主函数 3 详细设计 include include include include include define PI 3 14 void myprint 显示菜单界面 此函数的功能是 已知圆半径 R 的值 求圆的面积 S int diyi float r area printf 请输入圆的半径 scanf f area PI r r printf 该圆的面积为 f n area return area 此函数的功能是 已知球半径 R 的值 求球的表面积 S 和球的体积 V S 4 R2 V 4 3 R3 int dier float r s v printf 请输入球的半径 scanf f s 4 PI r r printf 该球的表面积为 f n s v s r 3 printf 该球的体积为 f n v 此函数的功能是 从键盘输入两个实数 并交换其值后输出 void disan double x y z printf 请输入两个实数 scanf lf lf printf 交换前两个实数为 f f n x y z x x y y z printf 交换后两个实数为 f f n x y 此函数的功能是 从键盘输入两个整数 输出它们的平方和 void disi int x y z printf 请输入两个整数 scanf d d printf d 和 d 的平方和为 d n x y x x y y 此函数的功能是 创建时间 void diwu int x double y printf 请输入 x scanf d if x 0 x2 b sqrt delt 2 a printf 有两个不同的实根 x1 2f x2 2f n x1 x2 else printf 无实根 n else printf 不是一元二次方程 n 该程序的功能是 从键盘输入三个整数 判断能否由它们作为三边长构成一个三角形 提示 任意两边之和大于第三边 void diqi int a b c printf 请输入三个整数 scanf d d d if a b c else printf 不能构成一个三角形 该函数的功能是 用循环语句计算 1 1000 之间的能被 3 整除的所有自然数的和 分别用 do while while for 三种循环语句求和 输出结果 void diba int i sum for 0 for i 3 i 1 day peach num 2 peach num 1 printf 第 2d 天的桃子个数为 6d n day peach num 第一天的桃子数即为所摘的桃子总数 输出第一天的桃子数 printf 第 1 天摘的桃子总数为 d n peach num 输入一个正整数 求该整数的位数和各位数之和 逆序输出一个正整数 void dishi void int n count 0 sum 0 m printf Enter n 输入提示 scanf d m n 保存输入的 n 的值 便于后面输出 while n 0 sum n 10 n n 10 count printf 该数是 d 它共有 d 位 它的各个数字之和为 d n m count sum 该函数的功能是 输入十个字符 分别统计其中的英文大写字母 小写字母 数字字符和其他字符 void dishiyi int count upper 0 count lower 0 count digit 0 count other 0 i j char ch 10 printf 请输入十个字符 最好包含大小写字母 数字和其他符号 n getchar for i 0 i 10 i scanf c printf c ch 9 for j 0 j A else count other printf 大写字母有 3d 个 n 小写字母有 3d 个 n 数字字符有 3d 个 n 其他字符有 3d 个 n count upper count lower count digit count other return 此函数的功能是 编写程序 完成以下功能 输入一个四位数 将其加密后输出 方法是该数每一位上的数字加 9 然后除以 10 取余 作为该位上的新数字 最后将千位和十位上的数字互换 百位和各位上的数字互换 组成加密后的新四位数 如 输入 1257 输出 4601 创建时间 void dishier int x y ge shi bai qian 因为是要输入一批四位数 所以用循环结构 while 1 printf 请输入一个四位的正整数 x scanf d if x9999 break 如果输入的不是一个四位数 则结束循环 分离各位上的数字 qian x 1000 bai x 1000 100 bai x 100 qian 10 shi x 100 10 shi x 10 qian 100 n 10 ge x 10 ge x qian 1000 n 100 o 10 printf 加密前该数的各位数字分别为 d d d d n qian bai shi ge 查看分离的各个数字是否正确 加密 qian qian 9 10 bai bai 9 10 shi shi 9 10 ge ge 9 10 y shi 1000 ge 100 qian 10 bai printf 加密前该数为 6d 加密后该数变为 6d n x y 此函数的功能是 用冒泡法对 10 个数进行排序 int dishisan int i j t a 10 printf imput 10 numbers for i 0 i 10 i scanf d for i 0 i 10 i for j 0 j 10 j if a j a j 1 t a j a j a j 1 a j 1 t printf nthe result is n for j 0 j 10 j printf d a j 此函数的功能是用 for while do while 循环实现 100 以内所有偶数之和 void dishisi int i sum 0 printf 用 for while do while 循环实现 100 以内所有偶数之和 for i 2 i 100 i 2 sum i printf for 循环 sum d n n sum i 2 sum 0 while i 100 sum i i 2 printf while 循环 sum d n n sum i 2 sum 0 do sum i i 2 while i 100 printf do while 循环 sum d n n sum 此函数的功能是 将一笔钱 大于 10 元 小于 100 元 换算成 1 元 2 元和 5 元的纸币组合 输入金额 问有几种换算方法 针对每一种换算方法 输出各种面额的纸币数量 要求 每种硬币至少有一枚 创建时间 void dishiwu int num 1 num 2 num 5 count 0 int money printf 请输入要换算的钱的金额 scanf d printf 针对每种换算方法 各种面值的纸币的数量分别为 n 5 元 2 元 1 元 n for num 5 1 num 5 money 5 num 5 for num 2 1 num 2 money 2 num 2 for num 1 1 num 1 money num 1 if money 5 num 5 2 num 2 1 num 1 printf 6d 6d 6d n num 5 num 2 num 1 count printf 共有 d 种换算方法 n count 该函数的功能是 用循环结构输出 九九乘法表 void dishiliu int i j for i 1 i 9 i for j 1 j i j printf d d 2d i j i j printf n 该函数的功能是 验证哥德巴赫猜想 任何一个大于 6 的偶数均可表示为 2 个素数之和 要求将 6 到 100 之间的偶数都表示为 2 个素数之和 输出时一行输出 4 组 基本思想 对 6 100 之间的所有偶数 n 若 n a b 则首先 a b 一定都是奇数 所以选用穷举法对 a 3 n 2 范围内的奇数 的值从 3 开始列举 若 a 是素数 再判断 b 是否为素 数 void dishiqi int n i a b c d int count printf 验证哥德巴赫猜想 任何一个大于 6 的偶数均可表示为 2 个素数之和 n n for n 6 n 100 n n 2 count 0 for a 3 a n 2 a a 2 判断 a 是否为素数 c sqrt a for i 2 i c a 是素数的情况下 判断 b 是否为素数 b n a d sqrt b for i 2 i d b 是素数的情况下 printf 3d 3d 3d n a b count if count 4 0 printf n printf n 此函数的功能是 求两正整数的最大公约数和最小公倍数 用一个函数求最大公约数 另一个函数求最 小公倍数 int gcd int m int n int lcm int m int n void dishiba printf 求两正整数的最大公约数和最小公倍数 n n int m n a b printf input m n scanf d d a gcd m n b lcm m n printf gcd d d d n m n a printf lcm d d d n m n b 使用枚举法求最大公约数 int gcd int m int n int i temp temp m 1 i 在 1 temp 之间找公倍数 if m i 0 使用枚举法求最小公倍数 int lcm int m int n int i temp temp m n m n 临时变量 temp 存储 m n 中较大的数 for i temp i m n i 在 temp m n 之间找公倍数 if i m 0 此函数的功能是 写一个判断素数的函数 在主函数输入一个整数 输出是否素数的信息 void dishijiu int n int isprime int m 此处是函数声明 printf 请输入一个正整数 scanf d 输入一个正整数 n if isprime n 1 printf d is a prime n n else printf d is not a prime n n 定义判断素数的函数 如果 x 是素数则返回 1 真 否则返回 0 假 int isprime int m int i double n if m 1 return 0 1 不是素数 返回 0 n sqrt m for i 2 i n i if m i 0 如果 m 不是素数 return 0 返回 0 return 1 m 是素数 返回 1 求 m n 以内的全部素数 1 m n 500 每行输出 10 个 素数就是只能被 1 和自身整除的正整数 1 不 是素数 2 是素数 使用嵌套循环求一定范围以内的全部素数 调用求平方根函数 需要包含数学库 声明 判断素数的函数 如果 x 是素数则返回 1 真 否则返回 0 假 int isprime int m 声明子函数 输出 m n 范围内的所有素数 void allPrimes int m int n void diershi int count m n x printf 请输入正整数的范围 m 和 n 1 m n 500 scanf d d count 0 count 记录素数的个数 并用于控制输出格式 for x m x n x if isprime x 如果 x 是素数 printf 6d x 输出 x count 累加已经输出的素数个数 if count 10 0 如果 count 是 10 的倍数 换行 printf n allPrimes m n 调用子函数来完成此功能 printf n 定义子函数 输出 m n 范围内的所有素数 void allPrimes int m int n int x count 0 for x m x n x if isprime x 如果 x 是素数 printf 6d x 输出 x count 累加已经输出的素数个数 if count 10 0 如果 count 是 10 的倍数 换行 printf n 输出 10000 到 99999 的所有回文数 回文数 是一种数字 如 98789 这个数字正读是 98789 倒读也是 98789 正读倒读一样 所以这个数字 就是回文数 还有 10001 11111 12721 等都是回文数 void diershiyi printf 输出 10000 到 99999 的所有回文数 n n int a b c d e long f 10000 do f a f 10000 b f a 10000 1000 c f a 10000 b 1000 100 d f a 10000 b 1000 c 100 10 e f a 10000 b 1000 c 100 d 10 if a e while f 求两个矩阵的乘积 void diershier int a 6 6 int i j sum 0 int max 0 printf 请输入一个 6 6 数组的各个元素 n for i 0 i 6 i for j 0 jmax max a i j sum a i j printf 最大值为 d n 所有元素的和为 d n max sum for i 0 i 6 i for j 0 j 6 j if a i j max printf 最大值的行标 d 列标 d n i 1 j 1 break if a i j max break 对一批数进行排列 并求出最大值与平均数 define MAX 100 define SWAP x y int t t x x y y t void diershisan int n i void sort int a int int array MAX printf 你想对多少个数进行排序 n scanf d srand unsigned time NULL for i 0 i n i array i rand 50 printf n 输出排序前的数 n for i 0 i n i printf 3d array i printf n sort array n void sort int array int n int i k j double av 0 for i 0 i n 1 i k i for j i 1 jarray k k j if k i SWAP array i array k for i 0 i n i av array i printf 输出排序后的数 n for i 0 i n i printf 3d array i printf n 最大数是 d n array 0 printf 平均数是 lf n av n printf n 此函数的功能是 将学生成绩由百分制换算成五分制 创建时间 char switchScore int score void diershisi int score char grade char switchScore int score while 1 因为是要输入一批四位数 所以用循环结构 printf 请输入一个 100 以内的正整数 scanf d if score100 break 若输入的不是 100 以内的整数 在结束循环 grade switchScore score printf 输入的百分制成绩为 6d 其对应的五分制等级为 6c n score grade char switchScore int score char grade switch score 10 case 10 case 9 printf A n break case 8 printf B n break case 7 printf C n break case 6 printf D n break default printf E n 输入一个正整数 将它逆序输出 要求定义并调用函数 reverse number 它的功能是返回 number 的逆序数 例如 reverse 12345 的返回值是 54321 逆序输出一个正整数 void diershiwu printf 逆序输出一个正整数 n n long n m long reverse long number printf Enter n 输入提示 scanf d m reverse n printf 该数是 d 它的逆序数是 d n n m long reverse long number long m m 0 保存输入的 n 的值 便于后面输出 while number 0 m m 10 number 10 number number 10 return m 求 1 100 阶乘之和 void diershiliu printf 求 1 10 阶乘之和 n n int i 0 long temp 1 double sum 0 for i 1 i 10 i temp i sum temp printf sum lf n sum 用递归求 fibonacci 数列的前 40 个数 每行输出 8 个 void diershiqi int f int n int i int count 0 for i 0 i 40 i printf d f i count if count 8 0 printf n int f int n switch n case 0 return 0 case 1 return 1 default return f n 1 f n 2 输入某年某月某日 判断这一天是这一年的第几天 int diershiba int i days 0 int year month day int day tab 13 0 31 28 31 30 31 30 31 31 30 31 30 31 printf 输入年 月 日 用空格隔开 scanf d d d for i 1 i 3 days 1 printf d 年 d 月 d 日是这一年的第 d 天 n year month day days return 0 一个数如果恰好等于它的因子之和 这个数就称为 完数 例如 6 1 2 3 编程找出 1000 以内的所有完数 void diershijiu int i j sum for i 2 i 1000 i sum 0 for j 1 jdays pMonth 1 如果哪一天超出这个月 yearDay days pMonth 1 求出超出此月的天数 pMonth 继续考虑下一月 pDay yearDay void myprint 显示菜单界面 printf n n n n n n n n printf n printf 请输入选项编号 1 31 n printf n printf 1 已知半径求圆面积 n printf 2 已知球半径 求表面积和体积 n printf 3 输入两个实数 交换其值输出 n printf 4 输入两个整数 求他们的平方和 n printf 5 分段计费 n printf 6 求一元二次方程的根 n printf 7 判断三个整数是否能构成三角形 n printf 8 计算 1 1000 之间能被三整除的所有自然数之和 n printf 9 猴子吃桃问题 n printf 10 输入一个正整数 求位数和位数之和 n printf 11 输入一行字符 统计大小写字母 数字和其他字符 n printf 12 输入一个四位数 将其加密后输出 n printf 13 用冒泡排序对 10 个数排序 n printf 14 用 for while do while 循环实现 100 以内素数之和 n printf 15 将大于 10 元小于 100 元的钱换成 1 元 2 元 5 元的组合 n printf 16 输出 99 乘法口诀 n printf 17 验证哥德巴赫猜想 n printf 18 求两个正整数的最大公约数和最小公倍数 n printf 19 判断素数 n printf 20 求 m n 以内全部素数 每行输出 10 个 n printf 21 输出 10000 到 99999 的所有回数 n printf 22 两个 6 6 矩阵的乘积 n printf 23 对一批数进行排列 求出最大值与平均数 n printf 24 输入一批学生的成绩 换成五分制 n printf 25 逆序输出 n printf 26 求阶乘 n printf 27 用递归函数求 Fibonacci 数列的前 40 个数 每行输出 8 个 n printf 28 输入某年某月某日 判断这一天是这一年的第几天 n printf 29 写出 1000 以内的所有完数 n printf 30 输入年和天数 输出对应的年 月 日 n printf n printf n int main char yes no int choose while 1 do myprint 显示主菜单 printf scanf d choose getch switch choose case 1 diyi break case 2 dier break case 3 disan break case 4 disi break case 5 diwu break case 6 diliu break case 7 diqi break case 8 diba break case 9 dijiu break ca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州水电九局四公司招聘1人笔试参考题库附带答案详解
- 2025河南驻马店全域矿业开发公司招聘27人笔试参考题库附带答案详解
- 2025江西吉安市井冈山品牌运营有限公司招聘3人笔试参考题库附带答案详解
- 2025年陕西牛背梁景区招聘(22人)笔试参考题库附带答案详解
- 2025年福建省宁德市高速技术人员(外包岗位)招聘75名笔试参考题库附带答案详解
- 2025年度广西壮族自治区粮油质量检验中心公开招聘工作人员1人笔试参考题库附带答案详解
- 2025年临安区区属国有企业公开招聘工作人员笔试参考题库附带答案详解
- 2025四川绵阳燃气集团有限公司招聘集团及下属子公司25个岗位25人笔试参考题库附带答案详解
- 2025内蒙古金土华维可控农业科技有限公司招聘9名工作人员笔试参考题库附带答案详解
- 危险货运安全知识培训课件
- 2025年药企QA人员岗位职责培训考核试题及答案
- 2025成人高等学校招生全国统一考试专升本《英语》试题及答案解析
- 浙教版2025-2026学年八年级上科学第1章 对环境的察觉 单元测试卷
- 纤维素基包装生物力学性能-洞察及研究
- 基底细胞癌护理查房
- 2025保密观知识竞赛题库(试题附答案25个)
- 工程施工队课件
- 桥梁施工技术创新路径与工程应用研究综述
- 企业反腐倡廉培训课件
- 肺结核患者护理课件
- 食管恶性肿瘤护理查房
评论
0/150
提交评论