ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:39.46KB ,
资源ID:19563958      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19563958.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西安交大c++程序设计第六章作业Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

西安交大c++程序设计第六章作业Word文件下载.docx

1、k=yunsuan(x,k)endl;/输出运算结果 return 0;double yunsuan(double x,int k) if(k=1)/k=1时不再进行循环,输出值为x return x; else double s=x*yunsuan(x,k-1);/对于k大于1的情况,进入下一循环 return s;2.实验结果:(1)输入X正实数:(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,由此给出初

2、值。(二)第二题:使用递归算法编写求斐波那契数列的第 n 项的函数,并编出主函数进行验证。 int fib(int n) /递归函数,计算斐波那契数列的第n项 if(n=0)/对于n=0不再进行递归,返回值0 return 0; if(n=1) return 1;/对于n=1不再进行递归,返回值1 else int s=fib(n-1)+fib(n-2);/将计算第n项归为计算第n-1和n-2项 return s; int n;请输入要计算的项数(非负整数):/提示输入项数,首项为第0项n; while(n0)/对于不符合要求的输入值重新输入输入有误,请输入非负整数:fibn=fib(n)=b

3、) return a; return b;double imax(double a,double b)/对实数进行处理double imax(char *c,char *d)/对字符型进行处理 double x=zhuanhuan(c); double y=zhuanhuan(d); return (x=y?x:y);int main()请选择您要输入的数的类型,n如果是整型请输入,实数型输入,字符型输入: while(n!=1&n!=2&=3)输入有误!重新选择: int a2; double b2; char c12,d12; if(n=1)/处理整型数请输入两个数:a0a1;最大值为:i

4、max(a0,a1); if(n=2)/处理实数 coutb0b1;imax(b0,b1); else/处理字符型请输入第一个数:c;请输入第二个数:d;最大值为:imax(c,d);(1)输入整数型:(2)输入为实数:(3)输入为字符:正数:(带正号):(不带正号):整数:负数: 该题的重点在于字符型的处理。在实验报告中,采取了两个数字逐个分开输入的方法,因而主要只需要判断开头是否为负号、中间是否有小数点并区别小数点前后处理方法的不同这几个问题。如果能够一次性输入两个数中间用空格隔开的话,就需要判断空格的位置,然后对空格之后的部分再进行与前半部分相同的判断方法,显得更加麻烦。对字符型的处理思

5、路: 首先判断首字符是不是“-”或者 “+”,如果是的话,先跳过从第二个字符开始处理,在最终的结果中再乘以-1即可;然后对于接下来的整数部分进行累加,直到遇见小数点,若没有小数点则一直执行到字符结束;如果有小数点的话,对于小数点后的部分再进行累加得到结果。四、第四题:编写一个函数,用于去掉字符串前面的空格,其原型为 :char *myltrim(char *string);其中参数 string 为字符串,返回值为指向 string 的指针。char *myltrim(char *string) int i=0,j=0; while(*(string+i)= ) do *(string+j)=

6、*(string+i); j+; while(*(string+i-1)! return string; char string41;请输入字符串: cin.get(string,40);去掉开头的空格之后为:nmyltrim(string)为验证处理空格时仅是将开头处理而不处理中间空格:(1)中间无空格:(2)中间有空格:曾经出现的问题:起初运行时发现,即使没有判断开头空格的程序,输出结果也是没有空格的,后来检查发现是输入语句没有写为cin.get导致空格不被录入。五、第五题:用牛顿迭代法求任意一元方程: anXn+an-1Xn-1+.+a1X1+a0 0 的根。提示:迭代公式:Xn+1 =

7、 Xn + f(Xn) / f(Xn) 结束迭代过程的条件为(|f(Xn+1)| )与(|Xn+1 - Xn|0) s=s*x; k-; return s;double f(int n,double *a,double x)/计算函数值f(x)的函数 double sum=0; for(int i=0;i=u|f(n,a,x)=u|x-m=-u);/循环直到达到精度/返回最终计算结果 int n,i;请输入最高项次数: double *a=new doublen+1;/申请数组空间请从低到高输入系数: for(i=0;n+1;*(a+i);计算结果为:result(n+1,a,x) delet

8、e a;/释放数组空间思路分析:程序中用到的多个函数:乘方函数、计算f(x)、f_(x)的函数、自定义的求根的主体的函数、主函数。乘方函数用于计算f(x)、f_(x),f(x)、f_(x) 函数的使用简化求根的函数。六、第六题:将数字、小数点、正负号组成的字符串转换成相应的实数,例如:-3.14159变成-3.14159。函数原型如下: double myatof(char *num);要求编写主函数加以测试。double myatof(char *num); char num20;请输入数值:num;转换结果为:myatof(num)检验:+1=myatof(num)+1double mya

9、tof(char *a) if(*(a+0)=|*(a+0)=)/若首字符为-或+则跳过 while(*(a+i)!*(a+i)! x=x*10+(*(a+i)- if(ai=ai! x=x+s*(ai- if(a0=对整数、负数、小数等均进行检测:(1)小数、负数:(2)整数:(正):(负):(3)0:此题与第二题处理字符类似,需要处理开头正负号、小数点。(七)第七题:在字符串T中查找子串S,若找到,返回子串的个数,若找不到返回0。int find(char *a,char *b) int i,s=0,x=strlen(a),y=strlen(b);=x-y; if(b0=ai)/找到首字符

10、相同的位置 int j=0; while(bj=ai+j&i+jx)/由该处开始逐次判断是否相同 j+; if(j=y) s+; char a101; cin.get(a,100); char b31;请输入要查找的子串:b;字符串n“a”n中子串“b”的个数为:find(a,b)请输入整数: if(n=1;m+)/求得所输入数n的位数m x=x/10; int a=m/3,b=m%3; int *num=new int3*(a+1); int j; for(j=0,x=n;j=0;i-)/由高位到低位,每三位一循环 if(num3*i+20)/3i+2位 cout*(u+num3*i+2-1

11、) hundred if(num3*i+1=1)/3i+1位为时,根据i位输出ten、eleven*(q+num3*i) else/若i+1位不是,可能是到或 if(num3*i+1!=0)/对于到则输出,则跳过 cout*(v+num3*i+1-2) if(num3*i!=0)*(u+num3*i-1)0&=3&(num3*i+1!=0|num3*i+2!=0|num3*i!=0)/该循环个位上的数字不全为时,输出对应的单位*(w+i-1)(1)一位数:(2)两位数:(3)带正号:(4)特定位置含0:(5)0:(6)位数为3的倍数:(7)负数、非数字:3问题分析:应该注意以下几点:(1)对于输入负数或者0或者不是整数的处理;(2)每三位为一个环节,末尾输出应该是thousand、million还是billion还是不输出?要防止前面没有数字却输出一个单位如: million three hundred twenty three(3)当3i+1位为1时,要考虑到此时不是13ten three,而是thirteen,因而需要对此分开处理。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1