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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

西安交大C程序设计作业终审稿.docx

1、西安交大C程序设计作业终审稿 文稿归稿存档编号:KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-MG129西安交大C程序设计作业西安交通大学实验报告课程_计算机程序设计_实验名称_函数_第 1 页 共 18 页系 别_ _ 实 验 日 期 2014 年 3月 28日专业班级_ _组别_ 实 验 报 告 日 期 2014 年 3 月 29日姓 名_ _学号_ _ 报 告 退 发 ( 订正 、 重做 )同 组 人_ 教 师 审 批 签 字一、实验目的掌握函数的概念,使用函数的优越性,定义函数的方法以及调用函数的方法。二、实验内容 (一)第一题:编写字符串反转函数mys

2、trrev(),该函数的功能是将指定字符串中的字符顺序颠倒排列。然后再编写主函数验证之。1.源程序代码: #include#includeusing namespace std;void mystrrev(char string);/自定义函数,反转字符串int main() cout请输入字符串(不多于个字符):endl; char in81; cin.get(in,81);/输入字符串,允许输入空格 mystrrev(in);/对字符串“in”执行反转函数 coutendl; return 0;void mystrrev(char string) int m=strlen(string);

3、 int mid; for(int i=0;im/2;i+)/将字符串的前一半字符与后一半字符对应交换,因而只执行m/2 mid=stringi; stringi=stringm-i-1; stringm-i-1=mid; stringm=0;/字符串结束 cout反转结果为:nstring;2.实验结果:由于函数中有“for(int i=0;im/2;i+)”的语句,为避免该循环条件不准确,对奇数和偶数个的字符均进行了检测,并有对含空格和符号的字符串的检测:(1)奇数:(2)偶数:(3)含空格字符串:3.问题分析:(1)起初没有用“.get”,不够全面;(2)如果一直执行到i=m的话,就等于

4、反转两次又回到了原来的字符串顺序,因而要考虑只执行一半,而由于字符串长度有奇偶的问题,所以容易错误;(3)第一次编写时,没有写stringm=0;这使得输出结果混乱。(二)第二题:编写一组求数组中最大元素和最小元素的函数。其函数原型为:int imax(int array,int count); int imin(int array,int count); 1.源程序代码:#includeusing namespace std;int imax(int array,int count);/求整型数组的最大元素int imin(int array,int count);/求整型数组的最小元素in

5、t main() int num40,n; coutn; cout请输入每个整数:n; int i; for(i=0;inumi; cout最大值为:imax(num,n)endl; cout最小值为:imin(num,n)endl; return 0;int imax(int array,int count) int m=array0;/将最大值的初始值定义为array0 for(int i=1;im) m=arrayi; return m;/返回最大值int imin(int array,int count) int l=array0; for(int i=1;icount;i+) if(

6、arrayil) l=arrayi; return l;2.实验结果:3.问题分析:(1)起初误将:cout最大值为:imax(num,n)endl; cout最小值为:imin(num,n)m)if(arrayi arrayi-1)if(arrayi arrayi-1)导致输出不正确。(3)虽然理论上应该加上判断输入的数字是否为整数的程序,但考虑到这个不是重点,只是徒劳的增加麻烦,因而就没有加。(三)第三题:编写函数isprime(int a)用来判断变量a是否为素数,若是素数,函数返回1,否则返回0。调用该函数找出任意给定的n个整数中的素数。1.源程序代码:#includeusing na

7、mespace std;int isprime(int a);int main() coutn; cout请输入要判断的各个数:n; int a50; int i; for(i=0;iai; cout其中的素数为:n; for(i=0;in;i+) if(isprime(ai)!=0)/若经自定义函数判断是素数,输出该数 coutai1&m!=0;i-)/循环判断直至能够整除或者对全部正整数判断完毕 m=a%i; return(m!=0?1:0);/若为素数输出是,若不是输出非2.实验结果:3.问题分析:(1)对于“if(isprime(ai)!=0)”,起初写为“if(isprime(ai)

8、=1)”,没有认识到只有零和非零的区别,导致程序始终判断得到错误结果;(2)对“int m=a-1,i”:原来写作“int m=a,i;”,这样的时候会将1也作为素数输出。为了避免如此,故将m的初始值设为a-1,这样的话,输入1时m=0,正好能够使1不经过循环而判断为合数,同时,输入2及以上的数字时,由于初始值m0,也不会被影响。(四)第四题:(必做题)(注意必须用自定义函数,并和系统库函数asin()进行比较测试检验)1.源程序代码:/用自定义函数求arcsin(x),并和系统库函数asin()进行比较测试检验#include#includeusing namespace std;doubl

9、e jc(int n);/阶乘函数double cf(double x,int n);/乘方函数double myasin(double x,double last);/开方的函数int main() double x,u; coutx; while(x=1) coutx; coutu; cout自定义函数计算结果是: myasin(x,u)endl; cout库函数执行计算结果是:asin(x); coutendl; return 0;double jc(int n) int S=1,m=1; while(m=n) S=S*m; m=m+1; return S;/返回S值作为阶乘的结果dou

