广工Anyview试题答案 第七章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

/**********【习题7.067】编写函数将一个NxN的二维数组的周边元素“顺时针”轮转1位。例如:轮转前的数组轮转后的数组123412456---753789896**********/voidturningClockwise(chara[N][N]){inti;intflog=1;intt=a[0][N-1];for(i=N-1;i0;i--)a[0][i]=a[0][i-1];for(i=0;iN-1;i++)a[i][0]=a[i+1][0];for(i=0;iN-1;i++)a[N-1][i]=a[N-1][i+1];for(i=N-1;i0;i--)a[i][N-1]=a[i-1][N-1];a[1][N-1]=t;}/**********【习题7.010】写一函数求3个整数中最小的数。**********/intmin(intx,inty,intz)/*返回3个整数x,y和z中最小的数*/{if(x=y&&x=z)returnx;if(y=x&&y=z)returny;if(z=y&&z=x)returnz;}/**********【习题7.020】编写函数,求用1元、5元和10元三种纸币支付n元钱共有多少种支付法?例如,16元可有6种支付方法:方法12345610元0000115元0123011元16116161**********/intchange(intn){inti,j,k;intm=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++;returnm;}/**********【习题7.030】先编写一个判断素数的函数。再编写一个函数将一个偶数表示为两个素数之和,并返回其中较小的素数。注:素数指只能被1和自身整除的正整数。规定0,1不是素数。**********/intprime(intn)/*判断素数,如果是素数返回1,不是素数则返回0*/{intk;if(n==0||n==1)return0;for(k=2;k(n/2);k++)if(n%k==0)return0;return1;}intf(inti)/*将偶数i表示为两个素数之和,返回其中较小的素数*/{intn;for(n=3;n=i;n++)if(prime(i-n)&&prime(n))returnn;}/**********【习题7.050】编写函数,将字符串中ASCII码最小的字符放在第一个字符位置,其余字符依次往后移。**********/voidfunc(char*str)/*将字符串str中ASCII码最小的字符放在第一个*//*字符位置,其余字符依次往后移。*/{inti=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的二维数组按“次对角线”翻转。例如:翻转前的数组翻转后的数组123963456---852789741**********/voidinvert(chara[N][N]){inti,j;intb[N][N];for(i=0;iN;i++)for(j=0;jN;j++)b[i][j]=a[N-1-j][N-i-1];for(i=0;iN;i++)for(j=0;jN;j++)a[i][j]=b[i][j];}/**********【习题7.064】编写函数将一个NxN的二维数组“水平”翻转。例如:翻转前的数组翻转后的数组123789456---456789123**********/voidinvertH(chara[N][N]){inti,j;intb[N][N];for(i=0;iN;i++)for(j=0;jN;j++)b[i][j]=a[N-i-1][j];for(i=0;iN;i++)for(j=0;jN;j++)a[i][j]=b[i][j];}/**********【习题7.065】编写函数将一个NxN的二维数组“垂直”翻转。例如:翻转前的数组翻转后的数组123321456---654789987**********/voidinvertV(chara[N][N]){inti,j;intb[N][N];for(i=0;iN;i++)for(j=0;jN;j++)b[i][j]=a[i][N-1-j];for(i=0;iN;i++)for(j=0;jN;j++)a[i][j]=b[i][j];}/**********【习题7.068】编写函数将一个NxN的二维数组的周边元素“逆时针”轮转1位。例如:轮转前的数组轮转后的数组123236456---159789478**********/voidturningAnticlockwise(chara[N][N]){inti;chart=a[0][0];for(i=0;iN-1;i++)a[0][i]=a[0][i+1];for(i=0;iN-1;i++)a[i][2]=a[i+1][2];for(i=0;iN-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位。例如:轮转前的数组轮转后的数组123312456---645789978**********/voidturningRight(chara[N][N]){intb[N][N],i,j;for(i=0;iN;i++)for(j=1;jN;j++)b[i][0]=a[i][N-1],b[i][j]=a[i][j-1];for(i=0;iN;i++)for(j=0;jN;j++)a[i][j]=b[i][j];}/**********【习题7.075】编写函数将一个NxN的二维数组a的元素按行向左轮转1位。例如:轮转前的数组轮转后的数组123231456---564789897**********/voidturningLeft(chara[N][N]){intb[N][N],i,j;for(i=0;iN;i++)for(j=0;jN-1;j++)b[i][N-1]=a[i][0],b[i][j]=a[i][j+1];for(i=0;iN;i++)for(j=0;jN;j++)a[i][j]=b[i][j];}/**********【习题7.082】编写函数将一个NxN的二维数组a的元素按列向下轮转1位。例如:轮转前的数组轮转后的数组123789456---123789456**********/voidturningDown(chara[N][N]){intb[N][N],i,j;for(i=1;iN;i++)for(j=0;jN;j++)b[0][j]=a[N-1][j],b[i][j]=a[i-1][j];for(i=0;iN;i++)for(j=0;jN;j++)a[i][j]=b[i][j];}/**********【习题7.085】编写函数将一个NxN的二维数组a的元素按列向上轮转1位。例如:轮转前的数组轮转后的数组123456456---789789123**********/voidturningUp(chara[N][N]){intb[N][N],i,j;for(i=0;iN-1;i++)for(j=0;jN;j++)b[N-1][j]=a[0][j],b[i][j]=a[i+1][j];for(i=0;iN;i++)for(j=0;jN;j++)a[i][j]=b[i][j];}/**********【习题7.103】编写函数,求整数m和n的最大公约数,并作为函数的返回值。**********/intgdc(intm,intn){inta,r;if(mn)a=m,m=n,n=a;while((r=m%n)!=0){m=n;n=r;}returnn;}/**********【习题7.105】编写函数,求整数m和n的最小公倍数,并作为函数的返回值。**********/intlcm(intm,intn){intt,r,h;h=m*n;if(mn){t=m;m=n;n=t;}while((r=m%n)!=0){m=n;n=r;}returnh/n;}

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功