算法设计方法与优化滕国文部分课后习题答案docx精选文档文档格式.docx

上传人:b****6 文档编号:20689473 上传时间:2023-01-25 格式:DOCX 页数:75 大小:44.28KB
下载 相关 举报
算法设计方法与优化滕国文部分课后习题答案docx精选文档文档格式.docx_第1页
第1页 / 共75页
算法设计方法与优化滕国文部分课后习题答案docx精选文档文档格式.docx_第2页
第2页 / 共75页
算法设计方法与优化滕国文部分课后习题答案docx精选文档文档格式.docx_第3页
第3页 / 共75页
算法设计方法与优化滕国文部分课后习题答案docx精选文档文档格式.docx_第4页
第4页 / 共75页
算法设计方法与优化滕国文部分课后习题答案docx精选文档文档格式.docx_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

算法设计方法与优化滕国文部分课后习题答案docx精选文档文档格式.docx

《算法设计方法与优化滕国文部分课后习题答案docx精选文档文档格式.docx》由会员分享,可在线阅读,更多相关《算法设计方法与优化滕国文部分课后习题答案docx精选文档文档格式.docx(75页珍藏版)》请在冰豆网上搜索。

算法设计方法与优化滕国文部分课后习题答案docx精选文档文档格式.docx

printf("

%d,%d,%d"

c,b,a);

voidmain()

inta,b,c;

inputnumber:

"

);

scanf("

%d%d%d"

&

a,&

b,&

c);

fun(a,b,c);

\n"

2-2.给定n个数,求这些数中的最大值。

#include 

<

stdio.h>

void 

main()

{

 

int 

i, 

j, 

temp,n;

a[1000];

scanf("

%d"

n);

for 

(i=0;

i<

9;

i++)

a[i]);

(j=0;

j<

n;

j++)

for(i=0;

n-j;

if 

(a[i] 

>

a[i 

1])

temp=a[i];

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

a[i+1]=temp;

printf("

%d\n"

a[n]);

2-3.求1+2+3+…+100的和。

#include"

intnum,sum=0;

for(num=1;

num<

=100;

num++)

sum+=num;

sum);

2-4.判断一个数n能否同时被3和5整数。

intfun(intn)

if(n%3==0&

&

n%5==0)

returnn;

else

return0;

2-5.将100至200之间的素数输出。

#include"

math.h"

intisp(intm)

inti;

for(i=2;

=sqrt(m);

if(m%i==0)

return0;

return1;

intn;

for(n=100;

n<

=200;

n++)

if(isp(n))

printf("

%d\t"

2-6.求两个数m和n的最大公约数。

intnum(intm,intn)

intr,t;

if(m<

n)

{t=m;

m=n;

n=t;

r=m%n;

while(r)

m=n;

n=r;

r=m%n;

returnn;

intx,y,s;

inputxandy:

%d%d"

x,&

y);

s=num(x,y);

s);

2-7.使给定的一个4*4的二维数组转置,即行列互换。

#include<

#definex4

inta[x][x];

voidmain()

voidzhuan(inta[x][x]);

intm,n;

printf("

pleaseinput%dnubbers\n"

x*x);

for(m=0;

m<

x;

m++)

for(n=0;

n++)

a[m][n]);

\n原数组:

for(m=0;

{for(n=0;

%5d"

a[m][n]);

}

zhuan(a);

\n转置后的数组:

{for(n=0;

voidzhuan(inta[x][x])

intc,d,e;

for(c=0;

c<

c++)

for(d=c+1;

d<

d++)

{e=a[c][d];

a[c][d]=a[d][c];

a[d][c]=e;

2-8.输出50个学生中成绩高于80分者的学号和成绩。

intmain()

inta[10][5],i,j;

请输入50个学生的成绩"

10;

for(j=0;

5;

a[i][j]);

if(a[i][j]>

80)

这个学生的学号是%d,这个学生的成绩是%d\n"

i*10+j+1,a[i][j]);

return0;

2-9.输出年份1990-2500中的所有闰年。

voidleap()

inty;

for(y=1990;

y<

=2500;

y++)

if((y%4==0&

y%100!

=0)||y%400==0)

%d"

y);

leap();

2-10.求1-1/2+1/3-1/4+…+1/99-1/100的值。

doublesum;

for(sum=0,i=1;

if(i%2==1)

sum+=1.0/i;

elseif(i%2==0)

sum-=1.0/i;

结果:

%lf"

return0;

2-11.输出三角形的三边长,试求三角形的面积。

intx,y,z,l;

doublearea;

inputxandyandz:

y,&

z);

l=(x+y+z)/2;

area=sqrt(l*(l-x)*(l-y)*(l-z));

%.2f\n"

area);

2-12.求ax2+bx+c=0方程的根,a,b,c由键盘输入(假设b2-4ac>

0)

floatx1,x2;

inputaandbandc:

x1=((-b)+sqrt(b*b-4*a*c))/(2*a);

x2=((-b)-sqrt(b*b-4*a*c))/(2*a);

if(b*b-4*a*c>

=0&

a!

=0)

%.2f,%.2f\n"

x1,x2);

flase\n"

2-13.输出成绩等级“优秀”、“良好”、“中等”。

“及格”,“不及格”。

其中90分(含90分)以上为优秀,80-89分为良好,70-79分为“中等”,60-69分为“及格”,60分以下为不及格。

main(){

scrnum;

请输入考试成绩"

scrnum);

if(scrnum>

=90){

优秀\n"

}else 

=70 

scrnum<

90){

良好\n"

=60 

70){

及格\n"

if(scrnum<

60){

不及格!

2-14.给定一个正整数,求它的位数并分别输出每一位数字。

intn,i=0,k;

inputn:

n);

while(n!

k=n%10;

k);

n=n/10;

i++;

\n%d\n"

i);

