1、 C C+语言程序设计报告语言程序设计报告 题 目 C+C+语言程序设计语言程序设计 学生姓名 指导教师 学 院 专业班级 学生学号 2008 年 07 月 08 日 C C+语言程序设计报告语言程序设计报告 一前言一前言 随着计算机技术的普及与提高,C 语言程序设计已经是大学生必须掌握的计 算机基本知识,也是大学生以后必备的计算机技术技能。在大一第二学期,我们 就开始学习 C+程序设计课程即面向对象的程序设计方法,它是兼容了 C 语言的 功能强、效率高、风格简洁、满足包括系统程序设计方法和应用程序设计的大多 数任务的特点,又扩充了面向对象部分,即支持类、继承、派生、多态性等,解 决了代码的重
2、用问题, 实际上是既支持面向过程的结构化程序设计又支持面向对 象的程序化设计的语言。 在大一第二学期末,我们又进行了 C+课程设计,这就更加巩固了我的 C+ 基础知识,也提供一个能让我们自己动手编程的平台。这次 C+程序设计老师一 共出七个题目:第一道必做题,关于稀疏矩阵压缩成三远组的;第二道是两题选 做一题, ; 第三道是两题选做一题,猴子分桃与小孩分糖果;第四道也是两题选 做一题,同色珠与自动提款模拟系统;这些题目覆盖内容很广,每道题都有不同 解答猜数字游戏与彩票开奖游戏。 这些题包括的内容很广, 每道题都有不同解答, 涉及到程序结构很多, 这就需要我们要结合课本基础知识, 掌握各种语句的
3、作用, 通过语句与语句间的“配合”来达到目的。但学习 C+只一个学期,上机次数不 多,真正掌握到手的知识还不是很多,只是懂看不懂编,大家考试虽然不错,但 是真正的上机会编程的不是很多。这次 C+课程设计提供了我们锻炼编程能力的 机会,也培养了我编程的兴趣。幸亏自己在学习 C+程序设计时,把基础知识都 掌握的很好,编程时能很快的编出来,在老师讲题目时,自己已经有小思路了, 甚至简单已经出来了,之后用了三天完成了全部题目,但不急去写报告,还有很 多需要很多和老师一起探讨来完善,做到尽善尽美。同时,也感谢老师的帮助, 给我们好的建议。 二正文二正文 题目题目 1:1、根据以下描述编写一个程序,使其能
4、完成对稀疏矩阵的压缩与还 原,即给定稀疏矩阵可以压缩存储一个三元组,并且能根据这个三元组能还原这 个稀疏矩阵。 一个矩阵含有非零元素比较少,而零元素相对较多,这样的矩阵称为稀疏矩 阵,对稀疏矩阵的存储我们不用完全的二维数组来存储,可以用一个三元组,即 任意一个稀疏矩阵可以用一个只有三列的二维数组来存放,如 其中 Compress3称为三元组,这是一个含有多行的只有三列的矩阵,其中第 0 行数据分别表示该稀疏矩阵的行数,列数和非零元素个数。以后每行表示一个 非零元素的行数,列数和非零元素值,如:第 3 行中的 2,4,4 代表稀疏矩阵中 的非零元素 4 在第 2 行,第 4 列,其值是 4。 算
5、法分析:算法分析:三元组的列是定的为三列,首行是由稀疏矩阵的行列和非零个数而 定,而其他行的值是由非零数值的下标和值来确定,所以先逐个检查稀疏矩阵的 值,如有非零数记下它的下标和非零数值,再分别赋予给压缩矩阵即三元组,同 时记非零个数。还原时,从三元组的首行就可以知道稀疏矩阵的行列数和非零个 数,其他行是非零数在稀疏矩阵的行列下标和非零数值,譬如第一行为 2 3 5 则 2 为 5 的行标,3 为 5 的列标,这样压缩矩阵 reply23=5,同理其他也是。 程序:程序: #include #define A 3 /压缩时宏定义稀疏矩阵的行列 #define B 5 #define C 3 /
6、还原时宏定义三元组的首行 各值 1 0 0 0 0 2 0 0 0 0 0 0 0 0 4 0 0 0 5 0 Compress 3= 4, 5 ,4 0, 0, 1 1, 0, 2 2, 4, 4 3, 3, 5 还原 压缩 #define D 5 #define E 3 void yasuo() /函数yashuo进行压缩矩阵功能 int replyAB,i,j,k=0; coutreplyij; int compress1003,c; c=0; for(i=0;icompressij; for(i=0;ix; if(x!=0) /选择还原还是压缩功能 yasuo(); /调用函数 else huanyuan