习题讲解(二)_第1页
习题讲解(二)_第2页
习题讲解(二)_第3页
习题讲解(二)_第4页
习题讲解(二)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008 输入m、n和p的值,求s = 的值。注意判断运算中的溢出。333555121212mnp华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w using namespace std;w double f( long k,long num );w int main()w w long m,n,p; double s,f1,f2,f3;w cou

2、t mnp;w f1=f( 1,m );w f2=f( 3,n );w f3=f( 5,p );w if (f1 & f2 & f3 )w w s = ( f1 + f2) /f3;w cout s= s endl;w w else w cout溢出!n;w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w double f( long k,long num )w w long i; w double sum=0;w for( i=1; i=num & sum2147483647; i+ )w w sum = sum + pow( double (i),doubl

3、e (k) ); w w if (i=num) w return 0; /溢出时返回w return sum;w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w 已知勒让德多项式为:w 编写程序,从键盘输入x和n的值,使用递归函数求pn(x)的值。1210( )1(21)( )(1)( )/1nnnnpxxnnpxnpxnn华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w #includew using namespace std;w double p( double x,int n );w int main()w int n;w

4、double x;w cout x n;w cout p( x , n )= p( x,n ) endl;w double p( double x,int n )w double t1,t2;w if( n = 0 )w return 1;w elsew if( n = 1 ) w return x;w else w t1 = ( 2*n-1 )*p( x,n-1 );w t2 = ( n-1 )*p( x,n-2 );w return ( t1-t2 )/n; w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w 把以下程序中的print()函数改写为等价的递归

5、函数。w #include w using namespace std;w void print( int w ) w for( int i = 1; i = w; i + )w for( int j = 1; j = i; j + )w cout i ;w cout endl;w int main()w print( 5 ); w 程序运行结果:w 1 w 2 2w 3 3 3w 4 4 4 4w 5 5 5 5 5华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w #includew using namespace std;w void print(int w)

6、w w int i;w if( w )w print( w-1 );w for( i=1; i=w; i+ ) w cout w ;w cout endl;w w w void main()w w print( 5 );w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w 已知用梯形法求积分的公式为:w ,其中h = ( ba ) / n,n为积分区间的等分数,编程序求如下积分的值。要求把求积分公式编写成一个函数,并使用函数指针作为形式参数。调用该函数时,给定不同的被积函数作为实际参数求不同的积分。w 11( ( )( )()2nnih f af bThf aih

7、1204d1xx2211dxx20sin dx x华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w #includew #includew using namespace std;w double f1( double x )w return 4 / ( 1 + x*x ); w w double f2( double x )w return sqrt( 1 + x*x ); w w double f3( double x )w return sin( x ); w w double trap( double( *fun )( double x ), double

8、 a,double b,long n )w double t,h; int i;w t = ( ( *fun )(a) + ( *fun )( b ) ) / 2.0;w h = ( b - a ) / n;w for( i=1; i=n-1; i+ ) t += ( *fun )( a + i * h );w t *= h;w return t;w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w int main()w double t1,t2,t3;w t1 = trap( f1,0,1,10000 );w cout t1= t1 endl; w t2 =

9、trap( f2,1,2,10000 );w cout t2= t2 endl;w t3 = trap( f3,0,3.14159265/2,10000 );w cout t3= t3 endl;w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w 给定求组合数公式为:,编一程序,输入m和n的值,求的值。注意优化算法,降低溢出可能。要求主函数调用以下函数求组合数:w int Fabricate( int m, int n ) ;/返回的值w Fabricate函数内又须调用Multi函数:w int Multi( int m, int n ) ;/ 返回 mm-1

10、 nw 程序由4个文件组成。头文件存放函数原型作为调用接口;其他3个cpp文件分别是main、Fabricate和Multi函数的定义。华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w /Fabricate.hw #ifndef FABRICATE_Hw #define FABRICATE_Hw int Fabricate( int m,int n );w int Multi( int m, int n );w #endif华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w /main.cppw #includew using name

