广工C Anyview 参考答案.docx

上传人:b****3 文档编号:10519549 上传时间:2023-05-26 格式:DOCX 页数:81 大小:32.05KB
下载 相关 举报
广工C Anyview 参考答案.docx_第1页
第1页 / 共81页
广工C Anyview 参考答案.docx_第2页
第2页 / 共81页
广工C Anyview 参考答案.docx_第3页
第3页 / 共81页
广工C Anyview 参考答案.docx_第4页
第4页 / 共81页
广工C Anyview 参考答案.docx_第5页
第5页 / 共81页
广工C Anyview 参考答案.docx_第6页
第6页 / 共81页
广工C Anyview 参考答案.docx_第7页
第7页 / 共81页
广工C Anyview 参考答案.docx_第8页
第8页 / 共81页
广工C Anyview 参考答案.docx_第9页
第9页 / 共81页
广工C Anyview 参考答案.docx_第10页
第10页 / 共81页
广工C Anyview 参考答案.docx_第11页
第11页 / 共81页
广工C Anyview 参考答案.docx_第12页
第12页 / 共81页
广工C Anyview 参考答案.docx_第13页
第13页 / 共81页
广工C Anyview 参考答案.docx_第14页
第14页 / 共81页
广工C Anyview 参考答案.docx_第15页
第15页 / 共81页
广工C Anyview 参考答案.docx_第16页
第16页 / 共81页
广工C Anyview 参考答案.docx_第17页
第17页 / 共81页
广工C Anyview 参考答案.docx_第18页
第18页 / 共81页
广工C Anyview 参考答案.docx_第19页
第19页 / 共81页
广工C Anyview 参考答案.docx_第20页
第20页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

广工C Anyview 参考答案.docx

《广工C Anyview 参考答案.docx》由会员分享,可在线阅读,更多相关《广工C Anyview 参考答案.docx(81页珍藏版)》请在冰点文库上搜索。

广工C Anyview 参考答案.docx

广工CAnyview参考答案

CAnyview7-9章作业参考答案

/**********

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

**********/

intmin(intx,inty,intz)

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

{

if(x>y)

x=y;

if(x>z)

x=z;

returnx;

}

 

/**********

【习题7.020】编写函数,求用1元、5元和10元三种纸币

支付n元钱共有多少种支付法?

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

方法123456

10元000011

5元012301

1元16116161

**********/

intchange(intn)

{

inti,j,k,m=0;

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

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

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

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

m++;

returnm;

}

/**********

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

再编写一个函数

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

注:

素数指只能被1和自身整除的正整数。

规定0,1不是素数。

**********/

intprime(intn)

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

