广工Anyview试题答案 第七章

时间:2025-05-02

广工Anyview试题答案 第七章

/**********

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

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

1 2 3 4 1 2

4 5 6 ---> 7 5 3

7 8 9 8 9 6

**********/

voidturningClockwise(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<N-1;i++)

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

for(i=0;i<N-1;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元钱共有多少种支付法?

广工Anyview试题答案 第七章

例如,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)

{

inti,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;

}

广工Anyview试题答案 第七章

/**********

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

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

**********/

voidfunc(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])

{

inti,j;

int b[N][N];

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

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

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

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

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

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

}

/**********

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

1 2 3 7 8 9

4 5 6 ---> 4 5 6

广工Anyview试题答案 第七章

7 8 9 1 2 3

**********/

voidinvertH(char a[N][N])

{

inti,j;

int b[N][N];

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

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

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

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

for(j=0;j<N;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

**********/

voidinvertV(char a[N][N])

{

inti,j;

int b[N][N];

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

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

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

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

for(j=0;j<N;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

**********/

voidturningAnticlockwise(char a[N][N])

{

int i;

广工Anyview试题答案 第七章

char t=a[0][0];

for(i=0;i<N-1;i++)

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

for(i=0;i<N-1;i++)

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

for(i=0;i<N-1;i++)

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

a[2][0]=a[1][0];

a[1][0]=t;

}

/**********

【习题7.072】编写函数将一个NxN的二维数组a的元素 按行向右轮转1位。

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

1 2 3 3 1 2

4 5 6 ---> 6 4 5

7 8 9 9 7 8

**********/

voidturningRight(char a[N][N])

{

int b[N][N],i,j;

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

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

b[i][0]=a[i][N-1],

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

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

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

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

}

/**********

【习题7.075】编写函数将一个NxN的二维数组a的元素 按行向左轮转1位。

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

1 2 3 2 3 1

4 5 …… 此处隐藏:2183字,全部文档内容请下载后查看。喜欢就下载吧 ……

广工Anyview试题答案 第七章.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

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