西安交大C++随堂练习7.docx

上传人:b****6 文档编号:6615969 上传时间:2023-01-08 格式:DOCX 页数:13 大小:210.36KB
下载 相关 举报
西安交大C++随堂练习7.docx_第1页
第1页 / 共13页
西安交大C++随堂练习7.docx_第2页
第2页 / 共13页
西安交大C++随堂练习7.docx_第3页
第3页 / 共13页
西安交大C++随堂练习7.docx_第4页
第4页 / 共13页
西安交大C++随堂练习7.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

西安交大C++随堂练习7.docx

《西安交大C++随堂练习7.docx》由会员分享,可在线阅读,更多相关《西安交大C++随堂练习7.docx(13页珍藏版)》请在冰豆网上搜索。

西安交大C++随堂练习7.docx

西安交大C++随堂练习7

西安交通大学实验报告

一.实验目的

(1)掌握函数定义及函数调用;

(2)掌握函数间参数传递方式(值方式和引用方式);

(3)掌握库函数的使用;

(4)函数的参数设置和应用;

(5)局部变量与全局变量的区别与联系。

二、实验内容

(-)实验题目一:

字符串大小字母写转换

1、小写字母转换为大写字母

#include

usingnamespacestd;

charchange(charstring)

{

string=string-'a'+'A';

returnstring;

}

intmain()

{

charstring[100];

inti=0;

cout<<"请输入字符串:

";

cin.get(string,100);

cout<<"转换后是:

";

while(string[i]!

='\0')

{

if(string[i]>='a'&&string[i]<='z')

{

cout<

}

else

cout<

i++;

}

cout<

return0;

}

2、大写字母转换为小写字母

#include

usingnamespacestd;

charchange(charstring)

{

string=string-'A'+'a';

returnstring;

}

intmain()

{

charstring[100];

inti=0;

cout<<"请输入字符串:

";

cin.get(string,100);

cout<<"转换后是:

";

while(string[i]!

='\0')

{

if(string[i]>='A'&&string[i]<='Z')

{

cout<

}

else

cout<

i++;

}

cout<

return0;

}

(二)实验题目二:

调用函数绘制指定符号三角形

#include

usingnamespacestd;

voidtriangle(intr=3,charc='*')

