C程序设计-第七章课后练习答案.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计(第三版)谭浩强 著 课后习题答案第7章 2009-05-16 10:56 8 1 6 3 5 7 4 9 2 要求打印出由1 到n2 的自然数构成的魔方阵。 /******************************************************************** **算法思路:魔方阵中各数的排列规律如下: **(1)将1放在第一行中间一列 **(2)从2开始直到n×n止各数依次按下列规则存放:每一个数存放的行比前一个数的** 行数减1,列数加1 **(3)如果上一个数的行数为1,则下一个数的行数为n(指最下一行) **(4)当上一个数的列数为n时,下一个数的列数应为1,行数减1 **(5)如果按上面的规则确定的位置数已有数,或者上一个数是第1行第n列时,则把 ** 下一个数放在上一个数的下面 ********************************************************************/ #include stdio.h void main(){ int a[16][16],i,j,k,p,m,n; /*初始化*/ p=1; while(p==1){ printf(input n.(0n=15,n是奇数.)\n); scanf(%d,n); if((n != 0) (n=15) (n%2 != 0)) { printf(矩阵阶数是%d\n,n); 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((i1)(jn)){ i=i+2; j=j-1; } else{ if(i1) i=n; if(jn) 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); } } 7.8 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。 也可能没有鞍点。 #include stdio.h #define N 10 #define M 10 void main(){ int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj; printf(\ninput row n:); scanf(%d,n); printf(\ninput column m:); scanf(%d,m); for(i=0;in;i++){ printf(第%d行?\n,i); for(j=0;jm;j++) scanf(%d,a[i][j]); } for(i=0;in;i++){ for(j=0;jm;j++) printf(%5d,a[i][j]); printf(\n); } flag2=0; for(i=0;in;i++){ max=a[i][0]; for(j=0;jm;j++) if(a[i][j]max) { max=a[i][j]; maxj=j; } for(k=0,flag1=1;kn flag1;k++) if(maxa[k][maxj]) flag1=0; if(flag1){ printf(\n第%d行,第%d列的%d是鞍点\n,i,maxj,max); flag2=1; } } if(!flag2) printf(\n矩阵中无鞍点!\n); } 7.9 有15 个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找 法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。 #include stdio.h #define N 15 void main() { int x,top,bot,middle,succ; int a[N]={1,3,5,7,9,11,12,35,46,57,68,79,80,91,102}; printf(Enter x:); scanf(%d,x); succ=0; top=0;bot=N-1;

文档评论(0)

enxyuio + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档