最新C语言程序设计第四版第六章答案谭浩强.docx
- 文档编号:6346049
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:16
- 大小:19.22KB
最新C语言程序设计第四版第六章答案谭浩强.docx
《最新C语言程序设计第四版第六章答案谭浩强.docx》由会员分享,可在线阅读,更多相关《最新C语言程序设计第四版第六章答案谭浩强.docx(16页珍藏版)》请在冰豆网上搜索。
最新C语言程序设计第四版第六章答案谭浩强
1、用筛选法求100之内的素数。
解:
#include
#include
intmain()
{inti,j,n,a[101];
for(i=1;i<=100;i++)
a[i]=i;
a[1]=0;
for(i=2;i for(j=i+1;j<=100;j++) {if(a[i]! =0&&a[j]! =0) if(a[j]%a[i]==0) a[j]=0; } printf("\n"); for(i=2,n=0;i<=100;i++) {if(a[i]! =0) {printf("%5d",a[i]); n++; } if(n==10) {printf("\n"); n=0; } } printf("\n"); return0; } 2、用选择法对10整数排序。 解: #include intmain() {inti,j,min,temp,a[11]; printf("enterdata: \n"); for(i=1;i<=10;i++) {printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("Theorginalnumbers: \n"); for(i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for(i=1;i<=9;i++) {min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThesortednumbers: \n"); for(i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return0; } 3、求一个3×3的整型矩阵对角线元素之和。 解: #include intmain() { inta[3][3],sum=0; inti,j; printf("enterdata: \n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%3d",&a[i][j]); for(i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum); return0; } 4、有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。 解: #include intmain() {inta[11]={1,4,6,9,13,16,19,28,40,100}; inttemp1,temp2,number,end,i,j; printf("arraya: \n"); for(i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); printf("insertdata: "); scanf("%d",&number); end=a[9]; if(number>end) a[10]=number; else {for(i=0;i<10;i++) {if(a[i]>number) {temp1=a[i]; a[i]=number; for(j=i+1;j<11;j++) {temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } printf("Nowarraya: \n"); for(i=0;i<11;i++) printf("%5d",a[i]); printf("\n"); return0; } 5、将一个数组中的值按逆序重新存放。 例如,原来顺序为8、6、5、4、1。 要求改为1、4、5、6、8。 解: #include"stdio.h" #defineN5 voidmain() {inta[N],i,temp; printf("enterarrya: \n"); for(i=0;i scanf("%d",&a[i]); printf("arrya: \n"); for(i=0;i printf("%4d",a[i]); for(i=0;i {temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp; } printf("\nNow,arrya: \n"); for(i=0;i printf("%4d",a[i]); printf("\n"); } 6、输出以下的杨辉三角形(要求输出10行)。 1 11 121 1331 14641 15101051 解: #include"stdio.h" voidmain() {inti,j,n=0,a[31][31]={0}; while(n<1||n>30)/*最多可输出30行*/ {printf("请输入杨辉三角形的行数: "); scanf("%d",&n); } for(i=0;i a[i][0]=1;/*第一列全置为一*/ for(i=1;i for(j=1;j<=i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j];/*每个数是上面两数之和*/ for(i=0;i {for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf("\n"); } } 7、输出“魔方阵”。 所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。 例如,三阶魔方阵为 816 357 492 解: #include intmain() {inta[15][15],i,j,k,p,n; p=1; while(p==1) {printf("entern(n=1--15): "); scanf("%d",&n); if((n! =0)&&(n<=15)&&(n%2! =0)) p=0; } for(i=1;i<=n;i++) for(j=1;j<=n;j++) a[i][j]=0; j=n/2+1; a[1][j]=1; for(k=2;k<=n*n;k++) {i=i-1; j=j+1; if((i<1)&&(j>n)) {i=i+2; j=j-1; } else {if(i<1)i=n; if(j>n)j=1; } if(a[i][j]==0) a[i][j]=k; else {i=i+2; j=j-1; a[i][j]=k; } } for(i=1;i<=n;i++) {for(j=1;j<=n;j++) printf("%5d",a[i][j]); printf("\n"); } return0; } 8、找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。 也可能没有鞍点。 解: #include #defineN4 #defineM5/*数组为4行5列*/ intmain() { inti,j,k,a[N][M],max,maxj,flag; printf("pleaseinputmatrix: \n"); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i {max=a[i][0];/*开始时假设a[i][0]最大*/ maxj=0;/*将列号0赋给maxj保存*/ for(j=0;j if(a[i][j]>max) {max=a[i][j];/*将本行的最大数存放在max中*/ maxj=j;/*将最大数所在的列号存放在maxj中*/ } flag=1;/*先假设是鞍点,以flag为1代表*/ for(k=0;k if(max>a[k][maxj])/*将最大数和其同列元素相比*/ {flag=0;/*如果max不是同列最小,表示不是鞍点令flag1为0*/ continue;} if(flag)/*如果flag1为1表示是鞍点*/ {printf("a[%d][%d]=%d\n",i,maxj,max);/*输出鞍点的值和所在行列号*/ break; } } if(! flag)/*如果flag为0表示鞍点不存在*/ printf("Itisnotexist! \n"); return0; } 9、有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。 如果该数不在数组中,则输出“无此数”。 解: #include #defineN15 intmain() {inti,number,top,bott,mid,loca,a[N],flag=1,sign; charc; printf("enterdata: \n"); scanf("%d",&a[0]); i=1; while(i {scanf("%d",&a[i]); if(a[i]>=a[i-1]) i++; else printf("enterthisdataagain: \n"); } printf("\n"); for(i=0;i printf("%5d",a[i]); printf("\n"); while(flag) {printf("inputnumbertolookfor: "); scanf("%d",&number); sign=0; top=0;//top是查找区间的起始位置 bott=N-1;//bott是查找区间的最末位置 if((numbera[N-1]))//要查的数不在查找区间内 loca=-1;//表示找不到 while((! sign)&&(top<=bott)) {mid=(bott+top)/2; if(number==a[mid]) {loca=mid; printf("Hasfound%d,itspositionis%d\n",number,loca+1); sign=1; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 语言程序设计 第四 第六 答案 谭浩强