算法设计与分析第三章课后答案吕国英主编
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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张为止。统计最后有几张牌正面朝上,以及它们的位置号。