2-15.输出所有水仙花数(水仙花数是指一个三位数,其各个数字立方和等于它本身)。

inta,b,c,i;

for(i=100;

=999;

a=i/100;

b=(i%100)/10;

c=i%10;

if(i==a*a*a+b*b*b+c*c*c)

2-16.求1!

+2!

+3!

+….30!

的值。

2-17.求Fibonacci数列前N个数。

Fibonacci数列的特点;

第一个和第二个数都为1,从第三个开始,每个数都等于其前两个数的和。

#defineN100

intn,i,f[N];

f[0]=f[1]=1;

f[i]=f[i-1]+f[i-2];

for(i=0;

f[i]);

2-18.把200以内不能被3整除的数输出。

200;

if(i%3!

2-19.班级有20名小学生,有语文,数学,英语的成绩,求班级各科的平均分。

i;

float 

avg1,avg2,avg3,s1=0,s2=0,s3=0,a[20],b[20],c[20];

20;

%f%f%f"

a[i],&

b[i],&

c[i]);

s1+=a[i];

s2+=b[i];

s3+=c[i];

avg1=s1/20;

avg2=s2/20;

avg3=s3/20;

%f,%f,%f"

avg1,avg2,avg3);

2-20.输出100以内的所有素数,并且5个一行。

intn,k;

for(n=1;

100;

k++;

if(k%5==0)

printf("

2-21.输出1000到10000以内的可逆素数。

#include<

math.h>

intinverse(intn);

intisPrimer(intn);

main()

for(i=1000;

=10000;

i++)

if(isPrimer(i))

if(isPrimer(inverse(i)))

intinverse(intn)

intm=0,a;

for(;

n>

0;

n/=10)

a=n%10;

m=m*10+a;

return(m);

intisPrimer(intn)

inti,judge=1;

for(i=2;

=sqrt(n);

if(n%i==0)

judge=0;

break;

returnjudge;

2-22.两个数之差为2的素数,称谓孪生素数。

试输出5组孪生数。

i,j;

flag,n=0;

a[100];

for(i=2;

flag=1;

for(j=2;

if(i%j==0) 

flag=0;

break;

if(flag==1)

a[n]=i;

n++;

for(j=i+1;

if(a[j]-a[i]==2)

%d 

a[j]);

if(a[j+1]-a[j]==2)

a[j+1]);

i=3;

2-23.试输出1000到10000以内的对称数,并输出对称的个数。

2-24.输入10个学生5门课的成绩,计算每个学生的平均分,每门课的平均分兵找出各门课最高分数所对应的学生。

2-25.输入一行字符,统计其中数字,空格,小写字母,大写字母以及其他符号的个数。

chars;

inti=0,j=0,k=0,m=0,da=0,xiao=0;

pleaseinputthestring\n"

while((s=getchar())!

='

\n'

)/*循环从键盘读入字符直到一行结束(输入回车)*/

if((s<

z'

s>

a'

)||(s<

'

Z'

A'

))

if(s<

)da++;

)xiao++;

i++;

/*i存入字母数*/

elseif(s=='

'

)j++;

/*j存入空格数,注意s=='

里面是有一个空格的*/

elseif(s<

58&

47)k++;

/*k存入数字数*/

elsem++;

/*m存入其它符号数*/

字符:

%d大写字母:

%d小写字母:

%d\n空格:

%d\n数字:

%d\n其它:

i,da,xiao,j,k,m);

/*打印行中的字母,空格,数字,其它字符数*/

2-26.任意给定n值,按如下螺旋的方式输出方阵:

n=3时输出123

894

765

n=4时输出

1234

1213145

1116156

10987

Voidspi(intn)

inti=-1,j=0,k=n,a[100][100],r,s=1,t=1;

while(s<

=n*n)

for(r=0;

r<

k;

r++)

i+=t;

a[j][i]=s++;

for(r=k;

2*k-1;

j+=t;

k--;

t=-t;

for(j=0;

%3d"

a[i][j]);

inputanumber"

spi(n);

2-27.输出魔方阵(魔方阵是它的每一行,每一列和对角线之和均相等的方阵)如三阶魔方阵为:

816

357

492

inta[50][50],n,x,y,i,j,k;

输入魔方阵的阶数n:

n"

if(n%2==0)n++;

for(i=1;

=n;

for(j=1;

a[i][j]=0;

i=1;

j=(n+1)/2;

a[i][j]=1;

for(k=2;

k<

=n*n;

k++)

{i--;

j++;

if((i<

1)&

(j>

n)){i+=2;

j--;

if(i<

1)i=n;

if(j>

n)j=1;

if(a[i][j]!

=0){i+=2;

a[i][j]=k;

{printf("

%3d"

if(j==n)printf("

getchar();

getchar();

2-28编程打印形如下规律的n*n方阵例如下图:

使左对角线和右对角线上的元素为0,它们上方的元素为1,左方的元素为2,下方元素为3,右方元素为4,下图是一个符合条件的阶矩阵。

4

第三章:

累加法

3-1编程求1-2+3-4+5-6+7-……+99-100。

i,s;

for(i=1,s=0;

if(i%2!

s+=i;

else

s-=i;

getch();

3-2.1-1/2+1/3-1/4+…-1/100

voidp2()

floats=0;

intp=-1;

for(inti=1;

101;

i++){

p*=(-1);

s+=p*1.0/i;

1-1/2+1/3-1/4+…-1/100的结果是:

%f\n"

p2();

3-3求100以内所有素数的和

intfun(intm)

for(inti=2;

m;

return1;

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

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1