c++练习.docx
- 文档编号:28940468
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:41
- 大小:23.44KB
c++练习.docx
《c++练习.docx》由会员分享,可在线阅读,更多相关《c++练习.docx(41页珍藏版)》请在冰豆网上搜索。
c++练习
4.6
/*用牛顿迭代法求根。
方程为a*x*x*x+b*x*x+c*x+d=0。
系数a,b,c,d,的值依次为
1,2,3,4,由函数输入。
求xzai1附近的一个实根。
求出根后由主函数输入。
*/
#include
#include
usingnamespacestd;
floata,b,c,d;
floatanswer(floata,floatb,floatc,floatd);
floatf(floatx);
floatf1(floatx);
intmain()
{floatx;
cout<<"输入a,b,c,d:
";
cin>>a>>b>>c>>d;
x=answer(a,b,c,d);
cout<<"x="< return0; } floatanswer(floata,floatb,floatc,floatd) {floatx1,x2; x1=1; x2=x1-f(x1)/f1(x1); for(;fabs(x2-x1)>1e-5;) {x1=x2; x2=x2-f(x2)/f1(x2);} returnx2; } floatf(floatx) {floaty; y=a*x*x*x+b*x*x+c*x+d; returny; } floatf1(floatx) {floaty; y=a*x*x*3+b*x*2+c; returny; } 4.7 /*哥德巴赫猜想: 一个不小于6的偶数可以表示为两个素数之和。 */ #include usingnamespacestd; intprime(intx); voidgotbaha(intx); intmain() {intx; cout<<"请输入一个大于等于6的偶数: "; cin>>x; if(x%2==1||x<6)cout<<"error"< elsegotbaha(x); return0; } voidgotbaha(intx) {inti,j; for(i=2;i {if(prime(i)==0)continue; elsefor(j=2;j {if(prime(j)==0)continue; elseif(x==i+j)break;} if(x==i+j) {cout< break;}} } intprime(intx) {inti,y; if(x==2)y=1; elsefor(i=2;i {if(x%i==0){y=0;break;} elseif(i==x-1&&x%i! =0)y=1;} returny; } 4.8 /*用递归法求n阶勒让德多项式的值*/ #include #include usingnamespacestd; floatP(floatx,intn); intmain() {floatx; intn; cout<<"输入x,n: "; cin>>x>>n; cout<<"P(x,n)="< } floatP(floatx,intn) {floaty; if(n==0)y=1; elseif(n==1)y=x; elseif(n>=1)y=((2*n-1)*x*P(x,(n-1))-(n-1)*P(x,(n-2)))/n; else{cout<<"error"< returny; } 4.9/*汉诺塔问题*/ #include usingnamespacestd; voidmove(intn,charQ,charZ); intmain() {charQ,Z; intn; cout<<"输入n与开始的座(A,B,C)"; cin>>n>>Q>>Z; move(n,Q,Z); return0; } voidmove(intn,charQ,charZ) {charT; if(n==1)cout< else{if(Z=='B'&&Q=='A')T='C'; elseif(Z=='C'&&Q=='A')T='B'; elseif(Z=='A'&&Q=='B')T='C'; elseif(Z=='A'&&Q=='C')T='B'; elseif(Z=='B'&&Q=='C'||Z=='C'&&Q=='B')T='A'; move(n-1,Q,T); cout< move(n-1,T,Z);} } 4.11 #include #include usingnamespacestd; intP(intn); intmain() {intn; cout<<"输入n: "; cin>>n; cout<<"P(n)="< } intP(intn) {inty; if(n==1)y=1; elseif(n>1)y=n*n+P(n-1); else{cout<<"error"< returny; } 5.2 /*选择法对10个数进行排序*/ #include usingnamespacestd; intmain() {inti,j,n,k,T,a[10]; for(i=0;i<=9;i++) cin>>a[i]; for(i=0;i<9;i++) {k=i; for(j=i+1;j<=9;j++) if(a[k]>a[j]) {T=a[k];a[k]=a[j];a[j]=T;} } for(i=0;i<=9;i++) cout<<""< cout< } 5.3 /*计算3x3对角线元素之和*/ #include #include usingnamespacestd; intmain() {inti,j,a[3][3]; for(i=0;i<=2;i++) for(j=0;j<=2;j++) cin>>a[i][j]; for(i=0;i<=2;i++) {for(j=0;j<=2;j++) cout< cout< } cout< return0; } 5.4 /*对于已排好的数组,将一个数按原来的顺序插入其中*/ #include #include usingnamespacestd; intmain() {inti,j,k,n,a[11]={11,21,32,43,51,61,71,81,91,120}; cin>>k; for(i=0;i<10;i++) if(k j=10; while(j>i) {a[j]=a[j-1]; j--; } a[i]=k; for(n=0;n<=10;n++) cout< cout< return0; } 5.5 /*将一个数组的值按逆序重新存放*/ #include #include usingnamespacestd; intmain() {inti,n,a[6]={8,6,5,4,2,1},b[6]; for(n=0;n<=5;n++) cout< cout< for(i=0;i<6;i++) b[i]=a[5-i]; for(n=0;n<=5;n++) cout< cout< return0; } 5.6 /*10行杨辉三角形*/ #include #include usingnamespacestd; intmain() {inti,j,k,n,a[10][10]; for(i=0;i<10;i++) for(j=0;j<10;j++) if(j>i)a[i][j]=0; elseif(j==i||j==0)a[i][j]=1; elsea[i][j]=a[i-1][j-1]+a[i-1][j]; for(k=0;k<10;k++) {for(n=0;n<10;n++) if(a[k][n]! =0)cout< cout< return0; } 5.7 /*找出一个二维数组的鞍点,即该位置上的元素在该行最大,该列最小。 */ #include #include usingnamespacestd; #defineN4 #defineM5 intmain() {inti,j,k,n,t,a[N][M]; boolf=0; for(i=0;i for(j=0;j cin>>a[i][j]; for(i=0;i {for(j=0;j cout< cout< } for(i=0;i {for(j=0,k=0;j if(a[i][k] for(j=0,n=k,t=0;j if(a[j][k] if(t==i){cout<<"a["< cout< } if(f==0)cout<<"无鞍点"; cout< return0; } 5.8 /*有15个数由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是第几个元素*/ #include usingnamespacestd; intmain() {inti,x,m,n,t,c,a[15]; cout<<"请输入15个数: "; for(i=0;i<15;i++) cin>>a[i]; cout<<"请输入x数: "; cin>>x; if(x>a[14]&&x elseif(x==a[14])cout<<"x="< else {for(n=0,m=14,c=0;c<=5;c++) {t=m+n; if(a[t/2]==x)break; elseif(a[t/2] elsem=t/2; } if(c==5)cout<<"无此数"< elsecout<<"x="< return0; } 5.9 /*给出年月日,计算是第几天*/ #include usingnamespacestd; intmain() {inti,j,a,b,c,t,ar[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; cout<<"输入年,月,日: "; cin>>a>>b>>c; t=0; if(a%400==0||a%100! =0&&a%4==0)ar[2]=29; for(i=0;i t=t+ar[i]; t=t+c; cout<<"第"< return0; } 5.10 /*统计每行中的大写小写数字空格其他字符的字数*/ #include #include usingnamespacestd; #defineN10 intmain() {chara[3][N]; intn=0; voidchoose(charstr[][N],int); while(n<3) {cout<<"input"< ";/*不能输入空格,空格后的数据会自动赋值给下一个cin语句*/ cin>>a[n];/*若输入的字符少于10,则剩下的自动填充\0,统计在其他字符中*/ choose(a,n); n++; } return0; } voidchoose(charstr[][N],intn) {inta=0,b=0,c=0,d=0,e=0,j; for(j=0;j if(str[n][j]<='Z'&&str[n][j]>='A')a++; elseif(str[n][j]<='z'&&str[n][j]>='a')b++; elseif(str[n][j]<='9'&&str[n][j]>='0')c++; elseif(str[n][j]==32)d++; elsee++; cout<<"BW: "< <<"SW: "< <<"NU: "< <<"KG: "< <<"EL: "< } 5.11 /*输出图形 ***** ***** ***** ***** ***** */ #include #include usingnamespacestd; intmain() {inti,j; stringa="*****"; for(i=1;i<=5;i++) {for(j=1;j cout<<''; cout< } return0; } 5.12 /*译码: 第i个译为第26-i+1个字母*/ #include #include usingnamespacestd; intmain() {inti,j; chara[100]; gets(a); cout<<"原文: "< j=strlen(a); for(i=0;i if(a[i]>='A'&&a[i]<='Z')a[i]='Z'-a[i]+65; elseif(a[i]>='a'&&a[i]<='z')a[i]='z'-a[i]+97; elsea[i]=a[i]; cout<<"密码: "< return0; } 5,14 /*输入n个字符串,将它们按字母由小到大的顺序排列打出*/ #include #include usingnamespacestd; intmain() {stringt,a[100]; inti,j,n,k; cout<<"inputn: "; cin>>n; for(i=0;i {cout<<"inputstring: "; cin>>a[i];} for(i=0;i for(j=k=i;j if(a[k]>a[j]){t=a[k];a[k]=a[j];a[j]=t;} for(i=0;i cout< return0; } 5.15 /*输入n个字符串,把其中以A开头的字符串打出*/ #include #include usingnamespacestd; intmain() {stringt,a[100]; inti,j,n,k; cout<<"inputn: "; cin>>n; for(i=0;i {cout<<"inputstring: "; cin>>a[i];} for(i=0;i if(a[i]>"A"&&a[i]<"B")cout< return0; } 5.17 /*输入10个学生的姓名学号和成绩,将其中的不及格者的姓名学号和成绩输出*/ #include #include usingnamespacestd; intmain() {stringname[10],num[10]; inti,grade[10]; for(i=0;i<10;i++) {cout<<"pleaseinput"< "; cin>>name[i]>>num[i]>>grade[i]; cout< } for(i=0;i<10;i++) if(grade[i]<60)cout< return0; } 6.4 #include usingnamespacestd; intmain() {inti,j,n,m,a[100],b[100],*p,*q; p=a;q=b; cin>>n>>m; for(i=0;i cin>>a[i];"<
"<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 练习