{intt;

if(n==1)

return0;

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

if(n%t==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.051系统给定外部字符串s和整型数组c[26](不需

要自行定义)。

编写程序,将字符串s中26个字母(不

区分大小写)出现的次数依次统计到数组c中。

例如,

当s=“AbcijKaBcdEXyzuvwx”时,数组c的26个元素

值依次为:

222110001110000000

00111211。

**********/

voidmain()

{

inti,j;

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

{

c[j]=0;

for(i=0;s[i]!

='\0';i++)

if(s[i]=='A'+j||s[i]=='a'+j)

c[j]++;

}

}

 

/**********

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

例如:

翻转前的数组翻转后的数组

123963

456--->852

789741

**********/

voidinvert(chara[N][N])

{inti,j;

intb[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的二维数组“水平”翻转。

例如:

翻转前的数组翻转后的数组

123789

456--->456

789123

**********/

voidinvertH(chara[N][N])

{inti,j;

intb[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的二维数组“垂直”翻转。

例如:

翻转前的数组翻转后的数组

123321

456--->654

789987

**********/

voidinvertV(chara[N][N])

{

inti,j;

intb[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位。

例如:

轮转前的数组轮转后的数组

123236

456--->159

789478

**********/

voidturningAnticlockwise(chara[N][N])

{inti;

chart=a[0][0];

for(i=0;i

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

for(i=0;i

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

for(i=0;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位。

例如:

轮转前的数组轮转后的数组

123312

456--->645

789978

**********/

voidturningRight(chara[N][N])

{intb[N][N],i,j;

for(i=0;i

for(j=1;j

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

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

for(i=0;i

for(j=0;j

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

}

/**********

【习题7.075】编写函数将一个NxN的二维数组a的元素

按行向左轮转1位。

例如:

轮转前的数组轮转后的数组

123231

456--->564

789897

**********/

voidturningLeft(chara[N][N])

{intb[N][N],i,j;

for(i=0;i

for(j=0;j

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

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

for(i=0;i

for(j=0;j

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

}

/**********

【习题7.082】编写函数将一个NxN的二维数组a的元素

按列向下轮转1位。

例如:

轮转前的数组轮转后的数组

123789

456--->123

789456

**********/

voidturningDown(chara[N][N])

{

intb[N][N],i,j;

for(i=1;i

for(j=0;j

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

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

for(i=0;i

for(j=0;j

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

}

/**********

【习题7.085】编写函数将一个NxN的二维数组a的元素

按列向上轮转1位。

例如:

轮转前的数组轮转后的数组

123456

456--->789

789123

**********/

voidturningUp(chara[N][N])

{

intb[N][N],i,j;

for(i=0;i

for(j=0;j

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

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

for(i=0;i

for(j=0;j

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

}

 

/**********

【习题7.103】编写函数,求整数m和n的最大公约数,

并作为函数的返回值。

**********/

intgdc(intm,intn)

{

inta,r;

if(m

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(m

{t=m;m=n;n=t;}

while((r=m%n)!

=0)

{

m=n;n=r;

}

returnh/n;

}

 

/**********

7.110系统给定外部字符数组变量s和数组长度n(不需要自行

定义)。

main函数的功能是:

把字符串s中所有小写字母转换为

大写字母,其他字符不变。

例如,当s="68abcdEFGhijkLM86"

时,转换后s="68ABCDEFGHIJKLM86"。

请仅在空缺处填入合适内容,使其实现上述功能。

**********/

voidmain()

{

inti;

/***1***/i=0;;

while(i

{

if(*(s+i)>='a'&&*(s+i)<='z')

*(s+i)=/***2***/*(s+i)-32;

/***3***/i++;

}

}

 

/**********

【习题7.115】编写函数,将两个两位数的正整数a、b合并形成

一个整数c且作为函数值返回。

合并的方式是:

将a的十位和个位

数分别作为c的千位和十位数,b的十位和个位数分别作为c的百位

和个位数。

例如,若a=45,b=12,则该函数返回值为4152。

**********/

intfunc(inta,intb)

{intc;

c=a/10*1000+a%10*10+b/10*100+b%10;

returnc;

}

 

/**********

7.120系统给定外部长整型变量n和字符数组变量s(不需要自行

定义)。

main函数的功能是:

把n的整数值转换成字符串,并逆序

保存在s中。

例如,当n=20120826时,由n转换得到s="62802102"。

请仅在空缺处填入合适内容,使其实现上述功能。

**********/

voidmain()

{

inti=0;

while(/***1***/n>0)

{

s[i]=/***2***/n%10+'0';

/***3***/n/=10;

i++;

}

s[i]='\0';

}

 

/**********

7.121系统给定外部长整型变量n和字符数组变量s(不需要自行

定义)。

main函数的功能是:

把n的整数值转换成字符串,并保存

在s中。

例如,当n=20120826时,由n转换得到s="20120826"。

请仅在空缺处填入合适内容,使其实现上述功能。

**********/

voidmain()

{

inti=0,k;

charc[10];

while(/***1***/10*n/10!

=0)

{

c[i]=/***2***/n%10;

n/=10;

i++;

}

s[i--]='\0';

k=i;

while(i>=0)

{

s[i]=/***3***/c[k-i]+'0';

i--;

}

}

/**********

【习题7.125】编写函数,对非负浮点数r的值的第三位小数四舍五入,

返回保留2位小数的值。

例如:

若r的值为8.32488,则函数返回8.32;

若r的值为8.32533,则返回8.33。

**********/

floatfunc(floatr)

{inta,b;

a=r*1000;

b=a%10;

if(b<5)

r=(a-b)*0.001;

else

r=(a-b+10)*0.001;

returnr;

}

 

/**********

【习题7.135】假设n是一个k(k≥2)位的正整数,编写函数,

求出由n的低k-1位构成的数并作为函数值返回。

例如:

若n值

为5923,则函数返回923;若n值为923,则函数返回23。

**********/

intfunc(intn)

{

inti,j,k=n,m=1;

while(k>=10)

k/=10,i++;

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

m=m*10;

n=n-k*m;

returnn;

}

 

/**********

【习题7.175】编写函数,求n以内(不包括n)同时能被3与7

整除的所有自然数之和的平方根,并作为函数值返回。

例如,

若n为100时,函数返回值应为14.49138。

**********/

floatfunc(intn)

{

inti;floats;

for(i=0;i

{if(i%3==0&&i%7==0)

s=s+i;}

s=sqrt(s);

return(s);

}

 

/**********

【习题7.184】编写函数,根据公式s=1+1/(1+2)+1/(1+2+3)+

……1/(1+2+3+…+n)计算s,并作函数值返回。

例如:

若n的值

为11时,函数的值为1.833333。

**********/

floatfunc(intn)

{

inti;

floatj=1.0,s=1.0;

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

{j=j+i;

s=s+1/j;

}

return(s);

}

 

/**********

【习题7.187】编写函数,计算并输出下列级数和:

1/(1*2)+1/(2*3)+1/(3*4)+…+1/(n*(n+1)),

并返回结果。

例如,当n=10时,函数值为0.90909。

**********/

floatfunc(intn)

{

inti;

floatx,y;

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

{x=i*(i+1);

y=y+1/x;

}

return(y);

}

 

/**********

【习题7.195】编写函数,求m!

/(n!

(m-n)!

)的值,结果由函数值

返回。

m与n为两个正整数且要求m>n。

例如:

m=12,n=8时,运行

结果为495.000000。

**********/

floatfunc(intm,intn)

{

inti,j,k,l;

floatx=1.0,y=1.0,z=1.0;

if(m<=n)

l=m,m=n,n=l;

for(i=1;i<=m;i++)

x=x*i;

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

y=y*j;

for(k=1;k<=m-n;k++)

z=z*k;

z=x/(z*y);

return(z);

}

 

/**********

【习题7.205】编写函数,计算并返回给定整数n除了1与自身

之外的所有因子之和。

例如,若n=8,则函数返回6(=2+4)。

**********/

intfunc(intn)

{

inti,j,k;

for(i=1;i<=0.5*n;i++)

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

if(i*j==n)

k=k+i+j;

k=k-1-n;

k=k/2;

return(k);

}

 

/**********

【习题7.255】编写函数,根据以下公式返回π的值

π/2=1+1!

/3+2!

/(3*5)+...+n!

/(3*5*7*...*(2*n+1))

要求满足精度eps,即一旦有小于eps的项值加入后停止迭代。

例如,若精度eps=0.0005,则返回值为3.141106。

**********/

floatfunc(floateps)

{

inti;

floatx=1,y=1,z;

for(i=1;(x/y)>=eps;i++)

{x=x*i;

y=y*(2*i+1);

z=z+x/y;}

z=2*z+2;

return(z);

 

}

 

/**********

【习题7.265】编写函数,将数组s所存字符串中下标和ASCII码

均为偶数的字符,依次存入数组t中,并构成一个新串。

例如,

若s中的字符串值为ABCD123456,则t中的串值应为246。

**********/

voidfunc(chars[],chart[])

{

inti,j,m=0;

for(i=0;s[i]!

=0;i++)

if((i%2==0)&&(s[i]%2==0))

t[j]=s[i],j++;

}

 

/**********

【习题7.275】假定字符串s中可能含有字符'*'。

请编写函数,

若字符串s的尾部连续的'*'多于n个,则删除多余的'*'。

例如,

若s="*****A*BCDE**F*******"且n=4,则调用函数后,字符串

s="****A*BCDE**F****";若n≥7,则字符串s中的内容不变。

注意:

函数中不得调用C语言提供的字符串函数。

**********/

voidfunc(chars[],intn)

{

inti,j,k,d=0,c=0,t=0;

while(s[d++])

c++;

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

{if(s[i]=='*')

t++;

elsebreak;}

if(t>n)

{k=t-n;

s[c-k]='\0';}

 

}

/**********

【习题7.315】编写函数,求出1到n之间(含n)能被7或11整除的

所有整数并依次存入数组a中,函数值为这些数的个数。

例如,

若n=15,则依次存入数组a中的数为7、11和14,函数值为3。

**********/

intfunc(intn,inta[])

{

inti,j=0;

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

if((i%7==0)||(i%11==0))

a[j]=i,j++;

return(j);

}

 

/**********

【习题7.317】编写函数,求出1到n之间(含n)都能被c和d整除

的所有整数并依次存入数组a中,函数值为这些数的个数。

例如,

若n=20,c=2,d=3,则依次存入数组a中的数为6、12和18,函

数值为3。

**********/

intfunc(intn,intc,intd,inta[])

{

inti,j;

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

if((i%c==0)&&(i%d==0))

a[j]=i,j++;

return(j);

}

 

/**********

【习题7.325】假设数组a存放了n个人的年龄。

编写函数,用

数组c统计各年龄段的人数,其中c[0]为0至9岁年龄段的人数,

c[1]为10至19岁年龄段的人数,c[2]为20至29岁年龄段的人

数,其余依此类推,c[10]为100岁(含100)以上年龄的人数。

**********/

voidfunc(intn,inta[],intc[])

{

inti,b;

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

c[i]=0;

for(i=0;i

{if(a[i]>=100)

c[10]++;

else{

b=a[i]/10;

c[b]++;

}}

}

 

/**********

【习题7.335】假设字符数组a中存放了按由小到大连续存放的

字符构成的字符串(后跟一个'\0'作为结束符)。

编写函数,

删去字符串中所有重复的字符(各自只保留一个),并使得保

留的字符仍构成一个字符串(连续存放,'\0'作为结束符)。

函数返回a中保留的字符串长度。

例如,若a中的字符串值为:

AAABBCDFFFHHHKLMMM

则删除重复字符之后,函数返回值为9,a中的字符串值为:

ABCDFHKLM

**********/

intfunc(chara[])

{

inti;

//while(a[i]!

='\0')

//i++;

charc[26];intj=1,k;

c[0]=a[0];

for(i=1;a[i]!

='\0';i++)

if(a[i]!

=a[i-1])

c[j]=a[i],j++;

while(c[k]!

='\0')

k++;

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

a[i]=c[i];

return(k);

}

 

/**********

【习题7.345】假设字符数组s中存放了一行字符串,含有由小写

字母组成的若干单词,单词之间由若干个空格隔开(串的开头没

有空格)。

编写函数,统计一行字符串中单词的个数,并作为函

数值返回。

**********/

intfunc(char

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2