西安交大C程序设计作业汇总Word文档下载推荐.docx

上传人:b****3 文档编号:14889408 上传时间:2022-10-25 格式:DOCX 页数:17 大小:181.06KB
下载 相关 举报
西安交大C程序设计作业汇总Word文档下载推荐.docx_第1页
第1页 / 共17页
西安交大C程序设计作业汇总Word文档下载推荐.docx_第2页
第2页 / 共17页
西安交大C程序设计作业汇总Word文档下载推荐.docx_第3页
第3页 / 共17页
西安交大C程序设计作业汇总Word文档下载推荐.docx_第4页
第4页 / 共17页
西安交大C程序设计作业汇总Word文档下载推荐.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

西安交大C程序设计作业汇总Word文档下载推荐.docx

《西安交大C程序设计作业汇总Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《西安交大C程序设计作业汇总Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。

西安交大C程序设计作业汇总Word文档下载推荐.docx

"

请输入字符串(不多于个字符):

endl;

charin[81];

cin.get(in,81);

//输入字符串,允许输入空格

mystrrev(in);

//对字符串“in”执行反转函数

return0;

}

voidmystrrev(charstring[])

intm=strlen(string);

intmid;

for(inti=0;

i<

m/2;

i++)//将字符串的前一半字符与后一半字符对应交换,因而只执行m/2

{

mid=string[i];

string[i]=string[m-i-1];

string[m-i-1]=mid;

}

string[m]='

\0'

;

//字符串结束

反转结果为:

\n"

string;

2.实验结果:

由于函数中有“for(inti=0;

i++)”的语句,为避免该循环条件不准确,对奇数和偶数个的字符均进行了检测,并有对含空格和符号的字符串的检测:

(1)奇数:

(2)偶数:

(3)含空格字符串:

3.问题分析:

(1)起初没有用“.get”,不够全面;

(2)如果一直执行到i=m的话,就等于反转两次又回到了原来的字符串顺序,因而要考虑只执行一半,而由于字符串长度有奇偶的问题,所以容易错误;

(3)第一次编写时,没有写string[m]='

这使得输出结果混乱。

(二)第二题:

编写一组求数组中最大元素和最小元素的函数。

其函数原型为:

intimax(intarray[],intcount);

intimin(intarray[],intcount);

//求整型数组的最大元素

intimin(intarray[],intcount);

//求整型数组的最小元素

intnum[40],n;

请输入您要输入的整数个数,不超过个:

cin>

>

n;

请输入每个整数:

inti;

for(i=0;

i++)//循环输入参与判断的整数

cin>

num[i];

最大值为:

imax(num,n)<

最小值为:

imin(num,n)<

intimax(intarray[],intcount)

intm=array[0];

//将最大值的初始值定义为array[0]

for(inti=1;

count;

i++)//循环比较m与array[i]的大小

if(array[i]>

m)

m=array[i];

returnm;

//返回最大值

intimin(intarray[],intcount)

intl=array[0];

i++)

if(array[i]<

l)

l=array[i];

returnl;

(1)起初误将:

cout<

写成imin、imax,不能执行。

(2)误将:

if(array[i]>

if(array[i]<

写为:

array[i-1])

导致输出不正确。

(3)虽然理论上应该加上判断输入的数字是否为整数的程序,但考虑到这个不是重点,只是徒劳的增加麻烦,因而就没有加。

(三)第三题:

编写函数isprime(inta)用来判断变量a是否为素数,若是素数,函数返回1,否则返回0。

调用该函数找出任意给定的n个整数中的素数。

intisprime(inta);

请输入要进行判断的数字的个数:

intn;

请输入要判断的各个数:

inta[50];

a[i];

其中的素数为:

if(isprime(a[i])!

=0)//若经自定义函数判断是素数,输出该数

cout<

a[i]<

"

intisprime(inta)

intm=a-1,i;

//定义初始值m=a-1实现对的排除

for(i=a-1;

i>

1&

&

m!

=0;

i--)//循环判断直至能够整除或者对全部正整数判断完毕

m=a%i;

return(m!

=0?

1:

0);

//若为素数输出是,若不是输出非

(1)对于“if(isprime(a[i])!

=0)”,起初写为“if(isprime(a[i])=1)”,没有认识到只有零和非零的区别,导致程序始终判断得到错误结果;

(2)对“intm=a-1,i”:

原来写作“intm=a,i;

”,这样的时候会将1也作为素数输出。

为了避免如此,故将m的初始值设为a-1,这样的话,输入1时m=0,正好能够使1不经过循环而判断为合数,同时,输入2及以上的数字时,由于初始值m>

0,也不会被影响。

(四)第四题:

(必做题)(注意必须用自定义函数,并和系统库函数asin()进行比较测试检验)

//用自定义函数求arcsin(x),并和系统库函数asin()进行比较测试检验

cmath>

doublejc(intn);

//阶乘函数

doublecf(doublex,intn);

//乘方函数

doublemyasin(doublex,doublelast);

//开方的函数

doublex,u;

请输入需要计算的自变量x:

x;

while(x<

=-1||x>

=1)

cout<

您输入的自变量不在范围内,请输入(-1,1)之间的x:

请输入在自定义函数下的精度u:

u;

自定义函数计算结果是:

myasin(x,u)<

库函数执行计算结果是:

asin(x);

doublejc(intn)

intS=1,m=1;

while(m<

=n)

S=S*m;

m=m+1;

returnS;

//返回S值作为阶乘的结果

doublecf(doublex,intn)

doublev=1;

intm=1;

do

v=v*x;

}while(m<

=n);

returnv;

//返回v为x的n次方

doublemyasin(doublex,doublelast)

doublesum;

intn=1;

doublein;

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&

in>

=-last);

//未达到精度时循环

returnsum;

(1)特别检测了输入的自变量不符合范围要求的情况的鉴别:

(2)正常运行:

(1)题目中用到了三个自定义函数,分别的作用是:

乘方、阶乘和求反正弦函数的自定义函数主体,前两个函数的出现主要是为了简化运算过程。

由于不知道标准的乘方、阶乘库函数,所以就自定义了。

(2)不足:

精确性不太好,如输入0.5时差距较大,但一直找不到问题所在。

(3)说明:

在此题中将精度设置成了可调整的,而在下题中则设置为不可调整。

貌似应该都设为不可调整的,但个人觉得可调整的虽然麻烦且不一定精确,但也人性化。

五、第五题:

(必做题)编写计算平方根函数,并和库函数进行比较测试检验。

提示:

采用牛顿迭代法,计算精度10-7。

函数原型:

doublenmysqrt(double 

x)

doublemysqrt(doublex);

doublex;

请输入自变量x:

mysqrt(x)<

库函数计算结果是:

sqrt(x)<

doublemysqrt(doublex)

doublef=1,f_;

do{

f_=f;

f=(f+x/f)/2;

}while(f-f_>

0.000000001||f_-f>

0.000000001);

returnf;

//返回最终结果到mysqrt

(1)结果为整数的:

(2)结果为非整数的:

很准确!

六、第六题:

编写函数判定一个正整数是否是递增数,即该数各位数字从左至右递增排列,例如:

1122334、123456、5599、22222222等都是递增数。

例如:

32768、43987、123

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语考试

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

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