TPA部分试题.docx
- 文档编号:8509888
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:48
- 大小:72.40KB
TPA部分试题.docx
《TPA部分试题.docx》由会员分享,可在线阅读,更多相关《TPA部分试题.docx(48页珍藏版)》请在冰豆网上搜索。
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<<
如果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((low 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^9109的正整数N。 输出格式: 在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。 输入样例: 321输出样例: 36 #include intmain() { intn,x,i=0,sum=0; scanf("%d",&n); while(n! =0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TPA 部分 试题
![提示](https://static.bdocx.com/images/bang_tan.gif)