C语言 电气1102 朱龙胜 11291065 实验五.docx
- 文档编号:3650945
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:10
- 大小:237.24KB
C语言 电气1102 朱龙胜 11291065 实验五.docx
《C语言 电气1102 朱龙胜 11291065 实验五.docx》由会员分享,可在线阅读,更多相关《C语言 电气1102 朱龙胜 11291065 实验五.docx(10页珍藏版)》请在冰豆网上搜索。
C语言电气1102朱龙胜11291065实验五
实验五
姓名朱龙胜班级电气1102学号112910651根据泰勒多项式求cosx的近似值(-∞ +x4/4! -...(-1)k*x2k/(2k)! +... 源程序: /*Note: 用泰勒公式计算余弦值*/ #include"stdio.h" #include"math.h" #definepi3.1416 voidmain() { floata,x,cosx,an; intk,s; printf("请输入角度a(度): \n"); scanf("%f",&a); x=a*pi/180; k=1;s=1;cosx=1;an=1; while(fabs(an)>=1e-4){s=-s; an=an*x*x*s/(2*k)*(2*k-1); cosx=cosx+an;k++;} printf("cosx=%10.4f",cosx);} 运行结果: 1请输入n个数,求其最小公倍数和最大公约数 源程序: /*Note: YourchoiceisCIDE*/ #include"stdio.h" voidmain() { intm,n,r,p,i,k,gcd,lcm; printf("pleaseentertwonumbersm,n: \n"); scanf("%d,%d",&m,&n); p=m*n;r=m%n; while(r! =0){m=n;n=r;r=m%n;} gcd=n;lcm=p/gcd; printf("pleaseinputthenumberofthearrayk: \n");scanf("%d",&k); i=3; while(i<=k){printf("请输入第%d个数",i);scanf("%d",&m);i++;p=m*lcm;while(r! =0){n=m;r=lcm%n;}gcd=n;lcm=p/m;} printf("gcd=%d,lcm=%d",gcd,lcm);} 运行结果: 3.输入任意一个整数n,产生出它的逆序数放于m中,并将n和m分别输出。 定义: 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。 一个排列中逆序的总数就称为这个排列的逆序数。 逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。 如2431中,21,43,41,31是逆序,逆序数是4,为偶排列。 源程序: #include #include voidmain() { inta[100],i,j,k,count,n,m; printf("请输入一个整数: \n"); scanf("%d",&n);i=0;m=n; while(n>0) { a[i]=n%10;n=n/10;i++; } count=0; for(j=0;j { for(k=j+1;k if(a[j]<=a[j+1]) count++; } printf("%d的逆序数是%d",n,count); } 运行结果: 4.用牛顿迭代法求下面方程在1.5附近的根: 2x*x*x-4x*x+3x–6=0 背景知识: 设r是f(x)=0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y=f(x)的切线L,L的方程为y=f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标x1=x0-f(x0)/f'(x0),称x1为r的一次近似值。 过点(x1,f(x1))做曲线y=f(x)的切线,并求该切线与x轴交点的横坐标x2=x1-f(x1)/f'(x1),称x2为r的二次近似值。 重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式。 源程序: /*Note: 用牛顿迭代法解方程*/ #include #include voidmain() { floatx0,x1; printf("请输入x0(等于1.5)的值: \n"); scanf("%f",&x0); x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3); while(fabs(x1-x0)>1e-6){x0=x1;x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3);} printf("x1=%f",x1);} 运行结果: 5、输入任意一个大偶数n,验证哥德巴赫猜想。 即任一大于 6的偶数都可写成两个质数之和 源程序: /*Note: 验证哥德巴赫猜想*/ #include"stdio.h" #include"math.h" voidmain() { intn,x,y,p; printf("请输入一个大于六的整数n: \n"); scanf("%d",&n); for(x=2;x =0)break; y=n-x; for(p=2;p<=sqrt(y);p++)if(y%p! =0)break;if(n==x+y)printf("%d,%d,%d\n",n,x,y);}} 运行结果: 6一个数如果恰好等于它的因数之和,这个数称为“完数”,编程找出1000以内的所有完数。 源程序: /*找出1000以内的完数*/ #include"stdio.h" voidmain() { inti,p,sum; sum=0; for(i=1;i<=1000;i++){sum=0;for(p=1;p<=i;p++)if(i%p==0){sum=sum+p;if(i==sum) printf("%d\n",i);}}} 运行结果: 7、古典算术问题-搬砖头: 某地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬一块。 问用45人正好搬45块砖,有多少种搬法? 源程序: /*Note: 搬砖块问题*/ #include"stdio.h" voidmain() { intx,y,z; for(x=0;x<=15;x++) for(y=0;y<=22;y++){ z=45-x-y; if(z%2==0&&45==3*x+2*y+z/2) printf("%d,%d,%d\n",x,y,z);}} 运行结果: 5.将一笔钱(大于8分,小于1元,精确到分)换算成1分,2分,5分硬币的组合。 输入金额,问: 有几种换法? 针对每一种换法,输出各种面额的硬币数量,要求每种硬币至少有一枚。 源程序: /*Note: 分钱问题*/ #include"stdio.h" voidmain() { intm,a,b,x,y,z; printf("请输入金额(单位: 分)m: \n"); scanf("%d",&m); if(m<8||m>100){printf("您输入的金额无效,请重新输入(单位: 分)m: \n");scanf("%d",&m);} a=m;b=(int)m/2; for(x=1;x<=a;x++) for(y=1;y<=b;y++){z=(int)(m-x-2*y)/5; if(m==x+2*y+5*z&&z>0) printf("%d,%d,%d\n",x,y,z);}} 运行结果: 6.打印以下图案: 源程序: #include voidoutput1(inti,charch); voidmain() { intn,i,j; printf("请输入行数: "); scanf("%d",&n); for(i=1;i<=n;i++){ output1(n-i,''); for(j=1;j<=i;j++)output1(1,'0'+j); for(j=i-1;j>=1;j--)output1(1,'0'+j); output1(1,'\n'); } for(i=n-1;i>=1;i--){ output1(n-i,''); for(j=1;j<=i;j++)output1(1,'0'+j); for(j=i-1;j>=1;j--)output1(1,'0'+j); output1(1,'\n');} } voidoutput1(inti,charch){ intk; for(k=1;k<=i;k++) putchar(ch);} 运行结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言 电气1102 朱龙胜 11291065 实验五 语言 电气 1102 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)