PTA实验LB05LB08Word文档下载推荐.docx

上传人:b****6 文档编号:21167344 上传时间:2023-01-28 格式:DOCX 页数:35 大小:27.28KB
下载 相关 举报
PTA实验LB05LB08Word文档下载推荐.docx_第1页
第1页 / 共35页
PTA实验LB05LB08Word文档下载推荐.docx_第2页
第2页 / 共35页
PTA实验LB05LB08Word文档下载推荐.docx_第3页
第3页 / 共35页
PTA实验LB05LB08Word文档下载推荐.docx_第4页
第4页 / 共35页
PTA实验LB05LB08Word文档下载推荐.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

PTA实验LB05LB08Word文档下载推荐.docx

《PTA实验LB05LB08Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《PTA实验LB05LB08Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。

PTA实验LB05LB08Word文档下载推荐.docx

输入样例:

23

输出样例:

s=246

intmain(){

inta,t,n,i,sum;

a,&

n);

sum=0,t=0;

for(i=1;

=n;

t=t*10+a;

sum=sum+t;

s=%d"

sum);

7-8 

猜数字游戏 

(15分)

猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Toobig”),还是小了(“Toosmall”),相等表示猜到了。

如果猜到,则结束程序。

程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!

”;

如果3次以内猜到该数,则提示“LuckyYou!

如果超过3次但是在N(>

3)次以内(包括第N次)猜到该数,则提示“GoodGuess!

如果超过N次都没有猜到,则提示“GameOver”,并结束程序。

如果在到达N次之前,用户输入了一个负数,也输出“GameOver”,并结束程序。

输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。

最后每行给出一个用户的输入,直到出现负数为止。

在一行中输出每次猜测相应的结果,直到输出猜对的结果或“GameOver”则结束。

584

70

50

56

58

60

-2

Toobig

Toosmall

GoodGuess!

intmain()

