C语言程序设计第四版第六章答案_谭浩强(2)

2018-12-03 19:08

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(\ printf(\ } return 0; }

8、 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。 解:

#include #define N 4

#define M 5 /* 数组为4行5列 */ int main() {

int i,j,k,a[N][M],max,maxj,flag;

printf(\

for (i=0;i

{max=a[i][0]; /* 开始时假设a[i][0]最大 */ maxj=0; /* 将列号0赋给maxj保存 */ for (j=0;jmax) {max=a[i][j]; /* 将本行的最大数存放在max中 */ maxj=j; /* 将最大数所在的列号存放在maxj中 */ }

flag=1; /* 先假设是鞍点,以flag为1代表 */ for (k=0;ka[k][maxj]) /* 将最大数和其同列元素相比 */ {flag=0; /* 如果max不是同列最小,表示不是鞍点令flag1为0 */ continue;}

if(flag) /* 如果flag1为1表示是鞍点 */ {printf(\ /* 输出鞍点的值和所在行列号 */ break; } }

if(!flag) /* 如果flag为0表示鞍点不存在 */ printf(\ return 0; }

9、 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。 解:

#include #define N 15 int main()

{ int i,number,top,bott,mid,loca,a[N],flag=1,sign; char c;

printf(\ scanf(\ i=1;

while(i

{scanf(\ if (a[i]>=a[i-1]) i++;

else

printf(\ }

printf(\

for (i=0;i

{printf(\ scanf(\ 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(\ sign=1; }

else if (number

top=mid+1; }

if(!sign||loca==-1)

printf(\ printf(\ scanf(\ if (c=='N'||c=='n') flag=0; } return 0; }

10、 有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。 解:

#include \void main()

{ int i,j,upp,low,dig,spa,oth; char text[3][80];

upp=low=dig=spa=oth=0; for(i=0;i<3;i++)

{ printf(\ gets(text[i]);

for(j=0;j<80&&text[i][j]!=0;j++)

{ if (text[i][j]>='A'&&text[i][j]<='Z') upp++;

else if (text[i][j]>='a'&&text[i][j]<='z') low++;

else if (text[i][j]>='0'&&text[i][j]<='9') dig++;

else if (text[i][j]==' ') spa++; else

oth++; } }

printf(\ printf(\ printf(\ :%d\\n\ printf(\ :%d\\n\ printf(\ :%d\\n\ }

11、 输出以下图案:

* * * * * * * * * * * * * * * * * * * * * * * * *

解:

#include int main()

{ char a[5]={'*','*','*','*','*'}; int i,j,k;

char space=' '; for (i=0;i<5;i++) { printf(\ printf(\ \ for (j=1;j<=i;j++) printf(\ for (k=0;k<5;k++) printf(\ }

printf(\ return 0; }

12、 有一行电文,已按下面规律译成密码:

A →Z a →z B →Y b →y C →X c →x . . . . . .

即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。 解: (1)

#include int main() { int j,n;

char ch[80],tran[80];

printf(\ gets(ch);

printf(\ :%s\ j=0;

while (ch[j]!='\\0')

{ if ((ch[j]>='A') && (ch[j]<='Z')) tran[j]=155-ch[j];

else if ((ch[j]>='a') && (ch[j]<='z')) tran[j]=219-ch[j]; else


C语言程序设计第四版第六章答案_谭浩强(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:毕业论文选题参考

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: