C语言程序设计24的问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告
课程名称C语言程序设计
课题名称计算24的问题
专业通信工程
班级通信1081
学号201013120122
姓名舒晨
指导教师罗雅博曹燚
2012年7月6 日
湖南工程学院
课程设计任务书
课程名称C语言程序设计
课题计算24的问题
专业班级通信工程
学生姓名舒晨
学号201013120122
指导老师罗雅博曹燚
审批
任务书下达日期2012 年6 月22 日任务完成日期2012 年7 月 6 日
2011级通信工程专业
《C语言程序设计》课程设计任务书
一、课程设计的性质与目的
《C语言程序设计》是通信工程专业重要的基础课,通过本课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握C语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力。
二、设计要求
每个同学至少选作设计题目一个,每个同学的学号末尾2位对8求余,所得数为对应的设计题目题号,该题为该生必做题。
源程序必须格式规范,程序运行正确无误,有较强的容错性,界面友好。
必须使用模块化程序设计方式,自己独立完成。
三、课程设计报告要求
设计报告格式:
1 统一封面(本任务书附带)、设计题目、设计要求以及系统功能需求分析;
2 总体设计:包括系统总体设计框架和系统功能模块图;
3 详细设计。包括主要功能模块的算法设计思路以及对应的工作流程图;
4 主要源程序代码。包括存储设计说明,以及完整源程序清单(放在附录中);
5 调试分析过程描述。包括测试数据、测试输出结果,以及对程序调试过程中存
在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等);
6 总结。包括课程设计过程中的学习体会与收获、对C语言和本次课程设计的认
识等内容。
7 附录(完整源程序清单):可以是手写或打印稿(注意:不能和其他同学一样)
8 报告最后附上评分表(见任务书末页)
四、检查要求:
1 每个人必须有可运行的程序,每个人要通过答辩;
2 每个人必须交《C语言课程设计报告》(打印稿)
五、评分
1 根据平时上机考勤,且每个人必须自己动手编写程序,不得抄袭;
2 根据程序运行结果;
3 学生能熟练地解释清楚指导老师对自己程序的提问;
4 课程设计报告完成的质量和规范;
目录
一、课程设计的性质与目的 (1)
二、课程设计题目 (1)
三、功能分析和程序流程图 (2)
四、源程序代码 (7)
五、程序运行截图 (14)
六、总结和个人心得 (15)
七、评分表 (16)
一、课程设计的性质与目的
《C语言程序设计》是通信工程专业重要的基础课,通过本课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握C语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力。
二、课程设计题目
计算24的问题
要求:在屏幕上输入1-10范围内4个整数(可以有重复),对它们进行加减乘除四则运算后(可以任意的加括号限定计算的优先级),寻找计算结果等于24的表达式
三、功能分析和程序流程图
1.主函数流程图
2.程序开始界面: void Hello( ) {
puts("\n");
puts(" ##################################################");
puts(" ## ##");
puts(" ## 输入4个整数,用它们构造一个算术四则运算, ##");
puts(" ## 使结果等于24。每个数恰好利用一次。 ##");
puts(" ## (可输出有重复的全部解) ##");
puts(" ## ##");
puts(" ##################################################");
puts(" ## ##");
puts(" ## 设计者:舒晨 ##");
puts(" ## 时间:2012-7-2 ##");
puts(" ## ##");
puts(" ##################################################");
puts("\n");
}
3.操作数栈,生成n个数中取m个数的全排列。m = n时即为n个数的全排列,每产生一个排列,放入b[]中。
STACK<float, N> opnstk; // 操作数栈
int b[N], K = 0; // a[]的备份/用于生产排列的工作区
void gen(int n, int m) // 生成n个数中取m个数的全排列。m = n时即为n 个数的全排列。---
{ // --- 每产生一个排列,放入b[]中。
void gen24( ); // 函数声明
int i;
if(m == 0)
{
for(i = 0; i < K; ++i) printf("%d ", b[i]); putchar('\n'); // 如果只是为了输出排列
gen24( ); // 函数调用
}
else
for(i = 0; i < n; ++i) if(a[i] != '.')
{
b[K++] = a[i];
a[i] = '.';
gen(n, m - 1);
a[i] = b[--K];
}
}
4.运用+,-,*,/运算符来计算着四个数所组成的各种组合并得出结果,判断结果是否等于24,若等于24,则输出这组排列式及算法,若没有等于24的组合,则重新输入4个数。
void gen24( ) // 用b[]中的4个数产生等于24的算式
{