PTA 程序设计天梯赛(81~100题)
Posted 王睿丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PTA 程序设计天梯赛(81~100题)相关的知识,希望对你有一定的参考价值。
文章目录
- 81、Programming in C is fun! (5 分)
- 82、出租车计价 (15 分)
- 83、求幂级数展开的部分和 (20 分)
- 84、 What is a computer? (5 分)
- 85、将x的平方赋值给y (5 分)
- 86、 计算火车运行时间 (15 分)
- 87、计算工资 (15 分)
- 88、 日K蜡烛图 (15 分)
- 89、 到底是不是太胖了 (10 分)
- 90、找最小的字符串 (15 分)
- 91、 字符串的冒泡排序 (20 分)
- 92、组织星期信息 (10 分)
- 93、 奇偶分家 (10 分)
- 94、 海盗分赃 (25 分)
- 95、 超速判断 (10 分)
- 96、 jmu-ds-顺序表区间元素删除 (15 分)
- 97、查找指定字符 (15 分)
- 98、复数四则运算 (15 分)
- 99、 输出三角形字符阵列 (15 分)
- 100、找最长的字符串 (15 分)
创作不易,有用请点个赞,感谢各位!
81、Programming in C is fun! (5 分)
本题要求编写程序,输出一个短句“Programming in C is fun!”。
输入格式:
本题目没有输入。
输出格式:
在一行中输出短句“Programming in C is fun!”。
#include<stdio.h>
int main(void)
{
printf("Programming in C is fun!\\n");
}
82、出租车计价 (15 分)
7-3 出租车计价 (15 分)
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例1:
2.6 2
输出样例1:
10
输入样例2:
5.1 4
输出样例2:
14
输入样例3:
12.5 9
输出样例3:
34
#include<stdio.h>
int main()
{
double km; //公里
int m=0; //分钟
double money=0; //钱
int yu;
scanf("%lf %d",&km,&m);
if(m<5) // <5分钟的情况
{
if(km<=3) //0~3公里
money=10;
else if(km<=10) //3~10公里
money=10+(km-3)*2;
else //10以上公里
money=10+7*2+(km-10)*3;
}
else
{
if(km<=3) //0~3公里
money=10+(m/5)*2;
else if(km<=10) //3~10公里
money=10+(km-3)*2+(m/5)*2;
else //10以上公里
money=10+7*2+(km-10)*3+(m/5)*2;
}
printf("%1.lf\\n",money);
return 0;
}
83、求幂级数展开的部分和 (20 分)
已知函数e
x
可以展开为幂级数1+x+x
2
/2!+x
3
/3!+⋯+x
k
/k!+⋯。现给定一个实数x,要求利用此幂级数部分和求e
x
的近似值,求和一直继续到最后一项的绝对值小于0.00001。
输入格式:
输入在一行中给出一个实数x∈[0,5]。
输出格式:
在一行中输出满足条件的幂级数部分和,保留小数点后四位。
输入样例:
1.2
输出样例:
3.3201
#include<stdio.h>
#include<math.h>
double jiecheng(double n);
int main()
{
double x; //输入一个实数
double n=0; //下面我会给出一个推导公式,你就懂了兄弟
double c=0; //表示次方
double sum=0; //求总和
double result; //最后一项的绝对值
scanf("%lf",&x);
/* 题目公式: 【1】 + 【x】 +【x^2/2!】+【x^3/3!】+【x^n/n!】 */
/* 上下中括号都有各5个,然而这5个其实都是对等的!不信你们就在本子上算呀^_^哈哈! */
/* 推到公式: 【x^0/0!】+【x^1/1!】+【x^2/2!】+【x^3+3!】+【x^n/n!】 */
do
{
result=pow(x,c)/(jiecheng(n));
sum+=result;
n++;
c++;
}while((jiecheng(n))>=0.00001);
result=pow(x,c)/(jiecheng(n));
sum+=result;
printf("%.4f\\n",sum);
return 0;
}
double jiecheng(double n)
{
int mix=1;
for(int i=1;i<=n;i++)
mix=mix*i;
return mix;
}
84、 What is a computer? (5 分)
本题要求编写程序,输出一个短句“What is a computer?”。
输入格式:
本题目没有输入。
输出格式:
在一行中输出短句“What is a computer?”。
#include<stdio.h>
int main()
{
printf("What is a computer?");
return 0;
}
85、将x的平方赋值给y (5 分)
假设x的值为3,计算x的平方并赋值给y,分别以“y = x ∗ x”和“x ∗ x = y”的形式输出x和y的值。
输入格式:
本题无输入
输出格式:
按照下列格式输出代入x=3的结果:
y = x * x
x * x = y
#include<stdio.h>
int main()
{
int x=3;
int y;
printf("%d = %d * %d\\n%d * %d = %d\\n",x*x,x,x,x,x,x*x);
return 0;
}
86、 计算火车运行时间 (15 分)
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:
1201 1530
输出样例:
03:29
#include <stdio.h>
#include <stdlib.h>
int main()
{
int h; //小时
int m; //分钟
int num1; //出发时间
int num2; //到达时间
scanf("%d%d",&num1,&num2);
h=num2/100-num1/100; //4位整型取前2位(小时)
m=num2%100-num1%100; //4位整型取余后2位(分钟)
if(m<0) //num1,num2都是在同一天,h一定大于0
{
m=60+m; //当m小于0,从h借来一小时,填补m的值
h=h-1;
}
printf("%02d:%02d\\n",h,m);
return 0;
}
87、计算工资 (15 分)
某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。
输入格式:
输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。
输出格式:
在一行输出该员工的周薪,精确到小数点后2位。
输入样例1:
5 40
输出样例1:
2000.00
输入样例2:
3 50
输出样例2:
1650.00
#include<stdio.h>
int main()
{
int year; //工作年份
int h; //小时
double money;
scanf("%d %d",&year,&h); //输入功能
if(year<5) //新员工情况
{
if(h<=40) //正常工作的情况
money=h*30;
else //加班的情况
money=40*30+(h-40)*1.5*30;
}
else //老员工的情况
{
if(h<=40) //正常工作的情况
money=h*50;
else //加班的情况
money=40*50+(h-40)*1.5*50;
}
printf("%.2lf\\n",money);
return 0;
}
88、 日K蜡烛图 (15 分)
股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开盘价格Open(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格Close(下午收盘时最后一笔成交的价格)、中间的最高价High和最低价Low。
如果Close<Open,表示为“BW-Solid”(即“实心蓝白蜡烛”);如果Close>Open,表示为“R-Hollow”(即“空心红蜡烛”);如果Open等于Close,则为“R-Cross”(即“十字红蜡烛”)。如果Low比Open和Close低,称为“Lower Shadow”(即“有下影线”),如果High比Open和Close高,称为“Upper Shadow”(即“有上影线”)。请编程序,根据给定的四个价格组合,判断当日的蜡烛是一根什么样的蜡烛。
输入格式:
输入在一行中给出4个正实数,分别对应Open、High、Low、Close,其间以空格分隔。
输出格式:
在一行中输出日K蜡烛的类型。如果有上、下影线,则在类型后加上with 影线类型。如果两种影线都有,则输出with Lower Shadow and Upper Shadow。
输入样例1:
5.110 5.250 5.100 5.105
输出样例1:
BW-Solid with Lower Shadow and Upper Shadow
输入样例2:
5.110 5.110 5.110 5.110
输出样例2:
R-Cross
输入样例3:
5.110 5.125 5.112 5.126
输出样例3:
R-Hollow
#include<stdio.h>
int main()
{
double o; //Open
double h; //High
double l; //Low
double c; //Close
scanf("%lf%lf%lf%lf",&o,&h,&l,&c);
if(c<o)
{
printf("BW-Solid");
if(l<o && l<c && h>o && h>c)
printf(" with Lower Shadow and Upper Shadow");
else if(l<o && l<c)
printf(" with Lower Shadow");
else if(h>o && h>c)
printf(" with Upper Shadow");
}
else if(c>o)
{
printf("R-Hollow");
if(l<o && l<c && h>o && h>c)
printf(" with Lower Shadow and Upper Shadow");
else if(l<o && l<c)
printf(" with Lower Shadow");
else if(h>o && h>c)
printf(" with Upper Shadow");
}
else if(c==o)
{
printf("R-Cross");
if(l<o && l<c && h>o && h>c)
printf(" with Lower Shadow and Upper Shadow");
else if(l<o && l<c)
printf(" with Lower Shadow");
else if(h>o && h>c)
printf(" with Upper Shadow");
}
return 0;
}
89、 到底是不是太胖了 (10 分)
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。
输入格式:
输入第一行给出一个正整数N(≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W ≤ 300;单位:市斤),其间以空格分隔。
输出格式:
为每个人输出一行结论:如果是完美身材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!。
输入样例:
3
169 136
150 81
178 155
输出样例:
You are wan mei!
You are tai shou le!
You are tai pang le!
#include<stdio.h>
#include<math.h>
int main()
{
int n; //输入正整数
int h; //身高
int w; //真实体重
int x; //标准体重
/* 标准体重(市斤) =(身高-100)*0.9*0.2 */
scanf("%d",&n);
if(n<1 || n>20) return 0; //n<=20
for(int i=1;i<=n;i++)
{
scanf("%d %d",&h,&w);
if(h<120 || h>=200 || w<50 || w>300) return 0; // 120 < H < 200 和 50 < W ≤ 300
x = (h-100)*0.9*2;
if(fabs(w-x) < x*0.1)
printf("You are wan mei!\\n");
else if((fabs(w-x) >= x*0.1) && w<x)
printf("You are tai shou le!\\n");
else if((fabs(w-x) >= x*0.1) && w>x)
printf("You are tai pang le!\\n");
}
return 0;
}
90、找最小的字符串 (15 分)
本题要求编写程序,针对输入的N个字符串,输出其中最小的字符串。
输入格式:
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。
输出格式:
在一行中用以下格式输出最小的字符串:
Min is: 最小字符串
输入样例:
5
Li
Wang
Zha
Jin
Xian
输出样例:
Min is: Jin
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char a[10000][80];
int n;
int i,j;
int min;
char temp[80];
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
gets(a[i]);
for(i=0;i<n-1;i++)
{
min=i;
for(j=i+1;j<n;j++)
if(strcmp(a[min],a[j])>0)
min=j;
if(min!=i)
{
strcpy(temp,a[min]);
strcpy(a[min],a[i]);
strcpy(a[i],temp);
}
}
printf("Min is: %s",a[0]);
return 0;
}
91、 字符串的冒泡排序 (20 分)
我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。
输入格式:
输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。
输出格式:
输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。
输入样例:
6 2
best
cat
east
a
free
day
输出样例:
best
a
cat
day
east
free
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int n,k; //n→有几个字符串,k→扫描几次
int i,j; //用于循环和数组下标
char a[100][11]; //用于存储字符串
char temp[11];
scanf("%d%d",&n,&k); //提供输入n、k的功能
getchar();
for(i=0;i<n;i++) //提供输入字符串的功能
scanf("%s",a[i]);
for(i=0;i<k;i++)
{
for(j=0;j<n-1-i;j++)
{
if(strcmp(a[j],a[j+1])>0)
{
strcpy(temp,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],temp);
}
}
}
for(i=0;i<n;i++)
printf("%s\\n",a[i]);
return 0;
}
92、组织星期信息 (10 分)
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
定义一个指针数组将下面的星期信息组织起来,输入一个字符串,在表中查找,若存在,输出该字符串在表中的序号,否则输出-1。
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
输入输出示例:括号内为说明,无需输入输出
输入样例 (repeat=3) :
3
Tuesday
Wednesday
year
输出样例:
3
4
-1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *p[] ={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday",题解PTA团体程序设计天梯赛L1-014 简单题 (5 分) Go语言|Golang