算法设计与分析第三章课后答案吕国英主编

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2、#include

void main()

{

int a[6][6],b[6],i,j;

printf("请输入6个整数:");

for(i=0;i<6;i++)

{

scanf("%d",&b[i]);

}

for(i=0;i<6;i++)

{

a[0][i]=b[i];

}

for(i=1;i<=5;i++)

a[i][0]=b[6-i];

for(i=1;i<=5;i++)

for(j=1;j<=5;j++)

{

a[i][j]=a[i-1][j-1];

}

for(i=0;i<=5;i++)

{

for(j=0;j<=5;j++)

printf("%d ",a[i][j]);

printf("\n");

}

}

3、#include

void main()

{

int i,j,count,n;

int a[100][100];

printf("请输入矩阵的阶n=");

scanf("%d",&n);

count=1;

for(i=1;i<=n/2;i++)

{

for(j=i;j<=n-i+1;j++)//上侧

{

a[i][j]=count;

count++;

}

for(j=i+1;j<=n-i;j++)//右侧

{

a[j][n-i+1]=count;

count++;

}

for(j=n-i+1;j>=i+1;j--)//下侧

{

a[n-i+1][j]=count;

count++;

}

for(j=n-i+1;j>=i+1;j--)//左侧

{

a[j][i]=count;

count++;

}

}

if(n%2==1)

{

i=(n+1)/2;

a[i][i]=n*n;

}

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

printf("%2d ",a[i][j]);

printf("\n");

}

}

4、#include

void main()

{

int i,j,n,a[100][100],count=1;

printf("请输入方阵的阶n:");

scanf("%d",&n);

for(i=1;i<=n;i++)

for(j=1;j<=i;j++)

{

a[i-j+1][j]=count;

count++;

}

for(i=1;i<=n;i++)

{

for(j=1;j<=n-i+1;j++)

printf("%4d",a[i][j]);

printf("\n");

}

}

5、#include

void main()

{

int i,j,count,n;

int a[100][100];

printf("请输入矩阵的阶n=");

scanf("%d",&n);

count=1;

for(i=1;i<=n/2;i++)

{

for(j=i;j<=n-i+1;j++)//上侧

{

a[i][j]=count;

}

for(j=i+1;j<=n-i;j++)//右侧

{

a[j][n-i+1]=count;

}

for(j=n-i+1;j>=i+1;j--)//下侧

{

a[n-i+1][j]=count;

}

for(j=n-i+1;j>=i+1;j--)//左侧

{

a[j][i]=count;

}

count++;

}

if(n%2==1)

{

i=(n+1)/2;

a[i][i]=i;

}

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

printf("%2d ",a[i][j]);

printf("\n");

}

}

10、狼找兔子问题:一座山周围有n个洞,顺时针编号为0,1,2.,…,

n-1。一只狼从0号洞开始,顺时针方向计数,每当经过第m个洞时,就进洞找兔子。输入m,n,问兔子有没有幸免的机会?如果有,该藏哪里?

#include

void main(){

int a[100],b[100],i,n,m,k=0,flag=0;

printf("请输入洞的个数n:");

scanf("%d",&n);

printf("请输入要经过洞的个数m:");

scanf("%d",&m);

for(i=0;i

a[i]=0;

b[i]=1;

}

for(i=0;;i=(i+m)%n){

if(a[(i+m)%n]==0)

a[(i+m)%n]=1;

else

if(a[(i+m)%n]==1)

break;

}

for(i=0;i

if(a[i]==0)

k++;

else

if(a[i]==1)

flag++;

}

if(k>0){

printf("\n兔子有幸免的机会,位置为:\n");

for(i=0;i

if(a[i]==0)

printf("%d ",i);

printf("\n");

}

if(flag==n)

printf("兔子没有幸免的机会!\n");

}

12、有52张牌,使它们全部正面朝上,第一轮是从第2张开始,凡是2的倍数位置上的牌翻成正面朝下;第二轮从第3张牌开始,凡是3的倍数位置上的牌,正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;第三轮从第4张牌开始,凡是4的倍数位置上的牌按上面相同规则翻转,以此类推,知道翻的牌超过104张为止。统计最后有几张牌正面朝上,以及它们的位置号。

相关文档
最新文档