PTA 程序设计天梯赛(81~100题)

Posted 王睿丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PTA 程序设计天梯赛(81~100题)相关的知识,希望对你有一定的参考价值。


创作不易,有用请点个赞,感谢各位!

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

7-7 找最小的字符串 (15 分)

#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

7-1 字符串的冒泡排序 (20 分)

#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

7-2 组织星期信息 (10 分)

#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

PTA 程序设计天梯赛(61~80题)

PTA 程序设计天梯赛(141~160题)

PTA 程序设计天梯赛(1~20题)

PTA 程序设计天梯赛(101~120题)

PTA 程序设计天梯赛(41~60题)