PTA 程序设计天梯赛(21~40题)

article/2025/5/22 23:20:35

文章目录

    • 21、正整数A+B (15 分)
    • 22、I Love GPLT (5 分)
    • 23、出租 (20 分)
    • 24、 是不是太胖了 (5 分)
    • 25、一帮一 (15 分)
    • 26、 到底是不是太胖了 (10 分)
    • 27、Left-pad (20 分)
    • 28、 出生年 (15 分)
    • 29、 点赞 (20 分)
    • 30、 情人节 (15 分)
    • 31、 A乘以B (5 分)
    • 32、A除以B (10 分)
    • 33、 新世界 (5 分)
    • 34、古风排版 (20 分)
    • 35、 最佳情侣身高差 (10 分)
    • 36、 寻找250 (10 分)
    • 37、 日期格式化 (5 分)
    • 38、 阅览室 (20 分)
    • 39、 稳赢 (15 分)
    • 40、 宇宙无敌大招呼 (5 分)

制作不易,喜欢请点个赞,我是王睿,很高兴认识大家!

21、正整数A+B (15 分)

L1-025 正整数A+B (15 分)
题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。

输入格式:
输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。

注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。

输出格式:
如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入不合要求,则在相应位置输出?,显然此时和也是?。

输入样例1:
123 456
输出样例1:
123 + 456 = 579
输入样例2:
22. 18
输出样例2:
? + 18 = ?
输入样例3:
-100 blabla bla…33
输出样例3:
? + ? = ?

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {static String a,b;public static void main(String[] args) {Scanner scan = new Scanner(System.in);a = scan.next();b = scan.next();boolean a1 = isNumeric(a);boolean a2 = isNumeric(b);if(a1&&a2) {			//如果都是数字int number1 = Integer.valueOf(a);int number2 = Integer.valueOf(b);System.out.println(number1 + " + " + number2 + " = " + (number1+number2));}else if(a1==true&&a2==false){		//a是数字b不是int number1 = Integer.valueOf(a);System.out.println(number1 + " + " + "?" + " = " + "?");}else if(a1==false&&a2==true) {		//b是数字a不是int number1 = Integer.valueOf(b);System.out.println("?" + " + " + number1 + " = " + "?");}else {								//都不是System.out.println("?" + " + " + "?" + " = " + "?");}}public static boolean isNumeric(String str ){		//判断是不是数字Pattern pattern = Pattern.compile("[0-9]*");Matcher isNum = pattern.matcher(str);if( !isNum.matches() ){return false;}return true;}
}

22、I Love GPLT (5 分)

L1-026 I Love GPLT (5 分)
这道超级简单的题目没有任何输入。

你只需要把这句很重要的话 —— “I Love GPLT”——竖着输出就可以了。

所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车。

输入样例:

输出样例:
I

L
o
v
e

G
P
L
T
注意:输出的两个空行中各有一个空格。

#include<stdio.h>
#include<string.h>
int main()
{char a[]="I Love GPLT";int m=strlen(a);for(int i=0;i<m;i++)printf("%c\n",a[i]);
}

23、出租 (20 分)

L1-027 出租 (20 分)
下面是新浪微博上曾经很火的一张图:

在这里插入图片描述

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对应 arr[0]=8,index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100。

本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。

输入格式:
输入在一行中给出一个由11位数字组成的手机号码。

输出格式:
为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。

输入样例:
18013820100
输出样例:
int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);ArrayList<Integer> alist = new ArrayList<Integer>();String s = sc.nextLine();//获取电话号码//将电话号码存放到alist数组中for (int i = 0; i < s.length(); i++) {if (!alist.contains(Integer.valueOf(s.charAt(i) + ""))) {alist.add(Integer.valueOf(s.charAt(i) + ""));}}//排序(从小到大)Collections.sort(alist);//逆序Collections.reverse(alist);System.out.print("int[] arr = new int[]{");//输出for (int i = 0; i < alist.size(); i++) {if (i == 0) {System.out.print(alist.get(i));} else {System.out.print("," + alist.get(i));}}System.out.println("};");System.out.print("int[] index = new int[]{");//输出电话号顺序的下标for (int i = 0; i < s.length(); i++) {if (i == 0) {System.out.print(alist.indexOf(Integer.valueOf(s.charAt(i) + "")));} else {System.out.print("," + alist.indexOf(Integer.valueOf(s.charAt(i) + "")));}}System.out.println("};");}
}

