西安交大C程序设计作业DOC.doc
《西安交大C程序设计作业DOC.doc》由会员分享,可在线阅读,更多相关《西安交大C程序设计作业DOC.doc(24页珍藏版)》请在咨信网上搜索。
1、西安交通大学实验报告课程_计算机程序设计_实验名称_指针与函数_第 1 页 共 25 页系 别_ _ 实 验 日 期 2014 年 4月 18日专业班级_ _组别_ 实 验 报 告 日 期 2014 年 4 月 19日姓 名_ _学号_ _ 报 告 退 发 ( 订正 、 重做 )同 组 人_ 教 师 审 批 签 字 一、实验目的学会使用递归函数和函数重载,进一步熟练动态分配等指针使用方法。二、实验内容 (一)第一题:1、(必做题) 使用递归算法编写如下程序:对于任意给定的实数 X 和整数k( k0) ,计算 Xk 。1.源程序代码: #includeusing namespace std;do
2、uble yunsuan(double x,int k);/递归函数用于计算xkint main()double x;int k;coutx;coutk;while(k=0)/判断输入的k是否满足要求,若否则提示输入错误并重新输入coutk;cout计算结果是:xk=yunsuan(x,k)endl;/输出运算结果return 0;double yunsuan(double x,int k)if(k=1)/k=1时不再进行循环,输出值为xreturn x;elsedouble s=x*yunsuan(x,k-1);/对于k大于1的情况,进入下一循环return s;2.实验结果:(1)输入X正
3、实数: (2)输入X正整数: (3)输入x为负数:(4)输入k为负数:3.问题分析:该函数的循环方式是:xk=x*x(k-1).设f(x,k)=xk,那么就有f(x,k)=f(x,k-1)*x.而其结束递归的条件是k=1,此时有f(x,1)=x,由此给出初值。(二)第二题:使用递归算法编写求斐波那契数列的第 n 项的函数,并编出主函数进行验证。 1.源程序代码:#includeusing namespace std;int fib(int n) /递归函数,计算斐波那契数列的第n项if(n=0)/对于n=0不再进行递归,返回值0return 0;elseif(n=1)return 1;/对于n
4、=1不再进行递归,返回值1elseint s=fib(n-1)+fib(n-2);/将计算第n项归为计算第n-1和n-2项return s;int main()int n;coutn;while(n0)/对于不符合要求的输入值重新输入coutn;cout计算结果是:fibn=fib(n)endl;/输出计算结果return 0;2.实验结果:(1)输入项数正确(0或正整数): (2)输入项数有误(负数):3.问题分析: 该题的递归方式:第n项为之前两项之和,即:fib(n)=fib(n-1)+fib(n-2),由此递归至fib(1)和fib(2)时结束递归,而fib(1)和fib(2)已知。(
5、三)第三题:重载判断两个数值大小的函数 max ,这些数值可能是整型数、实型数和字符型,函数的返回值为两个数值中的最大值。1.源程序代码: #includeusing namespace std;double zhuanhuan(char *c)/为了避免语句的重复,将字符与数值转换部分作为函数int i=0;double x=0;if(c0=-|c0=+)/若首字符为-或者+则跳过i+;while(ci!=0&ci!=.)/对于整数部分逐位累加,直至遇到小数点或者数字结束x=x*10+(ci-0);i+;if(ci=.)/对于小数部分进行累加double s;/s用来反映数字所在位置是小数点
6、后第几位,就用该数乘以的负几次方(s)i+;/从小数点后的一位开始循环for(s=0.1;ci!=0;i+)x=x+s*(ci-0);s=s/10;if(c0=-)/若为负数,则在上述计算基础上乘以-1得到最终值x=-x;return x;/返回x作为char c的对应的数值int imax(int a,int b)/对整型数进行处理if(a=b)return a;return b;double imax(double a,double b)/对实数进行处理if(a=b)return a;return b;double imax(char *c,char *d)/对字符型进行处理double
7、x=zhuanhuan(c);double y=zhuanhuan(d);return (x=y?x:y);int main()int n;coutn;while(n!=1&n!=2&n!=3)coutn;int a2;double b2;char c12,d12;if(n=1)/处理整型数couta0a1;cout最大值为:imax(a0,a1);elseif(n=2)/处理实数coutb0b1;cout最大值为:imax(b0,b1);else/处理字符型coutc;coutd;cout最大值为:imax(c,d);coutendl;return 0;2.实验结果:(1)输入整数型:(2)
8、输入为实数:(3)输入为字符:正数:(带正号):(不带正号):整数:负数:3.问题分析: 该题的重点在于字符型的处理。在实验报告中,采取了两个数字逐个分开输入的方法,因而主要只需要判断开头是否为负号、中间是否有小数点并区别小数点前后处理方法的不同这几个问题。如果能够一次性输入两个数中间用空格隔开的话,就需要判断空格的位置,然后对空格之后的部分再进行与前半部分相同的判断方法,显得更加麻烦。对字符型的处理思路: 首先判断首字符是不是“-”或者 “+”,如果是的话,先跳过从第二个字符开始处理,在最终的结果中再乘以-1即可;然后对于接下来的整数部分进行累加,直到遇见小数点,若没有小数点则一直执行到字符
9、结束;如果有小数点的话,对于小数点后的部分再进行累加得到结果。四、第四题:编写一个函数,用于去掉字符串前面的空格,其原型为 : char *myltrim(char *string); 其中参数 string 为字符串,返回值为指向 string 的指针。1.源程序代码:#includeusing namespace std;char *myltrim(char *string)int i=0,j=0;while(*(string+i)= )i+;do*(string+j)=*(string+i);i+;j+;while(*(string+i-1)!=0);return string;int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安 交大 程序设计 作业 DOC
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。