2022年西安交大C++程序设计第五章作业 .pdf
《2022年西安交大C++程序设计第五章作业 .pdf》由会员分享,可在线阅读,更多相关《2022年西安交大C++程序设计第五章作业 .pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、西安交通大学实验报告课程_计算机程序设计 _实验名称 _函数_第 1 页共 18 页系别_ _ 实验日期 2014 年 3 月 28 日专业班级 _组别 _ 实 验 报 告 日 期 2014 年 3 月 29 日姓名_ _学号 _ _报告退发 ( 订正 、重做 ) 同 组 人_ 教 师 审 批 签 字一、实验目的掌握函数的概念, 使用函数的优越性, 定义函数的方法以及调用函数的方法。二、实验内容(一)第一题:编写字符串反转函数mystrrev(),该函数的功能是将指定字符串中的字符顺序颠倒排列。然后再编写主函数验证之。1. 源程序代码:#include #include usingnamesp
2、ace 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); int mid; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
3、理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - for ( int i=0;im/2;i+)/ 将字符串的前一半字符与后一半字符对应交换,因而只执行m/2 mid=stringi; stringi=stringm-i-1; stringm-i-1=mid; stringm=0; / 字符串结束cout 反转结果为:n string; 2. 实验结果: 由于函数中有“for ( inti=0;im/2;i+)”的语句,为避免该循环条件不准确, 对奇数和偶数个的字符均进行了检测,并有对含空格和符号的字符串的检测:(1)奇数:(2)偶数:(3)含空格字符
4、串:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - 3.问题分析:(1)起初没有用“ .get” ,不够全面;(2)如果一直执行到i=m 的话,就等于反转两次又回到了原来的字符串顺序,因而要考虑只执行一半, 而由于字符串长度有奇偶的问题,所以容易错误;(3)第一次编写时,没有写stringm=0;这使得输出结果混乱。(二)第二题: 编写一组求数组中最大元素和最小元素的函数。其函数原型为:int imax(int array,i
5、nt count); int imin(int array,int count); 1. 源程序代码:#include usingnamespace std; int imax( intarray ,int count);/ 求整型数组的最大元素int imin(intarray ,int count);/ 求整型数组的最小元素int main() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - int num40,n; co
6、utn; cout 请输入每个整数:n ; int i; for (i=0;inumi; cout 最大值为: imax(num,n)endl; cout 最小值为: imin(num,n)endl; return 0; int imax( intarray ,int count) int m=array 0;/ 将最大值的初始值定义为array0 for ( int i=1;im) m= array i; return m; / 返回最大值 int imin(intarray ,int count) int l= array 0; for ( int i=1;icount;i+) if (
7、array il) l= array i; return l; 2. 实验结果:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - 3.问题分析:(1)起初误将:cout 最大值为: imax(num,n)endl; cout 最小值为: imin(num,n)m) if ( array i arrayi-1) if ( array i arrayi-1) 导致输出不正确。(3)虽然理论上应该加上判断输入的数字是否为整数的程序,但
8、考虑到这个不是重点,只是徒劳的增加麻烦,因而就没有加。(三)第三题 :编写函数 isprime(int a) 用来判断变量 a 是否为素数,若是素数,函数返回1,否则返回 0。调用该函数找出任意给定的n个整数中的素数。1. 源程序代码:#include usingnamespace std; int isprime(int a); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - int main() coutn; cout 请
9、输入要判断的各个数: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. 问题分析:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17
10、 页 - - - - - - - - - (1)对于“if (isprime(ai)!=0)” ,起初写为 “if (isprime(ai)=1)” ,没有认识到只有零和非零的区别,导致程序始终判断得到错误结果;(2)对“int m=a-1,i” :原来写作 “int m=a,i;” ,这样的时候会将 1也作为素数输出。为了避免如此,故将m 的初始值设为 a-1,这样的话,输入1时m=0 ,正好能够使 1不经过循环而判断为合数,同时,输入2及以上的数字时,由于初始值 m0,也不会被影响。(四)第四题:( 必做题)(注意必须用自定义函数,并和系统库函数asin()进行比较测试检验)1.源程序代码
11、:/ 用自定义函数求arcsin(x),并和系统库函数asin()进行比较测试检验#include #include usingnamespace std; double 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); cout
12、endl; return 0; double jc(int n) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - int S=1,m=1; while (m=n) S=S*m; m=m+1; return S; / 返回 S值作为阶乘的结果 double cf(double x, int n) double v=1; int m=1; do v=v*x; m=m+1; while (m=n); return v; / 返回 v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年西安交大C+程序设计第五章作业 2022 西安 交大 C+ 程序设计 第五 作业
限制150内