11、space std;w #include Fabricate.hw int main()w int m ,n;w cout m n;w cout Fabricate( m , n )= Fabricate( m, n ) endl;w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w /Fabricate.cppw #include Fabricate.hw int Fabricate( int m, int n )w return Multi( m, m-n + 1 ) / Multi( n, 1 );w w /Multi.cppw int Multi( int

12、 m, int n )w int i, t = 1;w for( i=n; i=m; i+ )w t = t * i;w return t;w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 200820081、将一个正整数分解质因数。例如:输入、将一个正整数分解质因数。例如:输入90,打印出打印出90=2*3*3*5。Input本题有多组数据。每组数据只有一个整数本题有多组数据。每组数据只有一个整数N,独占一行。,独占一行。(1N1000000)Output对每组数据,按照例子对每组数据,按照例子90=2*3*3*5的格式输出结果。的格式输出结果。Sample Input9032

13、9Sample Output90=2*3*3*5329=7*47华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w#include wusing namespace std;wint main()wwint num,i;wwhile(cinnum)wwcoutnum=;w/分解.从2到num检查,看看是不是因子wfor(i=2; i=num; i+)wwhile(num%i=0)wwnum/=i;wif (num != 1)wwcouti*;wwelsewwcoutiendl;wwwreturn 0;w华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20

14、082008w 4、验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。请输入一个偶数,将其表示成两个素数之和。w 输入:4w 输出:4=2+2w 输入:200w 输出:200=3+197华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w#include w#include wusing namespace std;wint prime(int m)wwint i,yes=1,k;wk = sqrt(double(m);wfor (i = 2; i num;wif (num = 2) cout2=1+1endl;welse if (num = 3) co