{

intnum,n;

intinp;

intfinished=0;

intcnt=0;

num,&

do{

scanf("

%d"

inp);

cnt++;

if(inp<

0){

printf("

GameOver\n"

);

finished=1;

}elseif(inp>

num){

Toobig\n"

}elseif(inp<

Toosmall\n"

}else{

if(cnt==1){

Bingo!

\n"

}

elseif(cnt<

=3){

LuckyYou!

finished=1;

if(cnt==n){

if(!

finished){

while(!

finished);

7-9 

兔子繁衍问题 

一对兔子,从出生后第3个月起每个月都生一对兔子。

小兔子长到第3个月后每个月又生一对兔子。

假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对

输入在一行中给出一个不超过10000的正整数N。

在一行中输出兔子总数达到N最少需要的月数。

30

9

intmain(void){

intN;

if(N==1)printf("

1"

else{

inti,count,x1,x2,sum,x;

sum=2,x1=1,x2=1,x=0;

for(i=2;

x2<

N;

x=x1+x2;

x1=x2;

x2=x;

i);

7-10 

高空坠球 

皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。

问皮球在第n次落地时,在空中一共经过多少距离第n次反弹的高度是多少

输入在一行中给出两个非负整数,分别是皮球的初始高度和n,均在长整型范围内。

在一行中顺序输出皮球第n次落地时在空中经过的距离、以及第n次反弹的高度,其间以一个空格分隔,保留一位小数。

题目保证计算结果不超过双精度范围。

335

7-11 

求分数序列前N项和 

本题要求编写程序,计算序列2/1+3/2+5/3+8/5+...的前N项之和。

注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

输入在一行中给出一个正整数N。

在一行中输出部分和的值,精确到小数点后两位。

20

 

#include<

intmain(void)

intn=0,time=0;

doublesum=0,h=0;

%lf%d"

h,&

while(h!

=0&

&

time<

n){

sum+=h;

time++;

h=h/2;

if(n==0){

sum=0;

h=0;

else

sum=sum-h;

%%"

sum,h);

intN,count;

doublefm=1,fz=2,i,sum=0,t;

for(count=1;

count<

count++){

i=*fz/fm;

sum=sum+i;

t=fm+fz;

fm=fz;

fz=t;

}

%.2f\n"

7-1 

求e的近似值 

自然常数e可以用级数1+1/1!

+1/2!

+⋯+1/n!

来近似计算。

本题要求对给定的非负整数n,求该级数的前n项和。

输入第一行中给出非负整数n(≤1000)。

在一行中输出部分和的值,保留小数点后八位。

10

2.

inti,j,n;

doublefac=1;

doublesum=1;

fac=fac*i;

sum=sum+fac;

%.8lf"

7-2 

换硬币 

将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法

输入在一行中给出待换的零钱数额x∈(8,100)。

要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。

每行输出一种换法,格式为:

“fen5:

5分硬币数量,fen2:

2分硬币数量,fen1:

1分硬币数量,total:

硬币总数量”。

最后一行输出“count=换法个数”。

13

fen5:

2,fen2:

1,fen1:

1,total:

4

1,fen2:

3,fen1:

2,total:

6

2,fen1:

4,total:

7

6,total:

8

count=4

intc5=0,c2=0,c1=0,cnt=0;

intx=13;

x);

for(c5=x/5;

c5>

0;

c5--)

for(c2=x/2;

c2>

c2--)

for(c1=x;

c1>

c1--)

if(c5*5+c2*2+c1==x){.+因子k”,其中完数和因子均按递增顺序给出。

若区间内没有完数,则输出“None”。

230

6=1+2+3

28=1+2+4+7+14

inta[1000],b,c,d,e,m,n,i,j,k;

scanf("

m,&

e=0;

for(i=m;

i<

=n;

i++)

b=0;

c=1;

for(j=1;

j<

i;

j++)

d=i%j;

if(d==0)

b+=j;

a[c]=j;

c++;

if(b==i)

if(e>

0)printf("

for(k=1;

k<

=c-1;

k++)

if(k==1)printf("

%d=1"

elseprintf("

+%d"

a[k]);

e++;

if(e==0)printf("

None"

return0;

打印九九口诀表 

下面是一个完整的下三角九九口诀表:

1*1=1

1*2=22*2=4

1*3=32*3=63*3=9

1*4=42*4=83*4=124*4=16

1*5=52*5=103*5=154*5=205*5=25

1*6=62*6=123*6=184*6=245*6=306*6=36

1*7=72*7=143*7=214*7=285*7=356*7=427*7=49

1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64

1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81

本题要求对任意给定的一位正整数N,输出从1*1到N*N的部分口诀表。

输入在一行中给出一个正整数N(1≤N≤9)。

输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

intmain()

{inti,j,N;

for(i=1;

=N;

i++)

{for(j=1;

=i;

j++){printf("

%d*%d=%-4d"

j,i,i*j);

printf("

找出指定数量学生的最高分 

本题要求编写程序,找出最高分。

输入在第一行中给出正整数n,即学生人数。

第二行给出n个非负整数,即这n位学生的成绩,其间以空格分隔。

在一行中输出最高分

82549873

98

inti,n,m=-1,a,s=0;

for(i=0;

n;

a);

if(m<

a)

m=a;

else;

m);

找出一批学生的最高分 

输入在一行中给出一系列非负整数,其间以空格分隔。

当读到负整数时,表示输入结束,该数字不要处理。

在一行中输出最高分。

在这里给出一组输入。

例如:

6788735409560-1

在这里给出相应的输出。

95

if(a<

0)return0;

while

(1){

if(a<

0)

break;

if(m<

m=a;

逆序输出一个整数的各位数字 

本题要求编写程序,对输入的一个非负整数,从低位开始逐位分割并输出它的各位数字。

输入在一行中给出一个长整型范围内的非负整数。

从低位开始逐位输出该整数的各位数字,每个数字后面有一个空格。

1234560

0654321

intn;

&

intm;

inta[100];

intk;

while(n>

=10)

{

m=n%10;

%d"

m);

n=n/10;

n);

7-12 

输出2到n之间的全部素数 

本题要求输出2到n之间的全部素数,每行输出10个。

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

注意:

1不是素数,2是素数。

输入在一行中给出一个长整型范围内的整数。

输出素数,每个数占6位,每行输出10个。

如果最后一行输出的素数个数不到10个,也需要换行。

2357

main()

inti,j,n,k=0;

for(j=2;

j<

i;

if(i%j==0)break;

if(i==j)

{printf("

%6d"

k++;

if(k%10==0)printf("

7-13 

输出前n个Fibonacci数 

本题要求编写程序,输出菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证输出结果在长整型范围内。

Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如:

1,1,2,3,5,8,13,...。

输入在一行中给出一个整数N(1≤N≤46)。

输出前N个Fibonacci数,每个数占11位,每行输出5个。

如果最后一行输出的个数不到5个,也需要换行。

如果N小于1,则输出"

Invalid."

输入样例1:

输出样例1:

11235

813

输入样例2:

输出样例2:

Invalid.

intf1,f2,fn,i,n,a=1;

f1=1;

f2=1;

if(n<

=1)if(n<

1)printf("

%11d"

a);

else{

%11d%11d"

f1,f2);

for(i=3;

i++)

fn=f2+f1;

fn);

if(i%5==0)

else;

f1=f2;

f2=fn;

}}

7-14 

穷举问题-搬砖 

某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。

如果想用n人正好搬n块砖,问有多少种搬法

输入在一行中给出一个正整数n。

输出在每一行显示一种方案,按照"

men=cnt_m,women=cnt_w,child=cnt_c"

的格式,输出男人的数量cnt_m,女人的数量cnt_w,小孩的数量cnt_c。

请注意,等号的两侧各有一个空格,逗号的后面也有一个空格。

如果找不到符合条件的方案,则输出"

45

men=0,women=15,child=30

men=3,women=10,child=32

men=6,women=5,child=34

men=9,women=0,child=36

作者:

杨起帆

单位:

浙江大学城市学院

时间限制:

400ms

内存限制:

64MB

代码长度限制:

16KB

doublechild,men,wom;

intn,c;

for(men=0;

men<

men++)

for(wom=0;

wom<

wom++)

for(child=0;

child<

child++)

if(men+child+wom==n&

men*3+wom*2+child*==n)

men=%.0f,women=%.0f,child=%.0f\n"

men,wom,child);

if(n<

3)printf("

6-5 

使用函数求素数和 

本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。

函数接口定义:

intprime(intp);

intPrimeSum(intm,intn);

其中函数prime当用户传入参数p为素数时返回1,否则返回0;

函数PrimeSum返回区间[m, 

n]内所有素数的和。

题目保证用户传入的参数m≤n。

裁判测试程序样例:

intm,n,p;

m,&

Sumof("

for(p=m;

p<

p++){

if(prime(p)!

=0)

p);

)=%d\n"

PrimeSum(m,n));

/*你的代码将被嵌在这里*/

-110

Sumof(2357)=17

intprime(intp){inti;

for(i=2;

=p/2;

{if(p%i==0)break;

}if(i>

p/2&

p>

1)

return1;

}intPrimeSum(intm,intn){inti,sum=0;

=n){for(i=m;

i++){if(prime(i)==1){sum=sum+i;

}}

}returnsum;

6-6 

数字金字塔 

本题要求实现函数输出n行数字金字塔。

voidpyramid(intn);

其中n是用户传入的参数,为[1,9]的正整数。

要求函数按照如样例所示的格式打印出n行数字金字塔。

意每个数字后面跟一个空格。

{

pyramid(n);

5

1

22

333

4444

55555

voidpyramid(intn){

inti,j,k,m;

m=n;

i++,m--){

j=m;

for(;

j>

1;

j--)

"

for(k=i;

k>

k--)

i);

printf("

6-7 

使用函数计算两个复数之积 

(10分)

若两个复数分别为:

c​1​​=x​1​​+y​1​​i和c​2​​=x​2​​+y​2​​i,则它们的乘积为 

c​1​​×

c​2​​=(x​1​​x​2​​−y​1​​y​2​​)+(x​1​​y​2​​+x​2​​y​1​​)i。

本题要求实现一个函数计算两个复数之积。

doubleresult_

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

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

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

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