广工anyview的题目和答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
for(j=0;j<(N-i);j++)
k=a[i][j],a[i][j]=a[N-1-j][N-1-i],a[N-1-j][N-1-i]=k;
}
}
/**********
【习题7.064】编写函数将一个NxN的二维数组“水平”翻转。
例如:翻转前的数组翻转后的数组
1 23 7 8 9
4 56 ---> 4 5 6
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.068】编写函数将一个NxN的二维数组的
周边元素“逆时针”轮转1位。
例如:轮转前的数组轮转后的数组
1 23 2 3 6
【习题7.065】编写函数将一个NxN的二维数组“垂直”翻转。
例如:翻转前的数组翻转后的数组
1 23 3 2 1
4 56 ---> 6 5 4
7 89 9 8 7
**********/
voidinvertV(char a[N][N])
{
inti,j,temp;
for(i=0;i<N;i++)
for(j=0;j<N-j;j++)
{
inti,j,t;
for(i=0;i<N;i++)
{
t=a[i][0];
for(j=0;j<N-1;j++)
a[i][j]=a[i][j+1];
a[i][N-1]=t;
}
}
/**********
【习题7.082】编写函数将一个NxN的二维数组a的元素
按列向下轮转1位。
例如:轮转前的数组轮转后的数组
}
}
/**********
【习题7.105】编写函数,求整数m和n的最小公倍数,
并作为函数的返回值。
**********/
intlcm(int m, int n)
{
intt,r,l,h;
t=m+n;
n=n<m?n:m;
m=t-n;
l=m;h=n;
while((r=l%h)!=0)
{
l=h;
h=r;
}
returnc;
}
/**********
7.120系统给定外部长整型变量n和字符数组变量s(不需要自行
定义)。main函数的功能是:把n的整数值转换成字符串,并逆序
保存在s中。例如,当n=20120826时,由n转换得到s="62802102"。
请仅在空缺处填入合适内容,使其实现上述功能。
**********/
voidfunc(char *str)
/*将字符串str中ASCII码最小的字符放在第一个*/
/*字符位置,其余字符依次往后移。*/
{
inti,k;
chartemp=str[0];
for(i=0;str[i]!='\0';i++)
if(str[i]<temp) k=i,temp=str[i];
temp=str[k];
intt[N];
for(i=0;i<N;i++)
t[i]=a[0][i];
for(i=0;i<N-1;i++)
for(j=0;j<N;j++)
a[i][j]=a[i+1][j];
for(i=0;i<N;i++)
a[N-1][i]=t[i];
}
/**********
【习题7.103】编写函数,求整数m和n的最大公约数,
a[i][0]=t;
}
}
/**********
【习题7.075】编写函数将一个NxN的二维数组a的元素
按行向左轮转1位。
例如:轮转前的数组轮转后的数组
1 23 2 3 1
4 56 ---> 5 6 4
7 89 8 9 7
**********/
voidturningLeft(char a[N][N])
{
temp=a[i][j],a[i][j]=a[i][N-j-1],a[i][N-j-1]=temp;
}
}
/**********
【习题7.067】编写函数将一个NxN的二维数组的周边元素
“顺时针”轮转1位。
例如:轮转前的数组轮转后的数组
1 23 4 1 2
4 56 ---> 7 5 3
7 89 8 9 6
n/=10;
i++;
}
s[i--]='\0';
k=i;
while(i>=0)
{
s[i]=c[k-i]/*** 3 ***/ ;
i--;
}
}
/**********
【习题7.125】编写函数,对非负浮点数r的值的第三位小数四舍五入,
**********/
intprime(int n)
/*判断素数,如果是素数返回1,不是素数则返回0 */
{
intk;
if(n<2) return 0;
for(k=2;k<=n/2;k++)
{
if(n%k==0) return 0;
}
return1;
}
intf(int i)
/*将偶数i表示为两个素数之和,返回其中较小的素数*/
【习题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
**********/
intchange(int n)
{
inti,j,k,t=0;
voidmain()
{
inti=0;
while(n>0/*** 1 ***/ )
{
s[i]= n%10+'0'/*** 2 ***/ ;
/*** 3 ***/ ;
i++;
}
s[i]='\0';
}
/**********
7.121系统给定外部长整型变量n和字符数组变量s(不需要自行
定义)。main函数的功能是:把n的整数值转换成字符串,并保存
**********/
voidmain()
{
inti;
i=0/*** 1 ***/ ;
while(i<n)
{
if(*(s+i)>='a' && *(s+i)<='z')
*(s+i)=*(s+i)-32/*** 2 ***/ ;
i++/*** 3 ***/ ;
}
}
/**********
【习题7.115】编写函数,将两个两位数的正整数a、b合并形成
for(i=k;i>0;i--)
str[i]=str[i-1];
str[0]=temp;
}
/**********
7.051系统给定外部字符串s和整型数组c[26](不需
要自行定义)。编写程序,将字符串s中26个字母(不
区分大小写)出现的次数依次统计到数组c中。例如,
当s=“AbcijKaBcdEXyzuvwx”时,数组c的26个元素
**********/
voidturningClockwise(char a[N][N])
{
inti;
intflog=1;
intt=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++)
}
}
/**********
【习题7.060】编写函数将一个nxn的二维数组按“次对角线”翻转。
例如:翻转前的数组翻转后的数组
1 23 பைடு நூலகம் 6 3
4 56 ---> 8 5 2
7 89 7 4 1
**********/
voidinvert(char a[N][N])
{
inti,j,k;
for(i=0;i<N;i++)
for(i=0;i<=n/10;i++)
{ k=(n-i*10)/5;
for(j=0;j<=k;j++)
t++;}
returnt;
}
/**********
【习题7.030】先编写一个判断素数的函数。再编写一个函数
将一个偶数表示为两个素数之和,并返回其中较小的素数。
注:素数指只能被1和自身整除的正整数。规定0,1不是素数。
1 23 3 1 2
4 56 ---> 6 4 5
7 89 9 7 8
**********/
voidturningRight(char a[N][N])
{
inti,j,t;
for(i=0;i<N;i++)
{
t=a[i][N-1];
for(j=N-1;j>0;j--)
a[i][j]=a[i][j-1];
值依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0
0 0 1 1 1 2 1 1。
**********/
voidmain()
{
inti,j;
for(j=0;j<26;j++)
for(i=0;s[i]!='\0';i++)
{
if(s[i]==j+65||s[i]==j+97) c[j]++;
7 89 1 2 3
**********/
voidinvertH(char a[N][N])
{
inttemp,i,j;
for(i=0;i<N-i;i++)
for(j=0;j<N;j++)
{
temp=a[i][j],a[i][j]=a[N-i-1][j],a[N-i-1][j]=temp;
}
}
/**********
/**********
【习题7.010】写一函数求3个整数中最小的数。
**********/
intmin(int x, int y, int z)
/*返回3个整数x,y和z中最小的数*/
{
intmin;
min=x>y?y:x;
if(min>z) min=z;
returnmin;
}
/**********
1 23 7 8 9
4 56 ---> 1 2 3
7 89 4 5 6
**********/
voidturningDown(char a[N][N])
{
inti,j,t;
for(i=0;i<N;i++)
{
t=a[N-1][i];
for(j=N-1;j>0;j--)
a[j][i]=a[j-1][i];
{
intj,min;
for(j=2;j<=i/2;j++)
if(prime(j)&&prime(i-j))
{
min=j;
break;
}
returnmin;
}
/**********
【习题7.050】编写函数,将字符串中ASCII码最小的字符
放在第一个字符位置,其余字符依次往后移。
**********/
并作为函数的返回值。
**********/
intgdc(int m, int n)
{
intmin,i,k;
min=(m>n?n:m);
for(i=min;i>=1;i--)
{
if((m%i!=0)||(n%i!=0)) continue;
if((m%i)==0&&(n%i==0)) k=i;
returnk;
一个整数c且作为函数值返回。合并的方式是:将a的十位和个位
数分别作为c的千位和十位数,b的十位和个位数分别作为c的百位
和个位数。例如,若a=45,b=12,则该函数返回值为4152。
**********/
intfunc(int a, int b)
{
intc;
c=(a/10)*1000+(a%10)*10+(b/10)*100+(b%10);
在s中。例如,当n=20120826时,由n转换得到s="20120826"。
请仅在空缺处填入合适内容,使其实现上述功能。
**********/
voidmain()
{
inti=0,k;
charc[10];
while(n>0/*** 1 ***/ )
{
c[i]=n%10+'0' /*** 2 ***/ ;
4 56 ---> 1 5 9
7 89 4 7 8
**********/
voidturningAnticlockwise(char a[N][N])
{
inti;
intt=a[N-1][0];
for(i=N-1;i>0;i--)
a[i][0]=a[i-1][0];
for(i=0;i<N-1;i++)
a[0][i]=a[0][i+1];
a[0][i]=t;
}
}
/**********
【习题7.085】编写函数将一个NxN的二维数组a的元素
按列向上轮转1位。
例如:轮转前的数组轮转后的数组
1 23 4 5 6
4 56 ---> 7 8 9
7 89 1 2 3
**********/
voidturningUp(char a[N][N])
{
inti,j;
for(i=0;i<N-1;i++)
a[i][N-1]=a[i+1][N-1];
for(i=N-1;i>0;i--)
a[N-1][i]=a[N-1][i-1];
a[N-1][1]=t;
}
/**********
【习题7.072】编写函数将一个NxN的二维数组a的元素
按行向右轮转1位。
例如:轮转前的数组轮转后的数组
returnm*n/h;
}
/**********
7.110系统给定外部字符数组变量s和数组长度n(不需要自行
定义)。main函数的功能是:把字符串s中所有小写字母转换为
大写字母,其他字符不变。例如,当s="68abcdEFGhijkLM86"
时,转换后s="68ABCDEFGHIJKLM86"。
请仅在空缺处填入合适内容,使其实现上述功能。
for(j=0;j<(N-i);j++)
k=a[i][j],a[i][j]=a[N-1-j][N-1-i],a[N-1-j][N-1-i]=k;
}
}
/**********
【习题7.064】编写函数将一个NxN的二维数组“水平”翻转。
例如:翻转前的数组翻转后的数组
1 23 7 8 9
4 56 ---> 4 5 6
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.068】编写函数将一个NxN的二维数组的
周边元素“逆时针”轮转1位。
例如:轮转前的数组轮转后的数组
1 23 2 3 6
【习题7.065】编写函数将一个NxN的二维数组“垂直”翻转。
例如:翻转前的数组翻转后的数组
1 23 3 2 1
4 56 ---> 6 5 4
7 89 9 8 7
**********/
voidinvertV(char a[N][N])
{
inti,j,temp;
for(i=0;i<N;i++)
for(j=0;j<N-j;j++)
{
inti,j,t;
for(i=0;i<N;i++)
{
t=a[i][0];
for(j=0;j<N-1;j++)
a[i][j]=a[i][j+1];
a[i][N-1]=t;
}
}
/**********
【习题7.082】编写函数将一个NxN的二维数组a的元素
按列向下轮转1位。
例如:轮转前的数组轮转后的数组
}
}
/**********
【习题7.105】编写函数,求整数m和n的最小公倍数,
并作为函数的返回值。
**********/
intlcm(int m, int n)
{
intt,r,l,h;
t=m+n;
n=n<m?n:m;
m=t-n;
l=m;h=n;
while((r=l%h)!=0)
{
l=h;
h=r;
}
returnc;
}
/**********
7.120系统给定外部长整型变量n和字符数组变量s(不需要自行
定义)。main函数的功能是:把n的整数值转换成字符串,并逆序
保存在s中。例如,当n=20120826时,由n转换得到s="62802102"。
请仅在空缺处填入合适内容,使其实现上述功能。
**********/
voidfunc(char *str)
/*将字符串str中ASCII码最小的字符放在第一个*/
/*字符位置,其余字符依次往后移。*/
{
inti,k;
chartemp=str[0];
for(i=0;str[i]!='\0';i++)
if(str[i]<temp) k=i,temp=str[i];
temp=str[k];
intt[N];
for(i=0;i<N;i++)
t[i]=a[0][i];
for(i=0;i<N-1;i++)
for(j=0;j<N;j++)
a[i][j]=a[i+1][j];
for(i=0;i<N;i++)
a[N-1][i]=t[i];
}
/**********
【习题7.103】编写函数,求整数m和n的最大公约数,
a[i][0]=t;
}
}
/**********
【习题7.075】编写函数将一个NxN的二维数组a的元素
按行向左轮转1位。
例如:轮转前的数组轮转后的数组
1 23 2 3 1
4 56 ---> 5 6 4
7 89 8 9 7
**********/
voidturningLeft(char a[N][N])
{
temp=a[i][j],a[i][j]=a[i][N-j-1],a[i][N-j-1]=temp;
}
}
/**********
【习题7.067】编写函数将一个NxN的二维数组的周边元素
“顺时针”轮转1位。
例如:轮转前的数组轮转后的数组
1 23 4 1 2
4 56 ---> 7 5 3
7 89 8 9 6
n/=10;
i++;
}
s[i--]='\0';
k=i;
while(i>=0)
{
s[i]=c[k-i]/*** 3 ***/ ;
i--;
}
}
/**********
【习题7.125】编写函数,对非负浮点数r的值的第三位小数四舍五入,
**********/
intprime(int n)
/*判断素数,如果是素数返回1,不是素数则返回0 */
{
intk;
if(n<2) return 0;
for(k=2;k<=n/2;k++)
{
if(n%k==0) return 0;
}
return1;
}
intf(int i)
/*将偶数i表示为两个素数之和,返回其中较小的素数*/
【习题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
**********/
intchange(int n)
{
inti,j,k,t=0;
voidmain()
{
inti=0;
while(n>0/*** 1 ***/ )
{
s[i]= n%10+'0'/*** 2 ***/ ;
/*** 3 ***/ ;
i++;
}
s[i]='\0';
}
/**********
7.121系统给定外部长整型变量n和字符数组变量s(不需要自行
定义)。main函数的功能是:把n的整数值转换成字符串,并保存
**********/
voidmain()
{
inti;
i=0/*** 1 ***/ ;
while(i<n)
{
if(*(s+i)>='a' && *(s+i)<='z')
*(s+i)=*(s+i)-32/*** 2 ***/ ;
i++/*** 3 ***/ ;
}
}
/**********
【习题7.115】编写函数,将两个两位数的正整数a、b合并形成
for(i=k;i>0;i--)
str[i]=str[i-1];
str[0]=temp;
}
/**********
7.051系统给定外部字符串s和整型数组c[26](不需
要自行定义)。编写程序,将字符串s中26个字母(不
区分大小写)出现的次数依次统计到数组c中。例如,
当s=“AbcijKaBcdEXyzuvwx”时,数组c的26个元素
**********/
voidturningClockwise(char a[N][N])
{
inti;
intflog=1;
intt=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++)
}
}
/**********
【习题7.060】编写函数将一个nxn的二维数组按“次对角线”翻转。
例如:翻转前的数组翻转后的数组
1 23 பைடு நூலகம் 6 3
4 56 ---> 8 5 2
7 89 7 4 1
**********/
voidinvert(char a[N][N])
{
inti,j,k;
for(i=0;i<N;i++)
for(i=0;i<=n/10;i++)
{ k=(n-i*10)/5;
for(j=0;j<=k;j++)
t++;}
returnt;
}
/**********
【习题7.030】先编写一个判断素数的函数。再编写一个函数
将一个偶数表示为两个素数之和,并返回其中较小的素数。
注:素数指只能被1和自身整除的正整数。规定0,1不是素数。
1 23 3 1 2
4 56 ---> 6 4 5
7 89 9 7 8
**********/
voidturningRight(char a[N][N])
{
inti,j,t;
for(i=0;i<N;i++)
{
t=a[i][N-1];
for(j=N-1;j>0;j--)
a[i][j]=a[i][j-1];
值依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0
0 0 1 1 1 2 1 1。
**********/
voidmain()
{
inti,j;
for(j=0;j<26;j++)
for(i=0;s[i]!='\0';i++)
{
if(s[i]==j+65||s[i]==j+97) c[j]++;
7 89 1 2 3
**********/
voidinvertH(char a[N][N])
{
inttemp,i,j;
for(i=0;i<N-i;i++)
for(j=0;j<N;j++)
{
temp=a[i][j],a[i][j]=a[N-i-1][j],a[N-i-1][j]=temp;
}
}
/**********
/**********
【习题7.010】写一函数求3个整数中最小的数。
**********/
intmin(int x, int y, int z)
/*返回3个整数x,y和z中最小的数*/
{
intmin;
min=x>y?y:x;
if(min>z) min=z;
returnmin;
}
/**********
1 23 7 8 9
4 56 ---> 1 2 3
7 89 4 5 6
**********/
voidturningDown(char a[N][N])
{
inti,j,t;
for(i=0;i<N;i++)
{
t=a[N-1][i];
for(j=N-1;j>0;j--)
a[j][i]=a[j-1][i];
{
intj,min;
for(j=2;j<=i/2;j++)
if(prime(j)&&prime(i-j))
{
min=j;
break;
}
returnmin;
}
/**********
【习题7.050】编写函数,将字符串中ASCII码最小的字符
放在第一个字符位置,其余字符依次往后移。
**********/
并作为函数的返回值。
**********/
intgdc(int m, int n)
{
intmin,i,k;
min=(m>n?n:m);
for(i=min;i>=1;i--)
{
if((m%i!=0)||(n%i!=0)) continue;
if((m%i)==0&&(n%i==0)) k=i;
returnk;
一个整数c且作为函数值返回。合并的方式是:将a的十位和个位
数分别作为c的千位和十位数,b的十位和个位数分别作为c的百位
和个位数。例如,若a=45,b=12,则该函数返回值为4152。
**********/
intfunc(int a, int b)
{
intc;
c=(a/10)*1000+(a%10)*10+(b/10)*100+(b%10);
在s中。例如,当n=20120826时,由n转换得到s="20120826"。
请仅在空缺处填入合适内容,使其实现上述功能。
**********/
voidmain()
{
inti=0,k;
charc[10];
while(n>0/*** 1 ***/ )
{
c[i]=n%10+'0' /*** 2 ***/ ;
4 56 ---> 1 5 9
7 89 4 7 8
**********/
voidturningAnticlockwise(char a[N][N])
{
inti;
intt=a[N-1][0];
for(i=N-1;i>0;i--)
a[i][0]=a[i-1][0];
for(i=0;i<N-1;i++)
a[0][i]=a[0][i+1];
a[0][i]=t;
}
}
/**********
【习题7.085】编写函数将一个NxN的二维数组a的元素
按列向上轮转1位。
例如:轮转前的数组轮转后的数组
1 23 4 5 6
4 56 ---> 7 8 9
7 89 1 2 3
**********/
voidturningUp(char a[N][N])
{
inti,j;
for(i=0;i<N-1;i++)
a[i][N-1]=a[i+1][N-1];
for(i=N-1;i>0;i--)
a[N-1][i]=a[N-1][i-1];
a[N-1][1]=t;
}
/**********
【习题7.072】编写函数将一个NxN的二维数组a的元素
按行向右轮转1位。
例如:轮转前的数组轮转后的数组
returnm*n/h;
}
/**********
7.110系统给定外部字符数组变量s和数组长度n(不需要自行
定义)。main函数的功能是:把字符串s中所有小写字母转换为
大写字母,其他字符不变。例如,当s="68abcdEFGhijkLM86"
时,转换后s="68ABCDEFGHIJKLM86"。
请仅在空缺处填入合适内容,使其实现上述功能。