TPA部分试题.docx

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

TPA部分试题.docx

《TPA部分试题.docx》由会员分享,可在线阅读,更多相关《TPA部分试题.docx(57页珍藏版)》请在冰点文库上搜索。

TPA部分试题.docx

TPA部分试题

《算法与程序设计》PTA习题集

第4周

本题目要求计算下列分段函数f(x)的值:

输入格式:

输入在一行中给出实数x。

输出格式:

在一行中按“f(x)=result”的格式输出,其中x与result都保留一位小数。

输入样例1:

10

输出样例1:

f(10.0)=0.1

输入样例2:

0

输出样例2:

f(0.0)=0.0

#include

intmain()

{

floatx,result;

scanf("%f",&x);

if(x==0)

{

result=0;

}

else

{

result=1.0/x;

}

printf("f(%.1f)=%.1f",x,result);

return0;

}

 

编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。

输入格式:

输入在一行中给出带有中间的:

符号(半角的冒号)的24小时制的时间,如12:

34表示12点34分。

当小时或分钟数小于10时,均没有前导的零,如5:

6表示5点零6分。

提示:

在scanf的格式字符串中加入:

,让scanf来处理这个冒号。

输出格式:

在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。

如5:

6PM表示下午5点零6分。

注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:

00就是12小时制的12:

0PM;而0点被认为是第二天的时间,所以是0:

0AM。

输入样例:

21:

11

输出样例:

9:

11PM

#include

intmain()