{

inti,j;

for(i=1;i<=1;i++)

{

for(j=1;j

cout<<"";

for(j=r;j<=r;j++)

cout<

cout<

}

for(i=2;i<=2;i++)

{

for(j=1;j

cout<<"";

for(j=r-1;j<=r-1;j++)

cout<

for(j=r;j<=r;j++)

cout<<"";

for(j=r+1;j<=r+1;j++)

cout<

cout<

}

for(i=3;i

{

for(j=1;j

cout<<"";

for(j=r-i+1;j<=r-i+1;j++)

cout<

for(j=r-i+2;j<2*r+i-6;j++)

cout<<"";

for(j=2*r+i-6;j<=2*r+i-6;j++)

cout<

for(j=2*r+i-5;j<=2*r-1;j++)

cout<<"";

cout<

}

for(i=1;i<=2*r-1;i++)

cout<

cout<

}

intmain()

{

charc='#';

intn=3;

cout<<"请输入行数和字符\n";

cin>>n>>c;

triangle(n,c);

cout<

triangle(n);

cout<

triangle();

cout<

return0;

}

(三)实验题目三:

求200-1000各位数字之和为5的所有整数

#include

usingnamespacestd;

voidm(intn)

{

inti,j,k,t;

i=n/1000;

j=(n/100)%10;

k=(n/10)%10;

t=n%10;

if(i+j+k+t==5)

{cout<

}

intmain()

{

inty;

for(y=200;y<=1000;y++)

m(y);

cout<

return0;

}

(四)实验题目四:

素数判断

#include

usingnamespacestd;

intisprime(inta)

{

for(inti=2;i<=a/2;i=i++)

{

if(a%i==0)

return0;

}

return1;

}

intmain()

{

inta;

cout<<"请输入1个正整数:

";

cin>>a;

if(isprime(a))

cout<

else

cout<

return0;

}

(五)实验题目五:

牛顿迭代法解非线性方程的根

#include

#include

usingnamespacestd;

voidnewton(doublex,doublex0)

{

doublef,df;

do

{

x0=x;

f=2*x0*x0*x0-4*x0*x0+3*x0-6;

df=6*x0*x0-8*x0+3;

x=x0-f/df;

}while(fabs(f)>1e-9||fabs(x-x0)>1e-9);

}

intmain()

{

doublex=1.5;

doublex0=0;

newton(x,x0);

cout<<"2*x*x*x-4*x*x+3*x-6=0在1.5附近的牛顿迭代根为\n"<<"x="<

return0;

}

(六)实验题目六:

用弦截法求一元非线性方程f(x)=x*e^x-1在[0.5,0.6]中的根

#include

#include

usingnamespacestd;

voidjie(doublex0,doublex1)

{

doublef0,f1,f2,x2;

f0=x0*exp(x0)-1;

f1=x1*exp(x1)-1;

x2=x0-(x0-x1)*f0/(f0-f1);

f2=x2*exp(x2)-1;

while(fabs(f2)<1.0E-8)

{

x2=x0-(x0-x1)*f0/(f0-f1);

if(f0*f2<0)

x0=x2;

else

x1=x2;

}

}

intmain()

{

doublex1=0.6;

doublex0=0.5;

doublef0,f1,f2,x2;

f0=x0*exp(x0)-1;

f1=x1*exp(x1)-1;

x2=x0-(x0-x1)*f0/(f0-f1);

f2=x2*exp(x2)-1;

jie(x0,x1);

cout<<"弦截法求f(x)=x*e^x-1在[0.5,0.6]中根为\n"<<"x="<

return0;

}

问题拓展:

f=x*x*x-5*x*x+16*x-80

#include

#include

usingnamespacestd;

voidjie(doublex0,doublex1)

{

doublef0,f1,f2,x2;

f0=x0*x0*x0-5*x0*x0+16*x0-80;

f1=x1*x1*x1-5*x1*x1+16*x1-80;

x2=x0-(x0-x1)*f0/(f0-f1);

f2=x2*x2*x2-5*x2*x2+16*x2-80;

while(fabs(f2)<1.0E-8)

{

x2=x0-(x0-x1)*f0/(f0-f1);

if(f0*f2<0)

x0=x2;

else

x1=x2;

}

}

intmain()

{

doublex1=6;

doublex0=2;

doublef0,f1,f2,x2;

f0=x0*x0*x0-5*x0*x0+16*x0-80;

f1=x1*x1*x1-5*x1*x1+16*x1-80;

x2=x0-(x0-x1)*f0/(f0-f1);

f2=x2*x2*x2-5*x2*x2+16*x2-80;

jie(x0,x1);

cout<<"弦截法求f=x*x*x-5*x*x+16*x-80在[2,6]中根为\n"<<"x="<

return0;

}

(七)实验题目七:

编写函数判定一个正整数是否是递增数,即该数各位数字从左至右递增排列,显示输出0至9999999之间所有递增数。

#include

usingnamespacestd;

intk(intn)

{

inta,b,c,d,e,f,g;

a=n/1000000;

b=(n/100000)%10;

c=(n/10000)%10;

d=(n/1000)%10;

e=(n/100)%10;

f=(n/10)%10;

g=n%10;

return(a<=b&&b<=c&&c<=d&&d<=e&&e<=f&&f<=g);

}

intmain()

{

intm=0;

for(intn=1;n<10000000;n++)

if(k(n))

{

m++;

if(m<51)

cout<

if(m>11389)

cout<

}

return0;

}

二、个人小结

本次程序设计主要学习了函数的定义及调用,其中的细节有参数的设置和应用以及传递方式,还有局部变量与全部变量的区别和联系。

从学习内容上来说算不上难,只是具体在操作中调用函数总是出现这样那样的问题,即使是特别简单的问题也不那么容易解决,所以在以后学习过程中还要不断应用,已达到温故知新的目的!

具体到题目中第三题因为条件不好控制,导致图形输出总是出现这样那样的问题,最后虽然问题得到了解决,但也使源程序变得十分冗长复杂,以后一定要相出一种简单的做法来使问题得到解决!

对第七题理解不够透彻致使输出无法显示,经过请教老师解决了问题,同时也从根本上扫清了思想误区,更加透彻的了解到了函数调用的魅力!

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

当前位置:首页 > 工程科技 > 建筑土木

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

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