广工Anyview试题答案 第七章

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

/**********

【习题7.067】编写函数将一个NxN的二维数组的周边元素“顺时针”轮转1位。

例如:轮转前的数组轮转后的数组

1 2 3 4 1 2

4 5 6 ---> 7 5 3

7 8 9 8 9 6

**********/

void turningClockwise(char a[N][N])

{

int i;

int flog=1;

int t=a[0][N-1];

for(i=N-1;i>0;i--)

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

for(i=0;i

a[i][0]=a[i+1][0];

for(i=0;i

a[N-1][i]=a[N-1][i+1];

for(i=N-1;i>0;i--)

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

a[1][N-1]=t;

}

/**********

【习题7.010】写一函数求3个整数中最小的数。

**********/

int min(int x, int y, int z)

/* 返回3个整数x,y和z中最小的数*/

{

if(x<=y&&x<=z)

return x;

if(y<=x&&y<=z)

return y;

if(z<=y&&z<=x)

return z;

}

/**********

【习题7.020】编写函数,求用1元、5元和10元三种纸币支付n元钱共有多少种支付法?

例如,16元可有6种支付方法:

方法 1 2 3 4 5 6

10元0 0 0 0 1 1

5元0 1 2 3 0 1

1元16 11 6 1 6 1

**********/

int change(int n)

{

int i,j,k;

int m=0;

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

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

for(k=0;k<=n/10;k++)

if(i+j*5+k*10==n)

m++;

return m;

}

/**********

【习题7.030】先编写一个判断素数的函数。再编写一个函数

将一个偶数表示为两个素数之和,并返回其中较小的素数。

注:素数指只能被1和自身整除的正整数。规定0,1不是素数。**********/

int prime(int n)

/* 判断素数,如果是素数返回1,不是素数则返回0 */

{

int k;

if(n==0||n==1)

return 0;

for (k=2;k<(n/2);k++)

if(n%k==0)

return 0;

return 1;

}

int f(int i)

/* 将偶数i表示为两个素数之和,返回其中较小的素数*/

{

int n;

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

if(prime(i-n)&&prime(n))

return n;

}

/**********

【习题7.050】编写函数,将字符串中ASCII码最小的字符

放在第一个字符位置,其余字符依次往后移。

**********/

void func(char *str)

/* 将字符串str中ASCII码最小的字符放在第一个*/

/* 字符位置,其余字符依次往后移。*/

{

int i=1,m=0,k;

for(m=0,i=1;str[i]!='\0';i++)

{

if(str[m]>str[i])

m=i;

}

k=str[m];

for(i=m-1;i>=0;i--)

str[i+1]=str[i];

str[0]=k;

}

/**********

【习题7.060】编写函数将一个nxn的二维数组按“次对角线”翻转。例如:翻转前的数组翻转后的数组

1 2 3 9 6 3

4 5 6 ---> 8 5 2

7 8 9 7 4 1

**********/

void invert(char a[N][N])

{

int i,j;

int b[N][N];

for(i=0;i

for(j=0;j

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

for(i=0;i

for(j=0;j

a[i][j]=b[i][j];

}

/**********

【习题7.064】编写函数将一个NxN的二维数组“水平”翻转。

例如:翻转前的数组翻转后的数组

1 2 3 7 8 9

4 5 6 ---> 4 5 6

7 8 9 1 2 3

**********/

void invertH(char a[N][N])

{

int i,j;

int b[N][N];

for(i=0;i

for(j=0;j

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

for(i=0;i

for(j=0;j

a[i][j]=b[i][j];

}

/**********

【习题7.065】编写函数将一个NxN的二维数组“垂直”翻转。例如:翻转前的数组翻转后的数组

1 2 3 3 2 1

4 5 6 ---> 6 5 4

7 8 9 9 8 7

**********/

void invertV(char a[N][N])

{

int i,j;

int b[N][N];

for(i=0;i

for(j=0;j

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

for(i=0;i

for(j=0;j

a[i][j]=b[i][j];

}

/**********

【习题7.068】编写函数将一个NxN的二维数组的

周边元素“逆时针”轮转1位。

例如:轮转前的数组轮转后的数组

1 2 3 2 3 6

4 5 6 ---> 1 5 9

7 8 9 4 7 8

**********/

void turningAnticlockwise(char a[N][N])

{

int i;

相关文档
最新文档