{

inta,b;

scanf("%d:

%d",&a,&b);if(a>12)

{

printf("%d:

%d",a-12,b);

}

if(a==12)

{

printf("%d:

%d",a,b);

}

if(a<12)

{

printf("%d:

%dAM",a,b);

}

else

{

printf("PM",a,b);

}

return0;

}

 

给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。

输入格式:

输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x1、y1、x2、y2、x3、y3。

输出格式:

若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L=周长,A=面积”,输出到小数点后2位。

输入样例1:

456978

输出样例1:

L=10.13,A=3.00

输入样例2:

468121218

输出样例2:

Impossible

#include

intmain()

{

inta,b,c;

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

{

printf("YES");

}

else

{

printf("NO");

}

return0;

}

输入一个年份,判断其是否为闰年,若是闰年输出“yes”的信息,否则输出“no”的信息。

输入格式:

直接输入一个4位数年份,没有其它任何附加字符。

输出格式:

直接输出“yes”或“no”,没有其它任何附加字符。

输入样例:

1900输出样例:

no

输入样例:

2000输出样例:

yes

输入样例:

1904输出样例:

yes

 

#include

intmain()

{

inta;

scanf("%d",&a);

if(a%4==0&&a%100!

=0||a%400==0)

{

printf("yes\n");

}

else

{

printf("no\n");

}

return0;

}

输入三个整数x,y,z,请把这三个数由小到大输出。

输入格式:

在一行中直接输入3个整数,之间各用一个空格间隔。

输出格式:

在一行中按照“x=最小值,y=次小值,z=最大值”的顺序输出结果,最大值、次大值和最小值均原样输出,没有宽度控制。

输入样例:

213输出样例:

x=1,y=2,z=3

#include

intmain()

{

intx,y,z,temp;

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

if(x>y)

{

temp=x,x=y,y=temp;

}

if(x>z)

{

temp=x,x=z,z=temp;

}

if(y>z)

{

temp=y,y=z,z=temp;

}

printf("x=%d,y=%d,z=%d",x,y,z);

return0;

}

第5周

本题要求编写程序将一个百分制成绩转换为五分制成绩。

转换规则:

∙大于等于90分为A;

∙小于90且大于等于80为B;

∙小于80且大于等于70为C;

∙小于70且大于等于60为D;

∙小于60为E。

输入格式:

输入在一行中给出一个整数的百分制成绩。

输出格式:

在一行中输出对应的五分制成绩。

输入样例:

90输出样例:

A

#include

intmain()

{

inta,ch;

scanf("%d",&a);

if(a>90||a==90)

{

ch='A';

}

elseif(a>80||a==80)

{

ch='B';

}

elseif(a>70||a==70)

{

ch='C';

}

elseif(a>60||a==60)

{

ch='D';

}

else

{

ch='E';

}

printf("%c",ch);

return0;

}

中国有句俗语叫“三天打鱼两天晒网”。

假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?

输入格式:

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

输出格式:

在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“indayN”。

输入样例1:

103

输出样例1:

Fishinginday103

输入样例2:

34

输出样例2:

Dryinginday34

#include

intmain()

{

intN;

scanf("%d",&N);

if(N%5==4||N%5==0)

{

printf("Dryinginday%d",N);

}

else

{

printf("Fishinginday%d",N);

}

return0;

}

本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。

题目保证输入和输出均不超过整型范围。

输入格式:

输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。

操作数的数据类型为整型,且保证除法和求余的分母非零。

输出格式:

当运算符为+、-、*、/、%时,在一行输出相应的运算结果。

若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。

输入样例1:

-7/2输出样例1:

-3

输入样例2:

3&6输出样例2:

ERROR

#include

intmain()

{

intx,y;

charch;

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

switch(ch)

{

case'+':

printf("%d\n",x+y);

break;

case'-':

printf("%d\n",x-y);

break;

case'*':

printf("%d\n",x*y);

break;

case'/':

printf("%d\n",x/y);

break;

case'%':

printf("%d\n",x%y);

break;

default:

printf("ERROR\n");

break;

}

return0;

}

股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。

以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:

开盘价格Open(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格Close(下午收盘时最后一笔成交的价格)、中间的最高价High和最低价Low。

如果Close<<>>Open,表示为“R-Hollow”(即“空心红蜡烛”);如果Open等于Close,则为“R-Cross”(即“十字红蜡烛”)。

如果Low比Open和Close低,称为“LowerShadow”(即“有下影线”),如果High比Open和Close高,称为“UpperShadow”(即“有上影线”)。

请编程序,根据给定的四个价格组合,判断当日的蜡烛是一根什么样的蜡烛。

输入格式:

输入在一行中给出4个正实数,分别对应Open、High、Low、Close,其间以空格分隔。

输出格式:

在一行中输出日K蜡烛的类型。

如果有上、下影线,则在类型后加上with影线类型。

如果两种影线都有,则输出withLowerShadowandUpperShadow。

输入样例1:

5.1105.2505.1005.105

输出样例1:

BW-SolidwithLowerShadowandUpperShadow

输入样例2:

5.1105.1105.1105.110

输出样例2:

R-Cross

输入样例3:

5.1105.1255.1125.126

输出样例3:

R-Hollow

#include

#include

intmain()

{

doubleopen,high,low,close;

scanf("%lf%lf%lf%lf",&open,&high,&low,&close);

if(close

printf("BW-Solid");

elseif(close>open)

printf("R-Hollow");

elseif(fabs(close-open)==0)

printf("R-Cross");

if((lowopen&&high>close))

printf("withLowerShadowandUpperShadow\n");

elseif(low

printf("withLowerShadow\n");

elseif(high>open&&high>close)

printf("withUpperShadow\n");

return0;

}

本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:

输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。

注意:

闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。

闰年的2月有29天。

输出格式:

在一行输出日期是该年中的第几天。

输入样例1:

2009/03/02

输出样例1:

61

输入样例2:

2000/03/02

输出样例2:

62

#include

intmain()

{

intday,month,year;

scanf("%d/%d/%d",&year,&month,&day);

inti;

intsum;

sum=day;

for(i=1;i

{

switch(i)

{

case1:

sum+=31;break;

case3:

sum+=31;break;

case5:

sum+=31;break;

case7:

sum+=31;break;

case8:

sum+=31;break;

case10:

sum+=31;break;

case12:

sum+=31;break;

case4:

sum+=30;break;

case6:

sum+=30;break;

case9:

sum+=30;break;

case11:

sum+=30;break;

case2:

if((year%4==0&&year%100!

=0)||(year%400==0))

{

sum+=29;

}else

{

sum+=28;

}

}

}

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

return0;

}

第6周

三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。

找出这个不一样的球。

输入格式:

输入在一行中给出3个正整数,顺序对应球A、B、C的重量。

输出格式:

在一行中输出唯一的那个不一样的球。

输入样例:

112输出样例:

C

#include

intmain()

{

inta,b,c;

charch;

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

if(a==b)

{

ch='C';

}

elseif(a==c)

{

ch='B';

}

else

{

ch='A';

}

printf("%c\n",ch);

return0;

}

某公司员工的工资计算方法如下:

一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。

员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。

新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。

请按该计酬方式计算员工的工资。

输入格式:

输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。

输出格式:

在一行输出该员工的周薪,精确到小数点后2位。

输入样例1:

540输出样例1:

2000.00

输入样例2:

350输出样例2:

1650.00

#include

intmain()

{

inttime,year;

doublemoney;

scanf("%d%d",&year,&time);

if(year>=5)

{

if(time<=40)

{

money=time*50;

}

else

{

money=2000+(time-40)*50*1.5;

}

}

else

{

if(time<=40)

{

money=time*30;

}

else

{

money=1200+(time-40)*30*1.5;

}

}

printf("%.2lf\n",money);

return0;

}

输入三个实数,代表三条线段的长度。

判断这三条线段组成的三角形是什么类型:

等边(equilateraltriangle)、等腰(isoscelestriangle)、不等边(commontriangle)或不能构成三角形(notatriangle)。

输入格式:

输入三条线段的长度,输入保证所有数据均大于0。

输出格式:

输出三角形的类型:

等边(equilateraltriangle)、等腰(isoscelestriangle)、不等边(commontriangle)或不能构成三角形(notatriangle)。

输入样例:

333###输出样例:

equilateraltriangle

#include

intmain()

{

floata,b,c;

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

if(a+b<=c||a+c<=b||b+c<=a)

{

printf("notatriangle\n");

}

elseif(a==b&&b==c)

{

printf("equilateraltriangle\n");

}

elseif(a==b||b==c||a==c)

{

printf("isoscelestriangle\n");

}

else

{

printf("commontriangle\n");

}

return0;

}

有一分段函数如下:

根据输入的x值,计算对应的y值。

输入格式:

输入x。

输出格式:

输出y的值,保留两位小数。

#include

#include

intmain()

{

doublex,y;

scanf("%lf",&x);

if(x<-1)

{

y=pow(x,3)-1;

}

if(x>=-1&&x<=1)

{

y=-3*x+1;

}

if(x>1&&x<=10)

{

y=3*exp(2*x-1)+5;

}

if(x>10)

{

y=5*x+3*log10(2*x*x-1)-13;

}

printf("%.2f",y);

return0;

}

第7周

本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入格式:

输入为10个字符。

最后一个回车表示输入结束,不算在内。

输出格式:

在一行内按照letter=英文字母个数,blank=空格或回车个数,digit=数字字符个数,other=其他字符个数的格式输出。

输入样例:

aZ&

09Az输出样例:

letter=4,blank=3,digit=2,other=1

#include

intmain()

{

intl=0,b=0,d=0,o=0,i=1;

charch;

scanf("%c",&ch);

while(i<=10)

{

if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')

{

l++;

}

elseif(ch>='0'&&ch<='9')

{

d++;

}

elseif(ch==''||ch=='\n')

{

b++;

}

else

{

o++;

}

scanf("%c",&ch);

i++;

}

printf("letter=%d,blank=%d,digit=%d,other=%d",l,b,d,o);

return0;

}

本题要求编写程序,找出给定一系列整数中的最小值。

输入格式:

输入在一行中首先给出一个正整数nnn,之后是nnn个整数,其间以空格分隔。

输出格式:

在一行中按照“min=最小值”的格式输出nnn个整数中的最小值。

输入样例:

4-2-1231000

输出样例:

min=-123

#include

intmain()

{

intn,x,y,i=1,min;

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

min=x;

while(i

{

scanf("%d",&y);

if(min>y)

{

min=y;

}

else

{

min=min;

}

i++;

}

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

return0;

}

本题要求计算给定的一系列正整数中奇数的和。

输入格式:

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

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

输出格式:

在一行中输出正整数序列中奇数的和。

输入样例:

87437056101-1

输出样例:

116

#include

intmain()

{

intn,sum=0;

scanf("%d",&n);

while(n>0)

{

if(n%2==0)

{

sum=sum;

}

else

{

sum=sum+n;

}

scanf("%d",&n);

}

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

return0;

}

输入若干学生成绩,以负数结束输入。

计算所有学生的平均成绩并统计成绩在80到90分(不含90)之间的人数。

输入格式:

在一行输入几个百分制实型成绩,数据之间以一个空格间隔。

输入负数结束输入。

输出格式:

在一行中按照“ave=平均分,n=人数”的顺序输出结果,其中平均分要求保留两位小数,人数是正整数。

输入样例:

58898455-1输出样例:

ave=71.50,n=2

#include

intmain()

{

intx,n=0,sum=0,i=0;

scanf("%d",&x);

while(x>=0)

{

i++;

if(x>=80&&x<90)

{

n=n+1;

}

sum=sum+x;

scanf("%d",&x);

}

printf("ave=%.2f,n=%d\n",sum*1.0/i,n);

return0;

}

对于给定的正整数N,求它的位数及其各位数字之和。

输入格式:

输入在一行中给出一个不超过10910^910​9​​的正整数N。

输出格式:

在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。

输入样例:

321输出样例:

36

#include

intmain()

{

intn,x,i=0,sum=0;

scanf("%d",&n);

while(n!

=0)

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

当前位置:首页 > 小学教育 > 语文

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

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