24、 是不是太胖了 (5 分)

L1-029 是不是太胖了 (5 分)
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤是公斤的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)

输入格式:
输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。

输出格式:
在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。

输入样例:
169
输出样例:
124.2

#include <stdio.h>
int main()
{float H;		//输入一个正整数表示某人身高scanf("%f",&H);if(H<=100 || H>300)		return 0;//根据公式:(公斤)标准体重=身高-100*0.9//1市斤=2公斤	【2倍关系】printf("%.1f\n",((H-100)*0.9)*2);		//题目要求结果保留一位小数return 0;
}

25、一帮一 (15 分)

L1-030 一帮一 (15 分)
“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。

输入格式:
输入第一行给出正偶数N(≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。

输出格式:
每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。

输入样例:
8
0 Amy
1 Tom
1 Bill
0 Cindy
0 Maya
1 John
1 Jack
0 Linda
输出样例:
Amy Jack
Tom Linda
Bill Maya
Cindy John

#include<stdio.h>
int main()
{int N;				//表示全班总人数int sex[50];		//性别char name[50][15];	//姓名int i,j,k;			//用于循环scanf("%d",&N);if(N<=0 || N>50 ||N%2!=0)	return 0;	//正偶数,在1~50之间for(i=0;i<N;i++)scanf("%d %s",&sex[i],&name[i][0]);for(i=0;i<N/2;i++)		//控制行数,因为一共8人,所以最多4行{for(j=i;j==i;j++)	//控制从高名次开始往下查找,以高名次{for(k=N-1;k>=N/2;k--)	//控制从低往高查找,因为一共8人,所以下面最多4个与上面4个对应,只用循环4次即可{if(sex[j]!=sex[k]&&sex[j]<=1&&sex[k]<=1){sex[j]=10;		//因为男生是1,女生是0,这里随便配上一个数10以后,搭配上面的逻辑判断就能排除掉已经选中人sex[k]=10;		//因为男生是1,女生是0,这里随便配上一个数10以后,搭配上面的逻辑判断就能排除掉已经选中人printf("%s %s\n",name[i],name[k]);break;}}}}
}

26、 到底是不是太胖了 (10 分)

L1-031 到底是不是太胖了 (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;				//有几个人float height;		//身高float weight;		//真实体重float biao;			//标准体重int i;				//用于循环和数组下标scanf("%d",&n);for(i=0;i<n;i++){scanf("%f %f",&height,&weight);biao = (height-100)*0.9*2;	//得到标准体重,单位市斤if(fabs(weight-biao)<biao*0.1)printf("You are wan mei!\n");else if(biao>weight)printf("You are tai shou le!\n");elseprintf("You are tai pang le!\n");}return 0;
}

27、Left-pad (20 分)

L1-032 Left-pad (20 分)
根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个什么样的模块?就是在字符串前填充一些东西到一定的长度。例如用去填充字符串GPLT,使之长度为10,调用left-pad的结果就应该是*****GPLT。Node社区曾经对left-pad紧急发布了一个替代,被严重吐槽。下面就请你来实现一下这个模块。

输入格式:
输入在第一行给出一个正整数N(≤10
​4
​​ )和一个字符,分别是填充结果字符串的长度和用于填充的字符,中间以1个空格分开。第二行给出原始的非空字符串,以回车结束。

输出格式:
在一行中输出结果字符串。

输入样例1:
15 _
I love GPLT
输出样例1:
____I love GPLT
输入样例2:
4 *
this is a sample for cut
输出样例2:
cut

#include<stdio.h>
#include<string.h>
int main()
{int  i;				//用于循环和数组下标int  n;				//填充字符串的长度char c;				//填充字符串的字符char a[60000];		//申请字符串输入空间int lenght;			//字符串的长度scanf("%d %c",&n,&c);getchar();gets(a);lenght=strlen(a);	//计算字符串的长度if(lenght<n)		//当输入的字符串<填充字符串长度时{for(i=0;i<n-lenght;i++)printf("%c",c);puts(a);}else				//否则{for(i=lenght-n;i<lenght;i++)printf("%c",a[i]);}return 0;
}

28、 出生年 (15 分)

L1-033 出生年 (15 分)
在这里插入图片描述

以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。

输入格式:
输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。

输出格式:
根据输入,输出x和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n个数字都不相同”是指不同的数字正好是n个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。

输入样例1:
1988 4
输出样例1:
25 2013
输入样例2:
1 2
输出样例2:
0 0001

#include<stdio.h>
#include<string.h>
int main(){int cnt=0,same=0;int a[10];//memset(a,0,sizeof(a));int year,t,d;int i;scanf("%d%d",&year,&d);t=year;while(1){memset(a,0,sizeof(a));for(i=0;i<4;i++){a[t%10] = 1;t/=10;}same=0;for(i=0;i<10;i++) same+=a[i];if(same==d) break;cnt++;year++;t=year;}printf("%d %04d",cnt,year);return 0;
}

29、 点赞 (20 分)

L1-034 点赞 (20 分)
微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本题就要求你写个程序,通过统计一个人点赞的纪录,分析这个人的特性。

输入格式:
输入在第一行给出一个正整数N(≤1000),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为“K F
​1
​​ ⋯F
​K
​​ ”,其中1≤K≤10,F
​i
​​ (i=1,⋯,K)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。

输出格式:
统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。

输入样例:
4
3 889 233 2
5 100 3 233 2 73
4 3 73 889 2
2 233 123
输出样例:
233 3

#include<stdio.h>
#define N 1001
int main()
{	int n;					//点赞数量int i,j;				//用于循环和数组下标int k;					//表示要几个特性标签int app[N]={0};			//存储标签编号int id;					//id编号int index1=0;			//标记最多出现次数int index2=0;			//标记最多出现的这个数scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&k);for(j=0;j<k;j++){scanf("%d",&id);app[id]++;		//这里就相当于a[3]++一个道理,也就是每输入进来一个值,//对应那个坐标就自增1}}for(i=0;i<N;i++)		//根据for循环,从最小的编号开始进行查验{if(app[i]>=index1)	//当a[i]里面保存的值大于之前标记的最大次数时,{					//那么index1就应该要标记住新出现的次数index1=app[i];	//因为循环是从小到大进行,所以若后面有正好相等并且IDindex2=i;		//编号还比前面大的情况下,也会执行if语句}					//这样就避免了同等次数下,比较编号大小的问题^_^}printf("%d %d\n",index2,index1);return 0;
}

30、 情人节 (15 分)

L1-035 情人节 (15 分)
在这里插入图片描述

以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。

输入格式:
输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过10个英文字母的非空单词,以回车结束。一个英文句点.标志输入的结束,这个符号不算在点赞名单里。

输出格式:
根据点赞情况在一行中输出结论:若存在第2个人A和第14个人B,则输出“A and B are inviting you to dinner…”;若只有A没有B,则输出“A is the only one for you…”;若连A都没有,则输出“Momo… No one is for you …”。

输入样例1:
GaoXZh
Magi
Einst
Quark
LaoLao
FatMouse
ZhaShen
fantacy
latesum
SenSen
QuanQuan
whatever
whenever
Potaty
hahaha
.
输出样例1:
Magi and Potaty are inviting you to dinner…
输入样例2:
LaoLao
FatMouse
whoever
.
输出样例2:
FatMouse is the only one for you…
输入样例3:
LaoLao
.
输出样例3:
Momo… No one is for you …

#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{char str1[10010][11];	//字符串保存空间int i;					//用于循环和数组下标int n=0;				//决定输出结果,根据朋友名单分三种情况int t;			for(i=0;i<1000;i++){gets(str1[i]);if(strcmp(str1[i],".")==0)	//“.”代表输入结束,利用字符串比较函数{	t=i;break;	}n++;				//每有一个朋友,n就自增一次,利用n来作为输出结果的标准}if(n>=14)printf("%s and %s are inviting you to dinner...\n",str1[1],str1[13]);else if(n<2)printf("Momo... No one is for you ...\n");else if(n<14 && n>=2)printf("%s is the only one for you...\n",str1[1]);return 0;
}

