用天梯赛打开暑假生活的第九天
从坐牢到入门的程序设计(9)
开始时间2023-07-02 20:13:50
结束时间2023-07-02 21:58:00
前言:不会还有人不知道我科三过了吧!
L1-039 古风排版
一、题目编号及题目说明
二、程序功能测试及说明
按古风格式排版给定的字符串,每列N个字符。
三、程序设计思路及结构说明
将输入文本按照每列 N 个字符进行排列,并以列为主的方式输出的程序。它使用了二维向量 grid
来存储输入文本的每个字符,并根据输入的行数和列数进行排列。然后,从最后一列开始逐列输出。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int N; cin >> N; string text; cin.ignore(); getline(cin, text); int len = text.length(); int rows = (len + N - 1) / N; vector<vector<char>> grid(rows, vector<char>(N, ' ')); for (int i = 0; i < len; ++i) { int row = i / N; int col = i % N; grid[row][col] = text[i]; } for (int i = 0; i < N; ++i) { for (int j = rows - 1; j >= 0; --j) { cout << grid[j][i]; } cout << endl; } return 0; }
五、题目评分
L1-040 最佳情侣身高差
一、题目编号及题目说明
二、程序功能测试及说明
用于计算情侣的身高差。
三、程序设计思路及结构说明
它读取输入的用户数量,然后循环处理每个用户的查询,根据性别和身高计算出情侣的最佳身高差,并将结果输出。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int i=0; for(i=0;i<n;i++) { char p; float a; cin>>p>>a; if(p=='M') { printf("%.2f\n",a/1.09); } else printf("%.2f\n",a*1.09); } return 0; }
五、题目评分
L1-041 寻找250
一、题目编号及题目说明
二、程序功能测试及说明
从输入中寻找值为250的数字,并输出其位置(即第几个数字)。
三、程序设计思路及结构说明
代码使用循环遍历输入数字,当找到值为250的数字时,输出当前位置并跳出循环。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int i=0; for(i=0;i<10000;i++) { int a; cin>>a; if(a==250) { printf("%d\n",i+1); break; } } return 0; }
五、题目评分
L1-042 日期格式化
一、题目编号及题目说明
二、程序功能测试及说明
将输入的字符串按照一定格式进行重新排列。
三、程序设计思路及结构说明
代码使用 getline 函数读取输入的字符串,并使用 substr 函数将其拆分为三个部分 a、b 和 c。然后,代码按照指定的格式输出重新排列后的字符串。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { string p; getline(cin,p); string a,b,c; a=p.substr(0, 2); b=p.substr(3, 2); c=p.substr(6, 4); cout<<c<<"-"<<a<<"-"<<b<<endl; return 0; }
五、题目评分
L1-043 阅览室
一、题目编号及题目说明
二、程序功能测试及说明
处理预定时间的记录并计算每个预定时间段的平均时长。
三、程序设计思路及结构说明
代码使用一个书籍结构体数组 BOOK 来保存每个预定时间段的信息。
代码首先读取输入的整数 n,表示预定时间的记录数量。然后使用循环遍历每条记录,并按照格式读取预定号、状态、开始时间和结束时间。在循环中,根据不同的状态和预定号,更新书籍数组中对应位置的预定状态和开始/结束时间。
最后,根据预定时间的统计数据,输出每个预定时间段的数量和平均时长。
四、程序源代码
#include <iostream> #include <cstdio> using namespace std;const int N = 1010; int Time(int bhour, int bmin, int ehour, int emin); typedef struct { int hour; int min; char state = 'E'; }BOOK; int main() { int n; cin >> n; BOOK book[N]; for(int i=0; i<n;i++) { int num; char flag; int hour, min; int count = 0; int time = 0; scanf("%d %c %d:%d", &num, &flag, &hour, &min); while (num) { if(flag == 'S' && book[num].state == 'E') { book[num].hour = hour; book[num].min = min; book[num].state = flag; } else if (flag == 'E' && book[num].state == 'S') { time += Time(book[num].hour, book[num].min, hour, min); count++; book[num].state = flag; }else if (flag == 'S' && book[num].state == 'S') { book[num].hour = hour; book[num].min = min; } else if (flag == 'E' && book[num].state == 'E'); scanf("%d %c %d:%d", &num, &flag, &hour, &min); } if (count) printf("%d %d\n", count, int(time*1.0 / count + 0.5)); else printf("0 0\n"); } return 0; } int Time(int bhour, int bmin, int ehour, int emin) { return ((ehour - bhour) * 60 + (emin - bmin)); }
五、题目评分
L1-044 稳赢
一、题目编号及题目说明
二、程序功能测试及说明
实现了一个猜拳游戏,根据输入的指令进行不同的操作。
三、程序设计思路及结构说明
代码首先读取一个整数 k,并将其增加 1。然后进入一个循环,在每次循环中读取一个字符串 p。
如果读取到的字符串是 "End",则跳出循环。如果循环次数不为0且能被 k 整除,则输出字符串 p。否则,根据不同的输入字符串 p 输出相应的指令:"ChuiZi" 对应 "Bu","Bu" 对应 "JianDao","JianDao" 对应 "ChuiZi"。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int k; cin>>k; k+=1; int i=0; for(i=1;i<20000;i++) { string p; cin>>p; if(p=="End") { break; } if(i!=0&&i%k==0) { cout<<p<<endl; } else if(p=="ChuiZi") { printf("Bu\n"); } else if(p=="Bu") { printf("JianDao\n"); } else if(p=="JianDao") { printf("ChuiZi\n"); } } }
五、题目评分
L1-045 宇宙无敌大招呼
一、题目编号及题目说明
二、程序功能测试及说明
在一行中输出Hello S
,跟输入的S
星球打个招呼。
三、程序设计思路及结构说明
读取一个字符串 p
,然后输出一个问候语 "Hello ",最后再输出字符串 p
的内容。
代码没有进行循环或其他逻辑操作,只是简单地读取输入并输出结果。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { string p; cin>>p; printf("Hello "); cout<<p<<endl; }