15、ut3=1+2endl;w elsewfor (int j = 2; j = num/2; j+)wwif( prime(j)&prime(num-j)wwcoutnum=j+num-jendl;wbreak;wwwwreturn 0;w华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w1.有一种计算机病毒叫黑色星期五,如果当天是有一种计算机病毒叫黑色星期五,如果当天是13号,又恰好是星期五,就会发作起来毁坏计算机的号,又恰好是星期五,就会发作起来毁坏计算机的存储系统,输入存储系统,输入2015年的一个日期(输入格式为月,年的一个日期(输入格式为月,日),判断该日是

16、否会有病毒发作。(注:日),判断该日是否会有病毒发作。(注:2015年年1月月1日为星期日为星期4)w 输入:输入: 11 13w输出:输出:Yesw 输入:输入: 2 1w输出:输出:No华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w #include w using namespace std;w int main()w w int month, day;w cinmonthday;w int firstFriday = 2; w int days_in_month12 = 31,28,31,30,31,30,31,31,30,31,30,31;w int

17、N = 0;w for (int i = 0; i month-1; i+)w N += days_in_monthi; w N += day;w if ( (N % 7 = firstFriday) & (day = 13) )w coutYesendl; w elsew coutNoendl; w return 0;w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 200820082.小王对既是素数又是回文的数特别感兴趣。比如说小王对既是素数又是回文的数特别感兴趣。比如说151既是素数既是素数又是个回文。现在小王想要你帮助他找出某个范围内的素数回文又是个回文。现在小王想要你帮

18、助他找出某个范围内的素数回文数,请你写个程序找出数,请你写个程序找出 a 跟跟b 之间满足条件的数。之间满足条件的数。(5 = a b = 100,000,000);Input输入输入a和和b(5 = a b = 100,000,000)Output按从小到大输出按从小到大输出a,b之间所有满足条件的素数回文数之间所有满足条件的素数回文数华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w #include w #includew using namespace std;w int prime(int a)w w int i;w if(a = 1)wreturn 0;

19、w for(i = 2;i sqrt(double)a)wreturn 1;w return 0;w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w int huiwen(int n) w w int i,j,y = 0,f = 1; w int a10;w while(n != 0) w ay = n%10; wn = n/10;wy+; w w for(i = 0,j = y-1; i mn;w if(!(m%2)w m+;w for(; m = n; m += 2)w if(huiwen(m)=1 & prime(m)=1)wcoutmendl;w ret

20、urn 0; w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 200820083.有有n(0n=50,且,且n为整数)个人围成一圈,顺序排号(为整数)个人围成一圈,顺序排号(1,2,n)。从)。从第一个人开始报数(从第一个人开始报数(从1到到3报数),凡报到报数),凡报到3的人退出圈子,问最后留下的是的人退出圈子,问最后留下的是原来第几号的那位。原来第几号的那位。Input本题有多组数据。每组数据只有一个整数本题有多组数据。每组数据只有一个整数N,独占一行。,独占一行。(1N50)Output对每组数据,输出相应的结果编号。对每组数据,输出相应的结果编号。Sample Inpu

21、t2050Sample Output2011华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w #includew using namespace std;w #define nmax 50w int main()w wint i,k,m,n,numnmax,*p;wwhile(cinn)wwp = num;wfor(i = 0; i n; i+)w*(p+i) = i+1;wi = 0;wk = 0;wm = 0;w华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w while(m n-1)wwif(*(p+i) != 0) wk+;w

22、if(k = 3)ww/couti+1 ;w*(p+i) = 0;wk = 0;wm+;wwi+;wif(i = n) wi = 0;wwwhile(*p = 0) wp+;wcout*pendl;ww return 0;w 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w 1.预测电梯到达时间w 小明在图书馆的某一层等电梯,突发奇想,欲预测电梯到达时间。设电梯上一层楼需要5s,下一层楼需要3s,电梯停在每一层等待同学进出的平均时间为6s。小明到达电梯门口时,电梯刚从1楼出发且电梯还需到达其他两个楼层。请设计程序,帮助小明预测电梯到达时间。华南理工大学计算机学院华

23、南理工大学计算机学院 周霭如周霭如 20082008w #include w #include w using namespace std;w int main()w wint x1, x2, xNow; wint waitTime;wwhile (cin x1 x2 xNow)wwaitTime=0;wwaitTime += (x1-1)*5; wwaitTime += 6; wx2 - x1 0 ? (waitTime += (x2 - x1) * 5) : (waitTime += (x1 - x2) * 3); wwaitTime += 6; wxNow - x2 0 ? (waitT

24、ime += (xNow - x2) * 5) : (waitTime += (x2 - xNow) * 3);wcout waitTime endl;ww 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w 2.加法逆与乘法逆w 加法逆和乘法逆是密码学中的两个概念.设有两个正整数m、n,满足mn且n0的条件,则m在n内的加法逆k(k为小于n且不为0 的正整数)满足 (m+ k)mod n=0, m在n内的乘法逆l(l小于n且不为0)满足 (m*l) mod n =1。请编写程序,输入两个正整数n、m,计算输出m在n内的加法逆与乘法逆,如不存在,则输出0.华南理工大

25、学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w 3.判断圆间关系w 平面上,圆与圆之间的关系有五种:内含,内切,相交,外切,外离。五种关系的判别依据是圆心距d与他们之间的半径R,r的关系,如下:内含:0d|R-r|; 内切:d=|R-r|; 相交:|R-r|d|R+r|。请编写程序,输入两个圆的圆心坐标和半径,判断两圆之间的关系。华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w #include w #include w using namespace std;w i

26、nt main()wint times=0;wcintimes;wfor (int i=0;ix1y1r1x2y2r2;wdouble dis=0,R=0,r=0;wdis=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);wR=r1r2?r1:r2;wr=r1(R+r)coutEendl;welse if(dis=(R+r) coutD(R-r) & dis(R+r)coutCendl;welse if (dis =(R-r) coutBendl;welse if(dis =0) coutAendl;welse coutnoendl;w华南理工大学计算机学院华南理工大学

27、计算机学院 周霭如周霭如 20082008w 4.类斐波拉契数列w 有一种数列跟Fibonacci数列很相似,称之为“类斐波拉契数列”,其具有如下规律:F(0)=3, F(1)=7, F(n)=F(n-1)+F(n-2),请编写程序,求出数列中第N个项的值。华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20082008w #include w #include w using namespace std;w int main()w int nPrepre, nPre, n; wwhile (cin n)wif (n = 0)cout 3 endl;welse if (n = 1)cout 7 endl;welsewnPrepre = 3;wnPr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论