31、 A乘以B (5 分)

L1-036 A乘以B (5 分)
看我没骗你吧 —— 这是一道你可以在 10 秒内完成的题:给定两个绝对值不超过 100 的整数 A 和 B,输出 A 乘以 B 的值。

输入格式:
输入在第一行给出两个整数 A 和 B(−100≤A,B≤100),数字间以空格分隔。

输出格式:
在一行中输出 A 乘以 B 的值。

输入样例:
-8 13
输出样例:
-104

#include<stdio.h>
int main()
{int A,B;scanf("%d %d",&A,&B);if(A<-100 || A>100 || B<-100 || B>100)	return 0;printf("%d\n",A*B);return 0;
}

32、A除以B (10 分)

真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。

输入格式:
输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。

输出格式:
在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error。输出的商应保留小数点后2位。

输入样例1:
-1 2
输出样例1:
-1/2=-0.50
输入样例2:
1 -3
输出样例2:
1/(-3)=-0.33
输入样例3:
5 0
输出样例3:
5/0=Error

#include<stdio.h>
int main()
{int a,b;float s;scanf("%d%d",&a,&b);s=1.0*a/b;			//像这种求商并且保留两位小数的计算,最好是通过用if(b>0)				//*0.1的方式来转换为保留两位小数,因为这样不会影响到其值printf("%d/%d=%.2f",a,b,s);	//如果一开始都设为double可能会在保留时对于四舍五入处理不恰当if(b==0)printf("%d/%d=Error",a,b);if(b<0)printf("%d/(%d)=%.2f",a,b,s);return 0;
}

