哈工大MOOC课件编程题参考答案79周.docx

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

哈工大MOOC课件编程题参考答案79周.docx

《哈工大MOOC课件编程题参考答案79周.docx》由会员分享,可在线阅读,更多相关《哈工大MOOC课件编程题参考答案79周.docx(36页珍藏版)》请在冰点文库上搜索。

哈工大MOOC课件编程题参考答案79周.docx

哈工大MOOC课件编程题参考答案79周

编程题参考答案(7-9周)

第七周_在线测试

1.递归法计算游戏人员的年龄

#include

unsignedintComputeAge(unsignedintn);

intmain(void)

{

unsignedintn;

scanf("%u",&n);

printf("Theperson'sageis%u\n",ComputeAge(n));

return0;

}

//函数功能:

用递归算法计算第n个人的年龄

unsignedintComputeAge(unsignedintn)

{

unsignedintage;

if(n==1)

{

age=10;

}

else

{

age=ComputeAge(n-1)+2;

}

returnage;

}

2.魔术师猜数

#include

intMagic(intm);

intmain()

{

intm,ret;

scanf("%d",&m);

ret=Magic(m);

if(ret!

=1)

{

printf("Thesumyoucalculatediswrong!

\n");

}

return0;

}

intMagic(intm)

{

inta,b,c,n;

for(a=1;a<9;a++)

{

for(b=1;b<9;b++)

{

for(c=1;c<9;c++)

{

n=122*a+212*b+221*c;

if(m==n)

{

printf("Thenumberis%d\n",100*a+10*b+c);

return1;

}

}

}

}

return0;

}

3.寻找中位数v1.0

#include

#include

intmid(inta,intb,intc);

intmain()

{

inta,b,c;

scanf("%d%d%d",&a,&b,&c);

printf("Theresultis%d\n",mid(a,b,c));

return0;

}

intmid(inta,intb,intc)

{

inttmp1=a,tmp2,tmp3,tmp4;

if(tmp1>b)

{

tmp1=b;

tmp2=a;

tmp3=c;

if(tmp1>c)

{

tmp1=c;

tmp3=b;

}

if(tmp2>tmp3)

{

tmp4=tmp3;

tmp3=tmp2;

tmp2=tmp4;

}

}

else

{

tmp2=b;

tmp3=c;

if(tmp1>c)

{

tmp1=c;

tmp3=a;

}

if(tmp2>tmp3)

{

tmp4=tmp3;

tmp3=tmp2;

tmp2=tmp4;

}

}

returntmp2;

}

4.还原算术表达式

#include

#include

intmain()

{

intx,y,z,n,flag=0;

printf("Inputn(n<1000):

\n");

scanf("%d",&n);

for(x=0;x<=5;x++)

{

for(y=0;y<=5;y++)

{

for(z=0;z<=9;z++)

{

if(100*x+10*y+z+z+10*z+100*y==n)

{

printf("X=%d,Y=%d,Z=%d\n",x,y,z);

flag=1;

break;

}

}

}

}

if(flag==0)printf("Invalid\n");

return0;

}

第七周_练兵区

1.谐均值计算

#include

doubleCalculate(double,double);

intmain(void)

{

doublea,b;

printf("Inputtwodoubles:

\n");

scanf("%lf%lf",&a,&b);

printf("1/((1/x+1/y)/2)=%0.3f\n",Calculate(a,b));

return0;

}

doubleCalculate(doublex,doubley)

{

return1/((1/x+1/y)/2);

}

2.输出指定行列数的字符

#include

voidChline(charch,intcolumn,introw);

intmain(void)

{

intx,y;

charch;

printf("inputachar:

\n");

scanf("%c",&ch);

printf("inputcolumnandrow:

\n");

scanf("%d%d",&x,&y);

Chline(ch,x,y);

return0;

}

voidChline(charch,intcolumn,introw)

{

intx,y;

for(y=0;y

{

for(x=0;x

printf("%c",ch);

printf("\n");

}

}

第八周_在线测试

1.计算礼炮声响次数

#include

intmain()

{

intt,n=0;

for(t=0;t<=140;t++)

{

if(t%5==0&&t<=21*5)

{

n++;

continue;

}

if(t%6==0&&t<=21*6)

{

n++;

continue;

}

}

if(t%7==0&&t<=21*7)

{

n++;

continue;

}

printf("n=%d",n);

return0;

}

2.兔子生崽问题

#include

#defineN12

intFibonacci(intf[],intn);

intmain()

{

}

intf[N],i,num,sum;

printf("Inputn(n<=12):

\n");

scanf("%d",&num);

sum=Fibonacci(f,num);

printf("\nTotal=%d\n",sum);

return0;

/*函数功能:

计算并打印Fibonacci数列的前n项*/

intFibonacci(intf[],intn)

{

inti,sum=0;

f[0]=1;

f[1]=2;

for(i=2;i

{

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

}

for(i=0;i

{

printf("%4d",f[i]);

}

for(i=0;i

{

sum=sum+f[i];

}

returnsum;

}

3.抓交通肇事犯

#include

intmain()

{

inta,b,c,d,i,j;

for(i=31;i<100;i++)

{

j=i*i;

a=j/1000;

d=j%10;

b=j%1000/100;

c=j%100/10;

if(a==b&&c==d&&a!

=c)

printf("k=%d,m=%d\n",j,i);

}

return0;

}

4.检验并打印幻方矩阵

#include

#define

N5

intmain(void)

{

inti,j;

intx[N][N];

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

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

{

scanf("%d",&x[i][j]);

}

introwSum[N],colSum[N],diagSum1,diagSum2;

intflag=1;

for(i=0;i

{

rowSum[i]=0;

for(j=0;j

{

rowSum[i]=rowSum[i]+x[i][j];

}

}

for(j=0;j

{

colSum[j]=0;

for(i=0;i

{

colSum[j]=colSum[j]+x[i][j];

}

}

diagSum1=0;

for(j=0;j

{

diagSum1=diagSum1+x[j][j];

}

diagSum2=0;

for(j=0;j

{

diagSum2=diagSum2+x[j][N-1-j];

}

if(diagSum1!

=diagSum2)

{

flag=0;

}

else

{

for(i=0;i

{

if((rowSum[i]!

=diagSum1)||(colSum[i]!

=diagSum1))

flag=0;

}

}

if(flag)

{

printf("Itisamagicsquare!

\n");

for(i=0;i

{

for(j=0;j

{

printf("%4d",x[i][j]);

}

printf("\n");

}

}

else

{

printf("Itisnotamagicsquare!

\n");

}

return0;

}

第八周_练兵区

1.三天打渔两天晒网

#include

#include

intmain()

{

inty,m,d;

intsum=0;

scanf("%4d-%2d-%2d",&y,&m,&d);

if(y<1990)

{

printf("Invalidinput.");

return0;

}

if((y%100!

=0&&y%4==0)||(y%400==0))

{

switch(m)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

if(d>31||d<1)

{

printf("Invalidinput");

return0;

}

break;

case2:

if(d>29||d<1)

{

printf("Invalidinput");

return0;

}

break;

case4:

case6:

case9:

case11:

if(d>30||d<1)

{

printf("Invalidinput");

return0;

}

break;

default:

printf("Invalidinput");

return0;

break;

}

}

else

{

switch(m)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

if(d>31||d<1)

{

printf("Invalidinput");

return0;

}

break;

case2:

if(d>28||d<1)

{

printf("Invalidinput");

return0;

}

break;

case4:

case6:

case9:

case11:

if(d>30||d<1)

{

printf("Invalidinput");

return0;

}

break;

default:

printf("Invalidinput");

return0;

break;

}

}

inti;

if(y>1990)

{

for(i=1990;i

{

if((i%100!

=0&&i%4==0)||(i%400==0))

{

sum=sum+366;

}

else

{

sum=sum+365;

}

}

}

inti1;

if(m>1)

{

for(i1=1;i1

{

if((y%100!

=0&&y%4==0)||(y%400==0))

{

switch(i1)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

sum=sum+31;

break;

case2:

sum=sum+29;

break;

case4:

case6:

case9:

case11:

sum=sum+30;

break;

}

}

else

{

switch(i1)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

sum=sum+31;

break;

case2:

sum=sum+28;

break;

case4:

case6:

case9:

case11:

sum=sum+30;

break;

}

}

}

}

sum=sum+d;

sum=sum%5;

if(sum==0||sum==4)

{

printf("Heishavingarest");

}

else

{

printf("Heisworking");

}

return0;

}

2.统计用户输入

#include

intmain(void)

{

intspace=0,newline=0,others=0;

chara;

printf("Pleaseinputastringendby#:

\n");

while((a=getchar())!

='#')

if(a=='')space++;

elseif(a=='\n')newline++;

elseothers++;

printf("space:

%d,newline:

%d,others:

%d\n",space,newline,others);

return(0);

}

3.统计正整数中指定数字的个数

#include

intCountDigit(intnumber,intdigit)

{

intcount=0;

do

{

if(digit==number%10)count++;

number=number/10;

}while(number>9);

returncount;

}

intmain()

{

intm,n;

printf("Inputm,n:

\n");

scanf("%d,%d",&m,&n);

printf("%d\n",CountDigit(m,n));

return0;

}

4.玫瑰花数

#include

intmain()

{

inti,a,n,s,m;

for(a=1000;a<=9999;a++)//遍历所有的4位数

{

n=a;

for(s=0,i=1;i<=4;i++)

{

m=n%10;

n=n/10;

//求出当前n的最低位

//将n缩小10倍,去掉最低位

s=s+m*m*m*m;//计算4位数字的4次方之和

}

if(a==s)

{

//满足4位数等于其4位数字的4次方之和的即为玫瑰花数

printf("%d\n",a);

}

}

return0;

}

5.四位反序数

源码1:

#include

intmain()

{

inti,j,k,m;

for(i=1;i<=9;i++)//千位从1变化到9

{

for(j=0;j<=9;j++)//百位从0变化到9

{

for(k=0;k<=9;k++)//十位从0变化到9

{

for(m=1;m<=9;m++)//个位从1变化到9

{

if(9*(i*1000+j*100+k*10+m)==m*1000+k*100+j*10+i)

{

printf("%d\n",i*1000+j*100+k*10+m);

}

}

}

}

}

return0;

}

源码2:

#include

intmain()

{

inti;

for(i=1001;i<1111;i++)//遍历所有的9倍之后仍为4位数的数

{

if(i%10*1000+i/10%10*100+i/100%10*10+i/1000==i*9)

{

printf("%d\n",i);

}

}

return0;

}

6.8除不尽的自然数

源码1:

#include

intmain()

{

inta,find=0;

for(a=0;!

find;a++)

{

if(((a*8+7)*8+1)*8+1==(34*a+15)*17+4)

{

printf("%d\n",(34*a+15)*17+4);

find=1;

}

}

return0;

}

源码2:

#include

intmain()

{

inti,find=0;

for(i=1992;!

find;i++)

{

if(i%8==1)

{

if((i/8)%8==1)

{

if((i/8/8)%8==7)

{

if(i%17==4)

{

if((i/17)%17==15)

{

if((i/17/17)==2*(i/8/8/8))

{

printf("%d\n",i);

find=1;

}

}

}

}

}

}

}

return0;

}

第九周_在线测试

1.ISBN识别码判断

#include

intmain()

{

charisbn[13];

inti,k=0,last,p;

gets(isbn);

for(i=0,p=0;i<11;i++)

{

if(isbn[i]=='-')continue;

p++;

k+=(isbn[i]-48)*p;

}

last=k%11;

if(last==10)

last='X';

else

last+=48;

if(last==isbn[12])

printf("Right");

else

{

isbn[12]=last;

printf("%s",isbn);

}

return0;

}

2.摘苹果

#include

intmain()

{

inta[10];

intheight,get=0;

inti;

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

{

scanf("%d",&a[i]);

}

scanf("%d",&height);

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

{

if((height+30)>=a[i])

{

get++;

}

}

printf("%d",get);

return0;

}

3.求最大素数

#include

#include

intsum_prime(inta[],intn);

intprime(intn);

intmain()

{

inti,a[10],sum;

intnum;

printf("Inputn(n<=500):

\n");

scanf("%d",&num);

sum=sum_prime(a,num);

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

printf("%6d",a[i]);

printf("\nsum=%d\n",sum);

return0;

}

intsum_prime(inta[],intn)

{

inti,j=n,sum=0;

for(i=0;i<10;)

{

if(prime(j))

{

sum=sum+j;

a[i]=j;

i++;

}

j--;

}

returnsum;

}

intprime(intn)

{

inti,k;

k=(int)sqrt((double)n);

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

{

if(n%i==0)

return0;

}

if(i>=k+1)

return1;

}

4.字符串逆序

#include

#include

#defineN80

voidInverse(charstr[]);

intmain()

{

chara[N];

printf("Inputastring:

\n");

gets(a);

Inverse(a);

printf("Inversedresults:

\n");

puts(a);

return0;

}

voidInverse(charstr[]

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

当前位置:首页 > 解决方案 > 学习计划

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

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