2023年哈尔滨工业大学C语言MOOC在线测试答案_第1页
2023年哈尔滨工业大学C语言MOOC在线测试答案_第2页
2023年哈尔滨工业大学C语言MOOC在线测试答案_第3页
2023年哈尔滨工业大学C语言MOOC在线测试答案_第4页
2023年哈尔滨工业大学C语言MOOC在线测试答案_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本答案仅供参考

第3周

1

计算两个数的平方和(3分)

题目内容:

从键盘读入两个实数,编程计算并输出它们的平方和,规定使用数学函数pow(x,y)计算平方值,输出结果保

存2位小数.

提醒:使用数学函数需要在程序中加入编译预解决命令#inelude<math.h>

以下为程序的运营结果示例:

pleaseinputxandy:

1.2,3.4/

result=13.00

输入格式:"%f,%f"

输出格式;

输入提醒信息:"Pleaseinputxandy:\n"

输出格式:"ResuIt=%.2f\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#include<stdio.h><math.h>

intmain()

floatx,y,S,D;

printf("PIeaseinputxandy:\n”);

seanff",&x,&y);

S=pow(x,2);

D=pow(y,2);

printf("Result=%.2f\n”,S+D);

areturn0;

}

2

逆序数的拆分计算(3分)

题目内容:

从键盘输入一个4位数的整数,编程计算并输出它的逆序数(忽略整数前的正负号)。例如,输入-1234,

忽略负号,由1234分离出其千位1、百位2、十位3、个位4,然后计算4*1000+3*100+2*10+1=

4321,并输出4321。再将得到的逆序数4321拆分为两个2位数的正整数43和21,计算并输出拆分

后的两个数的平方和的结果。

以下是程序的运营结果示例:

Inputx:

-1234/

y=4321

a=43,b=21

resu11=2290

输入格式:"%d"

输出格式:

输入提醒信息:"Inputx:\nM

逆序数输出格式:“y=%d\n”

逆序数拆分后的输出格式:"a=%d,b=%d\n”

平方和的输出格式:”resu1t=%d\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#include<stdio.h><math.h>

main()

{

intx,b0,b1,b2>b3,y,a,b,c;

printf(,'lnputx:\nM);

scanf("%dM,&x);

x=(int)fabs(x);/*取x绝对值*/

b3=x/1000;/*取x千位7

b2=(x-b3*1000)/100;/*取x百位*/

b1=(x-b3*10O0-b2*100)/10;/*取x十位*/

b0=x%10;/*取x个位*/

y=b3+b2*10+b1*100+b0*1000;

printf(ny=%d\nM,y);

a=b0*10+b1;

b=b2*10+b3;

(a*a)+(b*b);

printf("a=%d,b=%d\nn,a,b);

printf("result=%d\nM,c);

好eturn0;

3

拆分英文名(3分)

题目内容:

从键盘输入某同学的英文名(小写输入,假设学生的英文名只包含3个字母。如:tom),编写程序在屏幕

上输出该同学的英文名,且首字母大写(如:Tom)。同时输出组成该英文名的所有英文字符在26个英文字

母中的序号。

以下为程序的运营结果示例:

InputyourEng1ishname:

tom/

Tom

t:20

o:15

m:13

输入格式:"%c%c%c“

输出格式:

输入提醒信息:"InpulyourEnglishname:\n"

首字母大写的英文姓名的输出格式:“%c%c%c\n"

姓名中每个字母在26个英文字母中的序号的输出格式:"%c:%d\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#inc1ude<stdio.h><math.h>

intmain()

{

charx,y,z,A;

^>prinnputyourEng1ishname:\n°);

seanf(M^c%c%c\nM,&x,&y,&z);

A=x-32;/*首字母改为大写*/

printf(M%c%c%c\nM,A,y,z);

printf("%c:%d\nn,x,x-96);

printf("%c:%d\n",y,y-96);

printf(M%c:%d\n0,z,z-96);

)

4

计算体指数(3分)

题目内容:

从键盘输入某人的身高(以厘米为单位,如174cm)和体重(以公斤为单位,如70公斤),将身高(以米为

单位,如1.74m)和体重(以斤为单位,如140斤)输出在屏幕上,并按照以下公式计算并输出体指数,规定

结果保存到小数点后2位,

假设体重为w公斤,身高为h米,则体指数的计算公式为:

t=w/h2

以下是程序的运营结果示例:

Inputweight,height:

70,174/

weight=140

height=1.74

t=23.12

输入格式:"%d,%d"

输出格式:

输入提醒信息:"Inputweight,height:\n(注意:在height和逗号之间有一个空格)

体重输出格式:"weight=%d\n

身高输出格式:“height=%.2f\n"

体指数输出格式:”t=%.2f\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#inc1ude<stdio.h><math.h>

intmain()

{

floatA,b;

intx,y;

printf(MInputweight,height:\nM);

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

printfC'weight=%d\nM,x*2);

A=(f1oat)y/100;

print!("height=%.2f\nM,A);

b=(f1oat)x/(A*A);

printfC*t=%.2f\nn,b);

第4周

1

数位拆分V2.0(4分)

题目内容:

从键盘上输入一个4位数的整数n,编写程序将其拆分为两个2位数的整数a和b,计算并输出拆分后的两

个数的加、减、乘、除和求余运算的结果。例如ln=・4321,设拆分后的两个整数为a,b,则a=-43,b=・2

1。除法运算结果规定精确到小数点后2位。求余和除法运算需要考虑除数为0的情况,即假如拆分后b

=0,则输出提醒信息"Thesecondoperateriszero!n

程序的运营结果示例1:

P1easeinputn:

1200Z

12,0

sum=12,sub=12,multi=0

Thesecondoperateriszero!

程序的运营结果示例2:

Pieaseinputn:

-2304/

一23,-4

sum=—27,sub=-19,multi=92

dev=5.75,mod=-3

输入格式:“%d”

输出格式:

输入提醒信息:"Pleaseinputn:\n"

拆分后的两个整数的输出格式:”%d,%d\n”

加法、减法、乘法的输出格式:"sum=%d,sub=%d,multi=%d\n"

除法和求余的输出格式:"dev=%.2f,mod=%d\n"

除数为0的提醒信息:"Thesecondoperateriszero!\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#include<stdio.h><math.h>

main()

{

floatc;

intx,b0,b1,b2,b3,a>b,d;

dprintf(f,Pleaseinputn:\nM);

scanf(M%d”,&x);

b3=x/1000;/*取x千位*/

b2=(x-b3*1000)/100;/*取x百位*/

b1=(x-b3*1000-b2*100)/10;/*取x十位*/

bO=x%10;/*取x个位7

a=b3*10+b2;/*拆分输入的整数为两段*/

b=b1*l0+b0;

printf("%d,%d\nM,a,b);

printf("sum=%d,sub=%d,multi=%d\n”,a+b,a—b,a*b);/*输出两段数的加,减,

乘*/

if(0==b)

(

printf("Thesecondoperateriszero!\nM;

)

else

{

c=(float)a/b;

d=a%b;

printf("dev=%.2f,mod=%d\n”,c,d);

}

return0;

)

2

快递费用计算(4分)

题目内容:

上海市的某快递公司根据投送目的地距离公司的远近,将全国划提成5个区域:

0区1区2区3区4区

1500公里(含)以1500——2500公2500公里以

同城临近两省

内里上

北京,天津,河北,

吉林,辽宁,甘肃,四

辽宁,河南,安微,

江苏,浙川,重庆,青海,广

上海陕西,湖北,江西,新疆,西藏。

西,云南,海南,内

江湖南,福建,广东,

蒙古,黑龙江,贵州。

山西。

快递费按邮件重量计算,由起重费用、续重费用两部分构成:

(1)起重(首重)1公斤按起重资费计算(局限性1公斤,按1公斤计算),超过首重的重量,按公斤(局

限性1公斤,按1公斤计算)收取续重费;

(2)。同城起重资费10元,续重3元/公斤;

(3)寄往1区(江浙两省)的邮件,起重资费10元,续重4元;

(4)»寄往其他地区的邮件,起重资费统一为15元。而续重部分,不同区域价格不同:2区的续重5元/公斤,3

区的续重6.5元/公斤,4区的续重10元/公斤。

编写程序,从键盘输入邮件的目的区域编码和重量,计算并输出运费,计算结果保存2位小数。

提醒:续重部分局限性一公斤,按1公斤计算。因此,如包裹重量2.3公斤:1公斤算起重,剩余的1.3公斤算

续重,局限性1公斤按1公斤计算,1.3公斤折合续重为2公斤。假如重量应大于0、区域编号不能超过0

-4的范围。

程序运营结果示例1:

4,4.5Z

Price:55.00

程序运营结果示例2:

5,3.2/

ErrorinArea

Price:0.00

输入格式:

用逗号分隔的两个数字,第一个表达区域、第二个是重量:“%d,%f"

输出格式:

价格的输出格式:"Price:%5.2f\nH

区域错误的提醒信息:“ErrorinArea\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#inc1ude<stdio.h>

#inelude<math.h>

#defineeps1E—5

main()

(

f1oatb,c,d;

inta;

scanf(M%d,%f”,&a,&b);

switch(a)

{

case0:

if(b<=1+eps)

c=10.0;

else

(

d=ceiI(b-1.0);

c=d*3+10.0;

}

printf("Price:%5.2f\n",c);

break;

case1:

if(b<=1+eps)

(

c=10.0;

)

else

(

d=ceil(b-1.0);

c=d*4+10.0;

}

printf(MPrice:%5.2f\n",c);

break;

ise2:

if(b<=1+eps)

c=15.0;

}

else

(

d=cei1(b—1.0);

c=d*5+15.0;

)

printf("Price:%5.2f\nM,c);

break;

case3:

if(b<=1+eps)

(

c=15.0;

}

else

{

d=ceiI(b-1.0);

c=d*6.5+15;

)

printf("Price:%5.2f\nM,c);

break;

case4:

if(b<=1+eps)

c=15.0;

)

else

d=ceil(b-1.0);

c=d*10+l5.0;

}

printf("Price:%5.2f\nM,c);

break;

defau1t:

printf(HErrorinArea\n");

printf(MPrice:0.00”);

)

return0;

)

3

数据区间判断(6分)

题目内容:

从键盘输入一个int型的正整数n(已知:0vn<10000),编写程序判断n落在哪个区间。假如用户输入

的数据不在指定的范围里,程序输出"error!例如,输入265,则该数属于区间100-999。

程序运营结果示例1:

PIeaseenterthenumber:

2563/

2563:1000-9999

程序运营结果示例2:

Pleaseenterthenumber:

156/

156:100-999

程序运营结果示例3:

Pleaseenterthenumbe匚

36Z

36:10-99

程序运营结果示例4:

Pleaseenterthenumber:

3/

3:0-9

程序运营结果示例5:

Pleaseenterthenumber:

10923/

error!

输入格式:"%d"

输出格式:

输入提醒信息:nPIeaseenterthenumber:\n

输出的区间判断:

"%d:1000-9999\n"

"%d:100-999\n

"%d:10-99\nn

"%d:0-9\n"

输入错误提醒信息:"error!\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#include<stdio.h>

#inc1ude<math.h>

intmain()

intx,b0,b1,b2,b3,y,a,b,c;

printf(MPleaseenterthenumber:\nM);

scanf('f%d",&x);

if(x<=0||x>=10000)

(

printf(Merror!\n°);

)

e1se

r

b3=x/1000;/*取x千位*/

b2=(x-b3*1000)/100;/*取x百位*/

bl=(x-b3*1000-b2*100)/10;/*取x十位*/

b0=x%10;/*取x个位*/

if(b3!=0)

printf("%d:1000-9999\n",x);

)

elseif(b3==0&&b2;=0)

(

printf("%d:100-999\n",x);

)

elseif(b3==0&&b2==0&&b1;=0)

(

printf("%d:10-99\n",x);

}

else

(

Printf("%d:0-9\n",x);

}

)

return0;

}

4

计算一元二次方程的根v2.0(4分)

题目内容:

根据下面给出的求根公式,计算并输出一元二次方程加2+&c+c=°的两个实根,规定精确到小

数点后4位。其中a,b,c的值由用户从键盘输入。假如用户输入的系数不满足求实根的规定,输犯错

误提醒"error!”。

程序运营结果示例1:

P1easeenterthecoefficientsa,b,c:

1,2,1/

x1=-1.0000,x2=・1.0000

程序运营结果示例2:

P1easeenterthecoefficientsa,b,c:

2,6,1/

x1=-0.1771,x2=-2.8229

程序运营结果示例3:

PIeaseenterthecoefficientsa,b,c:

2,1,6/

error!

输入格式:“%f,%f,%f"

输出格式:

输入提醒信息:"Pieaseenterthecoefficientsa,b,c:\n"

输出格式:"x1=%7.4f,x2=%7.4f\n"

输入错误提醒信息:"error!\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#include<stdio.h>

#include<math.h>

intmain()

floata,b,c,disc,p,q;

printf('*Pleaseenterthecoefficientsa,b,c:\n");

scanf(n%f,%f,%f;

disc=b*b-4*a*c;

if(disc<0)

(

printf(Merror!\nM);

)

else

{

p=-b/(2*a);

q=sqrt(disc)/(2*a);

printf(nx1=%7.4f,x2=%7.4f\n",q+p,p-q);

}

return0;

第五周

1

6位密码输入检测(4分)

题目内容:

从键盘输入6位仅由数字0~9组成的密码。用户每输入•个密码并按回车键后,程序给出判断:假如是数

字,则原样输出该数字,并提醒用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提醒”er

rorM,并让用户继续输入下一位密码。直到用户输入的密码所有是数字为止。

以下为程序的运营结果示例:

Inputyourpassword:

1/

1,youhaveenter1-bitsnumber

6Z

6,youhaveenter2—bitsnumber

a/

error

6/

error

4/

4,youhaveenter3-bitsnumber

6/

6,youhaveenter4-bitsnumber

8/

8,youhaveenter5—bitsnumber

2/

2,youhaveenter6—bitsnumber

输入格式:

数字字符输入格式:“%C”

输出格式:

输入提醒信息:"Inputyourpassword:\n"

假如输入的是数字,输出格式为:"%c,youhaveenter%d-bitsnumber\n

假如输入的不是数字,输出提醒信息:"error'n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#include<stdio.h>

intmain()

(

inti;

charc;

printf(MInputyourpassword:\n

i=0;

while(i<6)

(

seanf(M%c%*cn,&c);

if((c>=48)&&(c<=57))

(

i=i+1;

printf(n%c,youhaveenter%d-bitsnumber\n'\c,i);

)

else

printf("error'rT);

)

return0;

}

2

判断一个整型数据有几位V1.0(4分)

题目内容:

从键盘输入一个整型数据(int型),编写程序判断该整数共有几位。例如,从键盘输入整数1664"该整

数共有5位。

程序运营结果示例1:

Pleaseenterthenumber:

21125/

21125:5bits

程序运营结果示例2:

P1easeenterthenumber:

-12234/

-12234:5bits

输入格式:“%d”

输出格式:

输入提醒信息:"Pleaseenterthenumber:\nH

判断该整数共有几位:"%d:%dbits\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#include<stdio.h>

#inc1ude<math.h>

intmain()

{

intn,nn,b,i,j,sum;

printf("Pleaseenterthenumber:\rT);

scanf(,f%dM,&n);

nn=fabs(n);

b=1;

sum=1;

i=1;

j=10;

while(b=1)

(

if((nn>=i)&&(nn<j))

(

printf(**%d:%dbits\n,',n,sum);

b=0;

break;

)

else

i=i*10;

j=J*10;

sum=sum+1;

}

return0;

3

检测输入数据中奇数和偶数的个数(4分)

题目内容:

从键盘输入一系列正整数,输入-1表达输入结束(-1自身不是输入的数据)。编写程序判断输入数据中

奇数和偶数的个数假如用户输入的第•个数据就是-1,则程序输出"over!"。否则。用户每输入一个数

据,输出该数据是奇数还是偶数,直到用户输入-1为止,分别记录用户输入数据中奇数和偶数的个数。

程序运营结果示例1:

Pleaseenterthenumber:

1/

1:odd

5/

5:odd

8/

8:even

9/

9:odd

12/

12:even

17/

17:Odd

-1Z

Thetota1numberofoddis4

Thetotalnumberofevenis2

程序运营结果示例2:

Pieaseenterthenumber:

-1/

over!

Thetotalnumberofoddis0

Thetotalnumberofevenis0

输入格式:“%d”

输出格式:

输入提醒信息:"Pleaseenterthenumber:\n"

用户输入的第一个数据就是・1,输出格式:"over!\n"

奇数的输出格式:"%d:odd\n"

偶数的输出格式:w%d:even\nH

输入数据中奇数的个数记录:"Thetotalnumberofoddis%d\nH

输入数据中偶数的个数记录:"Thetotalnumberofevenis%d\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#incIude<stdio.h>

intmain()

inta,odd,even;

odd=0;even=0;

printf(MPIeaseenterthenumber:\nn);

a=0;

while(a!=-1)

(

scant("%d”,&a);

if(a!=-1)

(

if(a%2==1)

{

odd++;

printf("%d:odd\n'*,a);

)

eIse(

even++;

printf(M%d:even\nH,a);

}

)

)

if(even+odd==0)

printf("over!\n*');

printf(MThetotalnumberofoddis%d\n'*,odd);

printf("Thetota1numberofevenis%d\n",even);

return0;

}

4

计算球的反弹高度(4分)

题目内容:

•个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下并反弹.....求它在第5次和第

10次落地时,分别共通过了多少米?第5次和第10次反弹分别是多高?规定计算结果保存到小数点后3位。

用户从键盘输入想要计算的第n次(n<=15)。

程序运营结果示例1:

Input:

5/

5times:

287.500

3.125

程序运营结果示例2:

1nput:

10Z

10times:

299.609

0.098

输入格式:n%d"

输出格式:

反弹次数:"%dtimes:\n"

第n次反弹共通过多少米

第n次的反弹高度:”%.3f\n"

输入提醒信息:“1nput:\rT

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#inc1ude<stdio.h>

intmain()

{

doubleh,sum=0;

intn,i;

printf(nInput:\n");

scanf(M%d11,&n);

h=100;

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

(

sum+=h;

h/=2;

sum+=h;

}sum-=h;

printf(u%dtimes:\n'*,n);

printtf*%.3f\n',,sum);

printf(',%.3f\n,\h);

return0;

第六周

1

程序改错v2.0(5分)

下而代码的功能是将百分制成绩转换为5分制成绩,具体功能是:假如用户输入的是非法字符或者不在合理

区间内的数据(例如输入的是a,或者102,或-45等),则程序输出Inputerror!,并允许用户重新输入

直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改对的。并按照下面给出

的运营示例检查程序。

1.#include<stdio.h>

2.intmain()

3.{

4.intscore;

5.chargrade;

6.printf("Pleaseinputscore:");

7.scanf("%€1",&score);

8.if(score<0|Iscore>100)

9.printf("Inputerror!\n");

10.elseif(score>=90)

11.grade='AJ;

12.elseif(score>=80)

13.grade='B*;

14.elseif(score>=70)

15.grade='C';

16.elseif(score>=60)

17.grade='D';

18.else

19.grade="E';

20.printf("grade:%c\n",grade);

21.return0;

22.)

程序运营结果示例1:

P1easeinputscore:

a/

Inputerror!

Pleaseinputscore:

-12/

Inputerror!

Pleaseinputscore:

230/

Inputerror!

Pleaseinputscore:

92/

grade:A

程序运营结果示例2:

Pleaseinputscore:

88/

grade:B

程序运营结果示例3:

PIeaseinputscore:

73/

grade:C

A程序运营结果示例4:

Pleaseinputscore:

65/

grade:D

A程序运营结果示例5:

Pleaseinputscore:

27Z

grade:E

输入提醒信息:"Pleaseinputscore:\nH

输入格式:"%d

输出格式:

输入错误时的提醒信息:"Inputerror!\n"

输出格式:"grade:%c\n”(注意:%c前面有一个空格)

为避免出现格式错误,请直接拷贝粘贴题口中给的格式字符串和提醒佶息到你的程序中。

时间限制:500ms内存限制:32023kb

#include<stdio.h>

intmain()

intscore=-1;

chargrade;

printf(HPleaseinputscore:\nn);

scanf("%d”,&score);

while(score<0|Iscore>100)

{

getchar();

printf("Inputerror!\n");

printf("Pleaseinputscore:\n'*);

scanf(n%d",&score);

)

if(score>=90)

grade='A';

elseif(score>=80)

grade='B';

eIseif(score>=70)

grade='C';

elseif(score>=60)

grade=D';

else

grade=E;

printf("grade:%c\n”,grade);

return0;

2

编程计算a+aa+aaa+…+aa...a(n个a)的值(4分)

题目内容:

编程计算a+aa-Faaa+...-l-aa...a(n个a)的值,n和a的值由键盘输入。例如,当n=4,a=2,表达计

算2+22+222+2222的值。

程序运营结果示例:

Inputa,n:

2,4/

sum=2468

输入提醒信息:"Inputa,n:\n"

输入格式:”%d,%d"(先输入a,后输入n)

输出格式:"sum=%ld\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:31kb

#include<stdio.h>

main()

longterm=0,sum=0;

inta,i,n;

printf("Inputa,n:\nn);

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

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

term=term*10+a;

sum=sum+term;

}

printf("sum=%ld\n",sum);

)

3

搬砖问题(4分)

题目内容:

11块砖(27<11<=77),36人搬,男搬4,女搬3,两个小孩抬一块砖,规定一次搬完,问男人、女人和小孩各

需多少人?请用穷举法编程求解,n的值规定从键盘输入。输出结果按照男人数量升序给出(见下面示例3)。

程序的运营结果示例1:

Inputn(27<n<=77):

28/

men=0,women=4,children=32

程序的运营结果示例2:

Inputn(27<n<=77):

36/

men=3,women=3,chiIdren=30

程序的运营结果示例3:

Inputn(27<n<=77):

60/

men=2,women=14,children=20

men=7,women=7,chi1dren=22

men=12,women=O,chi1dren=24

A

输入提醒:"Inputn(27<n<=77):\n"

输入格式:"%d"

输出格式:"men=%d,women=%d,children=%d\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

#include<stdio.h>

intmain()

(

inta;

intman,wman,chiId;

printf("Inputn(27<n<=77):\nH;

scanf(H%d'\&a);

for(man=0;man<=15;man++)

(

for(wman=0;wman<=20;wman++)

(

chi1d=36-wman-man;

if(a==child/2+3*wman+4*man&&chi1d%2

0)

printf("men=%d,women=%d,chiIdren=%d\n",man,wman,

child);

)

)

)

)

4

编程输出某年某月有多少天(考虑到闰年)。(5分)

题目内容:

从键盘输入一个年份和月份,输出该月有多少天(考虑闰年),用switch语句编程。

程序运营结果示例1:

Inputyear,month:

2023,3/

31days

A

程序运营结果示例2:

Inputyear,month:

2023,4Z

30days

程序运营结果示例3:

Inputyear,month:

2023,2/

29days

A

程序运营结果示例4:

Inputyear,month:

2023,2/

28days

程序运营结果示例5:

Inputyear,month:

2023,13/

Inputerror!

输入提醒信息:"Inputyear,month:\n,r

输入格式:“%d,%d”

输出格式:

输入错误时的提醒信息:"Inputerror!\nH

输出格式:

"31days\n"

30days\n"

"29days\n"

"28days\nH

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提醒信息到你的程序中。

时间限制:500ms内存限制:32023kb

#include<stdio.h>

intmain()

inty,m;

printf("Inputyear,month:\n");

scanf(n%d,%d0,&y,&m);

if(m<0|Im>12){printf("Inputerror!\n");return0;}

switch(m)

|

case1:

case3:

case5:

case7:

case8:

case10:

case12:

printf(”31days\nn);

break;

case4:

case6:

case9:

case11:

printf(u30days'n");

break;

case2:

if(y%100==0)y/=100;

if(y%4==0)printf(“29days\nH);

elseprintf("28days\n");

return0;

)

第七周

1

递归法计算游戏人员的年龄(4分)

题目内容:

有n个人围坐在一起,问第n个人多大年纪,他说比第n—1个人大2岁;问第n-1个人,他说比第n-2

个人大2岁......问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说

自己10岁,问第n个人多大年纪。

递归函数原型:unsignedintComputeAge(unsignedintn);

提醒:

计算年龄的递归公式为:

,、|10(〃=D

asje(〃)=<,、

|age(n—1)+2(〃>1)

输入格式:"%u"

输出格式:"Theperson'sageis%u\n"

输入样例1:

5/

输出样例1:

The_person's_age_is_18

输入样例2:

10/

输出样例2:

The_person's_ageJs_28

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提醒信息和格式控制字符串!

(注意:在输出中代表空格,假如直接将上段示例粘贴到代码中,应将其替换为空格。)

时间限制:500ms内存限制:32023kb

#include<stdio.h>

#incIude<std1ib.h>

unsignedintComputeAge(unsignedintn);

unsignedintComputeAge(unsignedintn)

(

inta;

if(n==1)

a=10;

else

a=ComputeAge(n-1)+2;

returna;

)

intmain()

(

unsignedintn,f;

scanf("%u”,&n);

f=ComputeAge(n);

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

return0;

△2.魔术师猜数(4分)

题目内容:

在一种室内互动游戏中,魔术师要每位观众心里想一个三位数abc(a,b、c分别是百位、十位和个位数

字),然后魔术师让观众心中记下acb、bac、bca,cab、cba五个数以及这5个数的和值。只要观众说

出这个和是多少,则魔术师一定能猜出观众心里想的原数abc是多少。例如,观众甲说他计算的和值是1

999,则魔术师立即说出他想的数是443,而观众乙说他计算的和值是1998,则魔术师说:“你算错了!,

请编程模拟这个数字魔术游戏。规定用函数实现,函数原型为:

intMagic(intm);

其中形参m代表观众计算的和值。

输入格式:"%d”

输出格式:

观众计算错误,魔术师给出的结论:"Thesumyoucalculatediswrong!\n"

观众计算对的,魔术师给出的结论:"Thenumberis%d\n"

输入样例1:

1998Z

输出样例1:

The_sum_you_calcuIated_is_wrong!

输入样例2:

1999Z

输出样例2:

The_number_is_443

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提醒信息和格式控制字符串!

(注意:在输出中代表空格,假如直接将上段示例粘贴到代码中,应将其替换为空格。)

参考:

#include<stdio.h>A#include<windows.h>

#inc1ude<time.h>A#include<math.h>A#include<stdlib.hx〃函数的声明Avoid

magician();

voiddecision();M/Oidmainmenu()泠voidexitgame();

voidhellp();Avoidp1ayerchoice();

AVoidmainPage()//主界面

(

Anti*printfCMvvvvvv系统正在加载中,请稍

等............vwvw\t\n");

oprintf(n\t——zzzzzzzzzzz电脑不给力,请稍等一会......—zzzzzzzzz

zzz\t\n");葡or(i=0;i<80;i++)

。{3primf("%%”);aS1eep(200);

)

oprintfC'\t\t\t——终于结束了、()▽工)r\t\t\t\nn);

systemf'CLS”);

®system(ncolor8B");

printf(n*******火********夫****************************

********************\n”).aprintf("*******************************

************************************、n3).

oPrintf(-**

**\n");

printf(H•火

**\n");sprintf("大*第五组

**\nn);4printf("**成员:林可、王丽婕、张婷婷、许春雪、

**\n");Aprintf('*裴月娥、钱鹏辰

**\n”);

printf(H**

sprintff**

叩rintf(n*********************火*****************************************

****\n");3printf("******文夫***文>★*夫**********火*****弋★★★/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论