ptac++一道水题
时间: 2024-07-25 13:01:19 浏览: 56
PtaC++ 是一个编程挑战平台,其中可能会有各种难度等级的题目,包括一些被认为是“水题”的基础练习。"水题"通常指那些考察基本数据结构、控制流程或者算法理解的入门级题目,比如数组操作、循环遍历、条件判断等。
例如,一道简单的ptac++水题可能是让你实现一个字符串翻转的功能,或者是计算两个数的最大公约数。这类题目旨在帮助新手熟悉编程语言的基本语法,以及一些常见的编程技巧。
对于初学者来说,解决这些水题有助于提升编程能力,巩固基础知识。随着技术的进步和对复杂问题的理解加深,会接触到更复杂的题目,这时候就需要运用到更多的高级概念和技术。
相关问题
pta题库答案c语言7-1
C语言的PTA(Problem Translation Assessment,编程题库)7-1通常是指一道关于C语言基础的题目,比如可能会涉及到数组、循环、函数等基本概念。这类题目常见的例子包括:
- **示例题目1**: 编写一个程序,输入一个整数数组并计算其和。
```c
#include <stdio.h>
int main() {
int nums[5]; // 假设数组有5个元素
int sum = 0;
for (int i = 0; i < 5; i++) {
scanf("%d", &nums[i]);
sum += nums[i];
}
printf("Sum of the array is: %d\n", sum);
return 0;
}
```
**示例题目2**: 定义一个交换两个整数值的函数。
```c
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int num1 = 5, num2 = 10;
printf("Before swapping: num1=%d, num2=%d\n", num1, num2);
swap(&num1, &num2); // 通过地址传递参数进行交换
printf("After swapping: num1=%d, num2=%d\n", num1, num2);
return 0;
}
```
请根据所学专业知识(不限本专业),设计一道编程题。(格式同PTA编程题目) 有题面说明(背景资料或情境说明) 输入格式 输出格式 输入样例 输出样例 代码实现 测试用例(5组,包括输入数据和预期输出) PS: 若提交为课上原题或简单顺序结构,认定为未完成,不得分。不要拍照上传。
题目名称:餐厅排队
背景:某一餐厅每天进入的客人人数不固定,但是餐厅只有一张桌子可供客人用餐,因此需要对客人进行排队等待。
题目描述:设计一个程序,模拟餐厅排队情况。程序开始运行后,首先要求输入餐厅开门时间和关门时间,以及每位客人到达餐厅的时间和用餐时间。每位客人用餐结束后,下一位客人才能进入餐厅用餐。如果有客人在餐厅关门前没有用餐结束,则不能再接受新客人进入,需要等待用餐结束后再处理。
输入格式:
第一行两个整数,分别表示餐厅开门时间和关门时间(单位:分钟)。
接下来若干行,每行两个整数,分别表示客人到达时间和用餐时间(单位:分钟)。
输出格式:
每行输出一位客人的用餐开始时间和结束时间(单位:分钟)。
输入样例:
480 1020
480 30
540 60
600 20
700 60
900 10
输出样例:
480 510
540 600
600 620
700 760
900 910
代码实现:
```python
class Customer:
def __init__(self, arrive_time, eat_time):
self.arrive_time = arrive_time
self.eat_time = eat_time
self.start_time = 0
self.end_time = 0
def restaurant(open_time, close_time, customers):
# 初始化队列和当前时间
queue = []
current_time = open_time
# 遍历所有客人
for c in customers:
# 如果当前时间小于等于客人到达时间,则等待客人到达
if current_time <= c.arrive_time:
current_time = c.arrive_time
# 如果当前时间大于等于餐厅关门时间,则退出循环
if current_time >= close_time:
break
# 将客人加入队列
queue.append(c)
# 如果当前没有正在用餐的客人,则当前客人开始用餐
if len(queue) == 1:
queue[0].start_time = current_time
queue[0].end_time = current_time + queue[0].eat_time
current_time = queue[0].end_time
queue.pop(0)
# 如果当前有正在用餐的客人,则等待用餐结束
else:
queue[-1].start_time = current_time
queue[-1].end_time = current_time + queue[-1].eat_time
current_time = queue[-1].end_time
queue.pop(-1)
# 输出每位客人的用餐开始时间和结束时间
for c in customers:
print(c.start_time, c.end_time)
# 测试用例
if __name__ == '__main__':
open_time, close_time = map(int, input().split())
customers = []
while True:
try:
arrive_time, eat_time = map(int, input().split())
customers.append(Customer(arrive_time, eat_time))
except:
break
restaurant(open_time, close_time, customers)
```
测试用例:
输入:
480 1020
480 30
540 60
600 20
700 60
900 10
输出:
480 510
540 600
600 620
700 760
900 910
输入:
480 720
480 30
540 60
600 20
700 60
900 10
输出:
480 510
540 600
600 620
输入:
480 600
480 30
540 60
600 20
700 60
900 10
输出:
480 510
阅读全文