33、 新世界 (5 分)

L1-038 新世界 (5 分)
这道超级简单的题目没有任何输入。

你只需要在第一行中输出程序员钦定名言“Hello World”,并且在第二行中输出更新版的“Hello New World”就可以了。

输入样例:

输出样例:
Hello World
Hello New World

#include<stdio.h>
int main()
{printf("Hello World\n");printf("Hello New World\n");return 0;
}

34、古风排版 (20 分)

L1-039 古风排版 (20 分)
中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

输入格式:
输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。

输出格式:
按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。

输入样例:
4
This is a test case
输出样例:
asa T
st ih
e tsi
ce s

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{int i,j,n;scanf("%d",&n);char s[10010];getchar();gets(s);int t = strlen(s);int k = t/n;if(t%n!=0)k++; for(i=0;i<n;i++){for(j=n*k-n+i; j>=0;j=j-n){printf("%c",s[j]);}printf("\n");}return 0;
}

35、 最佳情侣身高差 (10 分)

L1-040 最佳情侣身高差 (10 分)
专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。

下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。

输入格式:
输入第一行给出正整数N(≤10),为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。

输出格式:
对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。

输入样例:
2
M 1.75
F 1.8
输出样例:
1.61
1.96

#include<stdio.h>
int main()
{int N;				char sex[10];		float	height[10];	int i;			scanf("%d",&N);if(N<1 || N>10)	return 0;for(i=0;i<N;i++)scanf("%s%f",&sex[i],&height[i]);for(i=0;i<N;i++){if(sex[i] == 'M')printf("%.2f\n",height[i]/1.09);elseprintf("%.2f\n",height[i]*1.09);}return 0;
}

36、 寻找250 (10 分)

L1-041 寻找250 (10 分)

在这里插入图片描述
对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。

输入格式:
输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。

输出格式:
在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。

输入样例:
888 666 123 -233 250 13 250 -222
输出样例:
5

#include<stdio.h>
int main()
{int i;			int a[10000];	for(i=0;i<10000;i++){scanf("%d",&a[i]);if(a[i]==250){printf("%d\n",i+1);break;}}return 0;
}

37、 日期格式化 (5 分)

L1-042 日期格式化 (5 分)
世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。

输入格式:
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。

输出格式:
在一行中按照“yyyy-mm-dd”的格式给出年、月、日。

输入样例:
03-15-2017
输出样例:
2017-03-15

#include<stdio.h>
int main()
{int month;	int day;	int year;	scanf("%d-%d-%d",&month,&day,&year);if(year>=1900)printf("%d-%02d-%02d\n",year,month,day);return 0;
}

38、 阅览室 (20 分)