10、ble cf(double x,int n) double v=1; int m=1; do v=v*x; m=m+1; while(m=n); return v;/返回v为x的n次方double myasin(double x,double last) double sum; int n=1; double in; sum=x; in=jc(2*n)*cf(x,2*n+1)/(cf(2,2*n)*jc(n)*jc(n)*(2*n+1); sum=sum+in; n+; while(in=-last);/未达到精度时循环 return sum;2.实验结果:(1)特别检测了输入的自变量不符合范

11、围要求的情况的鉴别:(2)正常运行:3.问题分析:(1)题目中用到了三个自定义函数,分别的作用是:乘方、阶乘和求反正弦函数的自定义函数主体,前两个函数的出现主要是为了简化运算过程。由于不知道标准的乘方、阶乘库函数,所以就自定义了。(2)不足:精确性不太好,如输入0.5时差距较大,但一直找不到问题所在。(3)说明:在此题中将精度设置成了可调整的,而在下题中则设置为不可调整。貌似应该都设为不可调整的,但个人觉得可调整的虽然麻烦且不一定精确,但也人性化。五、第五题:(必做题)编写计算平方根函数,并和库函数进行比较测试检验。提示:采用牛顿迭代法,计算精度10-7。函数原型:doublen mysqrt

12、 ( double x )#include#includeusing namespace std;double mysqrt(double x);int main() double x; coutx; cout自定义函数计算结果是:mysqrt(x)endl; cout库函数计算结果是:sqrt(x)0.000000001|f_-f0.000000001);/未达到精度时循环 return f;/返回最终结果到mysqrt2.实验结果:(1)结果为整数的:(2)结果为非整数的:很准确! 六、第六题:1源程序代码:#includeusing namespace std;int my(int n)

13、;/自定义函数,判断是不是递增数的主体函数int ws(int n);/自定义函数,求n的位数的函数,使用到自定义函数my中int main() int n=9999999,m; cout0到之间的递增数有:n; for(m=0;m=n;m+) if(my(m)!=0) coutm、; return 0;int my(int n) int gwsz10; int i,k=1; int m=ws(n); for(i=0;im;i+) gwszi=(n/k)%10;/至此,已得到各位数 k=k*10; int u; for(i=0,u=0;i=gwszi+1) u+; return (u=m-1?

14、1:0);/通过u的最终大小来判断是否递增,只有都是递增才能使得u=m-1int ws(int n)/判断位数,输出的ws(n)为位数 int i; for(i=0;n=1;i+) n=n/10; return i;2实验结果:3.问题分析:(1)一,要设计一个识别是否为递增数的函数,这个函数作为分离出主函数的函数;二,在输出0到999999之间递增数时,主函数中用到循环体,从0逐一循环到9999999每次都用函数进行判断是否递增;三,在分离出的函数中,返回值应该为是或否,1或0,然后在主函数中判断是否输出;或者不返回,直接输出也可以。四,需要有一个识别整数位数的系统以及一个分离各个位上的数字

15、的程序。(2)对于:if(gwszi=gwszi+1) u+; return (u=m-1?1:0);只有在该m位数的每两个相邻位数字均为递增的时候,才能使得u每次都增加1,从而最终得到u=m-1;只要有一个地方不满足,就可以说明不是递增的。故可以用该条件判断是否递增。(七)第七题:(选作题)假设有如下一元多项式: anXn+an-1Xn-1+.+a1X1+a0编写程序求该多项式的值和多项式导数的值,这两个结果值的计算都必须采用函数求得,具体函数原型如下: double dxs(double a,double x,int n) double dxsds(double a,double x,in

16、t n)形式参数a用来存放多项式n+1个系数,x为多项式的变量,n为次方数。(提示:先输入某个多项式系数,然后输出该多项式及其导数多项式,再输入某个x的值,再输出多项式和导数的计算结果值)1.源程序代码:#includeusing namespace std;double dxs(double a,double x,int n);double dxsds(double a,double x,int n);double cf(double x,int n);int main() int n; coutn; cout请按照从低次到高次的顺序依次输入系数:n; int i=0; double a30

17、;/在假设最高项次数不超过的前提下 do coutaiai; i+; while(i=n); cout0;i-)/输出多项式表达式 coutai*xi+; couta0endl; cout1;i-)/输出多项式导函数表达式 coutai*i*xi-1+; couta1endl; int x; coutx; cout在自变量x=x下,该多项式的值为: dxs(a,x,n)endl; cout其导数值为:dxsds(a,x,n)=0;i-) s=s+ai*cf(x,i); return s;double dxsds(double a,double x,int n)/计算多项式导数值的函数 double S=0; for(int i=n;i=1;i-) S=S+ai*i*cf(x,i-1); return S;double cf(double x,int n)/计算乘方函数 double v=1; int m=1; while(m主函数: 输入n循环输入系数,将系数作为数组储存下来,这是后边的自定义函数的处理目标利用循环将循环每次输出结果贴到一块得到多项式输入x调用函数计算函数值、导数值;需要以下自定义函数:多项式计算函数:乘方函数:多项式导数计算函数:

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

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