L1-043 阅览室 (20 分)
天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。

注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。

输入格式:
输入在第一行给出一个正整数N(≤10),随后给出N天的纪录。每天的纪录由若干次借阅操作组成,每次操作占一行,格式为:

书号([1, 1000]内的整数) 键值(S或E) 发生时间(hh:mm,其中hh是[0,23]内的整数,mm是[0, 59]内整数)

每一天的纪录保证按时间递增的顺序给出。

输出格式:
对每天的纪录,在一行中输出当天的读者借书次数和平均阅读时间(以分钟为单位的精确到个位的整数时间)。

输入样例:
3
1 S 08:10
2 S 08:35
1 E 10:00
2 E 13:16
0 S 17:00
0 S 17:00
3 E 08:10
1 S 08:20
2 S 09:00
1 E 09:20
0 E 17:00
输出样例:
2 196
0 0
1 60

#include <stdio.h>int main()
{int N;scanf("%d", &N);while (N--) {int id;int books[1001][2] = {0};char key;int hh, mm; while (scanf("%d %c %d:%d", &id, &key, &hh, &mm) && id) {// 如果是借 if (key == 'S') {books[id][0] = -1;              // 设置借的标志 books[id][1] = hh * 60 + mm;    // 计算时间,分钟 } else if (books[id][0] == -1) {// 是还书, 且之前有借的记录// 完整借书次数加 1 books[0][0]++;// 计算借书的时间 int total = hh * 60 + mm - books[id][1];// 加入总借阅时间 books[0][1] += total;       // 还原书的借阅标志,允许下次再借 books[id][0]++;} // if-else} // while id != 0int ave_m = 0;if (books[0][0] > 0) {double m = books[0][1] * 1.0 / books[0][0];// 四舍五入,小心入坑 ave_m = (int)(m + 0.5);}printf("%d %d\n", books[0][0], ave_m);} // while (N-- > 0)return 0;}

39、 稳赢 (15 分)

L1-044 稳赢 (15 分)
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

在这里插入图片描述

现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。

输入格式:
输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi代表“锤子”、JianDao代表“剪刀”、Bu代表“布”。End代表输入结束,这一行不要作为出招处理。

输出格式:
对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。

输入样例:
2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End
输出样例:
Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu

#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{int i;			//用于循环int k;			//表示平局的间隔次数int index;		//标记平局次数char name[20];	//输入出招名字scanf("%d",&k);index=k;		//标记住间隔次数while(1){scanf("%s",name);if(strcmp(name,"End")==0)break;else{if(index==0){if(strcmp(name,"ChuiZi")==0)printf("ChuiZi\n");if(strcmp(name,"JianDao")==0)printf("JianDao\n");if(strcmp(name,"Bu")==0)printf("Bu\n");index = k;}else{if(strcmp(name,"ChuiZi")==0)printf("Bu\n");if(strcmp(name,"JianDao")==0)printf("ChuiZi\n");if(strcmp(name,"Bu")==0)printf("JianDao\n");index--;			//每赢一次,间隔次数就少了1,当=0时,要平局}}}return 0;
}

40、 宇宙无敌大招呼 (5 分)

L1-045 宇宙无敌大招呼 (5 分)
据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼。作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼。

输入格式:
输入在第一行给出一个星球的名字S,是一个由不超过7个英文字母组成的单词,以回车结束。

输出格式:
在一行中输出Hello S,跟输入的S星球打个招呼。

输入样例:
Mars
输出样例:
Hello Mars

#include<stdio.h>
int main(void)
{char s[8];gets(s);printf("Hello ");puts(s);
}

制作不易,喜欢请点个赞,我是王睿,很高兴认识大家!


http://chatgpt.dhexx.cn/article/QQY2FDVR.shtml

相关文章

2022年团体程序设计天梯赛

文章目录 L1-1 今天我要赢L1-2 种钻石L1-3 谁能进图书馆L1-4 拯救外星人L1-5 试试手气L1-6 斯德哥尔摩火车上的题L1-7 机工士姆斯塔迪奥L1-8 静静的推荐L2-1 插松枝L2-2 老板的作息表L2-3 龙龙送外卖L2-4 大众情人 L1-1 今天我要赢 2018 年我们曾经出过一题&#xff0c;是输出…

团体程序设计天梯赛-L1练习集

目录 L1-002 打印沙漏 (20 分) 输入格式: 输出格式: 输入样例: 输出样例: L1-006 连续因子 (20 分) 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; L1-009 N个数求和 (20 分) 输入格式&#xff1a; 输出格式&#xff1a;…

2021团体程序设计天梯赛-太原理工成绩大跃进

在2021年4月24日举行的2021年团体程序设计天梯赛上&#xff0c;太原理工大学5个队50名队员参加“珠峰争鼎”组比赛。一个队获得全国团体三等奖&#xff08;如果参加“华山论剑”组&#xff0c;成绩是全国第13名&#xff09;&#xff0c;同时获得山西省高校特等奖。 全国个人奖…

2022团体程序设计天梯赛

原创不易&#xff0c;未经允许&#xff0c;请勿转载。 文章目录 L1-1 今天我要赢L1-2 种钻石L1-3 谁能进图书馆L1-4 拯救外星人L1-5 试试手气L1-6 斯德哥尔摩火车上的题L1-7 机工士姆斯塔迪奥L1-8 静静的推荐L2-1 插松枝L2-2 老板的作息表L2-3 龙龙送外卖L2-4 大众情人L3-1 千手…

2022年 GPLT 团队程序设计天梯赛 总结

昨天&#xff0c;感觉一天都在忙天梯赛&#xff0c;也算打的满意了吧&#xff0c;分数141&#xff0c;有效分139&#xff0c;队伍拿了团队铜奖&#xff0c;学校排在山东省第九名。 L1的题很稳&#xff0c;100分拿到了&#xff0c;L2-2也是一遍过&#xff0c;L2-1一个模拟&…

2023团队程序设计天梯赛选拔赛

1.Ltree的数据结构 T322022 Ltree的数据结构 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 主次关键字的排序 用结构体 比赛过程中&#xff0c;其它都很顺利&#xff0c;问题出在了名次上&#xff0c;一直找不到错误点&#xff0c;满分25分&#xff0c;只对了一个测试点&a…

GPLT团队程序设计天梯赛

List item CSDN话题挑战赛第1期 活动详情地址&#xff1a;https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题&#xff1a;大学生竞赛指南 话题描述&#xff1a;本话题聚焦于大学生竞赛心得体会分享&#xff0c;对于计算机众多领域每年都有很多都会举…

2021年中国高校计算机大赛团体程序设计天梯赛

2021年中国高校计算机大赛团体程序设计天梯赛 L1-1 人与神 (5 分)L1-2 两小时学完C语言 (5 分)L1-3 强迫症 (10 分)L1-4 降价提醒机器人 (10 分)L1-5 大笨钟的心情 (15 分)L1-6 吉老师的回归 (15 分)L1-7 天梯赛的善良 (20 分)L1-8 乘法口诀数列 (20 分)L2-1 包装机 (25 分)L2-…

团体程序设计天梯赛练习集题解整合

网上介绍 团体程序设计天梯赛练习集 的文章已经很多了&#xff0c; 我的这篇文章是对练习集题解的整合&#xff0c;方便每一位备战 团体程序设计天梯赛 的同学使用。 一年一度的 团体程序设计天梯赛 即将开始&#xff0c;PTA的练习集是必不可少的备赛必刷题单&#xff0c;这里为…

【2022团体程序设计天梯赛】赛后的一些个人碎碎念

仅是一些个人感想的碎碎念&#xff0c;没有对比赛的题目分析和看法。 终于是打完了2022年的天梯赛&#xff0c;个人成绩一般般&#xff0c;没有超常的发挥&#xff0c;也算不上失常&#xff0c;说得上是中规中矩吧。对我来说&#xff0c;天梯赛有着特殊的意义&#xff0c;心里自…

2022天梯赛正式赛(附天梯赛题目链接)

文章目录 L1-1 今天我要赢 (5 分)L1-2 种钻石 (5 分)L1-3 谁能进图书馆 (10 分)L1-4 拯救外星人 (10 分)L1-5 试试手气 (15 分)L1-6 斯德哥尔摩火车上的题 (15 分)L1-7 机工士姆斯塔迪奥 (20 分)L1-8 静静的推荐 (20 分)L2-1 插松枝 (25 分)(过不完&#xff0c;待补)L2-2 老板的…

PTA 程序设计天梯赛(121~140题)

文章目录 121、高速公路超速处罚 (15 分)122、抓老鼠啊~亏了还是赚了&#xff1f; (20 分)123、用天平找小球 (10 分)124、求符合给定条件的整数集 (15 分)125、用扑克牌计算24点 (25 分)126、近似求PI (15 分)127、两个数的简单计算器 (10 分)128、算术入门之加减乘除 (10 分)…

PTA 程序设计天梯赛(161~180题)

文章目录 161、单词长度 (15 分)162、表格输出 (5 分)163、装箱问题 (20 分)164、求交错序列前N项和 (15 分)165、求集合数据的均方差 (15 分)166、币值转换 (20 分)167、求矩阵的局部极大值 (15 分)168、查询水果价格 (15 分)169、混合类型数据格式化输入 (5 分)170、BCD解密 …

名帖129 成亲王 楷书《赵孟頫大士赞卷》

《中国书法名帖目录》 永瑆(1752-1823)&#xff0c;清乾隆皇帝十一子&#xff0c;封成亲王&#xff0c;清代书法家。永瑆作为皇族&#xff0c;其书法的成就也得益于眼界宽、收藏广。 清代成亲王《永瑆楷书赵孟頫大士赞卷》纸本。故宫博物院藏。 【释文】 秉般若。剑推黑暗尽…

名帖311 成亲王 行书《杜甫秋兴诗》

《中国书法名帖目录》 成亲王永瑆行书《杜甫秋兴诗》&#xff0c;此本墨迹藏钱抚棠少宰家&#xff0c;吴门翻刻。 【释文】秋兴 玉树凋伤枫树林&#xff0c;巫山巫峡气萧森。江间波浪兼天涌&#xff0c;塞上风云接地阴。 丛菊两开他日泪&#xff0c;孤舟一系故园心。寒衣处处…

名帖39 席夔 隶书《千字文》

《中国书法名帖目录》 【释文】 天地玄黄 宇宙洪荒 日月盈昃 辰宿列张 寒来暑往 秋收冬藏 闰余成岁 律吕调阳 云腾致雨 露结为霜 金生丽水 玉出昆冈 剑号巨阙 珠称夜光 果珍李柰 菜重芥姜 海咸河淡 鳞潜羽翔 龙师火帝 鸟官人皇 始制文字 乃服衣裳 推位让国 有虞陶唐 吊民…

春秋·左丘明-《左传·成公八年》

《左传》原名《左氏春秋》&#xff0c;到西汉班固时才改称《春秋左氏传》。相传为鲁国史官左丘明所著&#xff0c;大约成书于战国初期。全书六十卷&#xff0c;以《春秋》为纲&#xff0c;并仿照春秋体例&#xff0c;按照鲁国君主的次序&#xff0c;记载了自鲁隐公元年至鲁悼公…

天津巨富八大家——天成号韩家

韩家是靠海运发的家。 津的海运发展&#xff0c;可以追溯到元代。13世纪元朝统一中国后&#xff0c;把都城设在了北京。皇上在哪&#xff0c;资源就得往哪折腾&#xff0c;这道理在简单不过了&#xff0c;所以那时对南粮北运的需求开始增大。而隋唐时期开挖的大运河通济渠段已…

谢良辅

状江南仲春 唐代&#xff1a;谢良辅江南仲春天&#xff0c;细雨色如烟。丝为武昌柳&#xff0c;布作石门泉。 仲春&#xff1a;农历二月&#xff1b; 孟春&#xff1a;农历正月&#xff1b;暮春&#xff1a;农历三月&#xff1b; 暮春三月 状江南孟冬 唐代&#xff1a;谢良辅江…

有文事者,必有武备

28 iOS 图像渲染原理 https://www.jianshu.com/p/a81d48e0e44a 27 HTTP1.0、HTTP1.1 和 HTTP2.0 的区别 https://www.cnblogs.com/heluan/p/8620312.html https://www.jianshu.com/p/25b762d58e66 26 十大经典算法 http://www.runoob.com/w3cnote/ten-sorting-algorithm.h…