1003 我要通过! (20 分)(c语言实现)

PAT自动裁判程序:判定字符串是否正确
该博客介绍了一道PAT编程题,要求编写程序判断输入字符串是否符合特定条件以获得“答案正确”。条件包括:仅包含P、A、T字符,允许形如xPATx的结构,且满足特定的A字符分布规律。博客提供了输入输出样例及问题关键点解析。

1003 我要通过! (20 分)

题目

“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。

得到“答案正确”的条件是:

1、字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
2、任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
3、如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。

输入格式:

每个测试输入包含 1 个测试用例。第 1 行给出一个正整数 n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过 100,且不包含空格。

输出格式:

每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出 YES,否则输出 NO。

输入样例:

8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA

输出样例:

YES
YES
YES
YES
NO
NO
NO
NO

分析

这道题的关键在于:
①不能有除了P、A、T以外的字符,并且P、A、T的个数均不能为0
②P前面A的个数*P、T中间A的个数=T后面A的个数

#include &
### C语言实现学生选课系统 #### 功能概述 一个基本的学生选课系统应具备的功能包括但不限于:显示可选课程列表、允许学生选择课程、查看已选课程以及取消所选课程。下面是一个简化版的C语言程序,展示了这些核心功能。 #### 数据结构设计 为了管理课程信息和学生的选课情况,可以定义两个数组来别保存课程数据(编号、名称、学)和每位同学的选择记录。此外还需要设置一些辅助变量用于控制菜单循环等操作[^2]。 ```c #include <stdio.h> #define MAX_COURSE 5 /* 可供选择的最大课程数 */ #define MAX_STUDENT 30 /* 支持最多的学生人数 */ typedef struct { char name[20]; // 课程名 int id; // 编号 float credit; // 学数 } Course; Course courses[MAX_COURSE]; char selected_courses[MAX_STUDENT][MAX_COURSE]; void initCourses(void); void showMenu(void); void listAvailableCourses(void); void selectACourse(int studentId); void viewSelectedCourses(int studentId); int main(){ int choice,studentId; initCourses(); do{ printf("\n---欢迎来到选课平台---\n"); printf("请选择您的身份:\n1. 查看所有课程\n2. 进入选课(输入学号)\n3. 查看我的选课\n4. 退出\n选项:"); scanf("%d",&choice); switch(choice){ case 1 : listAvailableCourses(); break; case 2 : printf("请输入您的学号>"); scanf("%d",&studentId); if (studentId >= 0 && studentId < MAX_STUDENT) selectACourse(studentId); else printf("无效的学号!\n"); break; case 3 : printf("请输入您的学号>"); scanf("%d",&studentId); if (studentId >= 0 && studentId < MAX_STUDENT) viewSelectedCourses(studentId); else printf("无效的学号!\n"); break; default: ; } }while(choice != 4); } /* 初始化几门可供选择的基础课程 */ void initCourses(){ strcpy(courses[0].name,"高等数学");courses[0].id=1001;courses[0].credit=4.5; strcpy(courses[1].name,"大学英语");courses[1].id=1002;courses[1].credit=3.0; strcpy(courses[2].name,"计算机基础");courses[2].id=1003;courses[2].credit=2.5; } ``` 上述代码片段实现了简单的命令行交互界面,并提供了初始化预设课程表的方法。对于每种可能的操作——浏览可用课程、进行具体选课动作或是回顾个人已经选定的内容——都对应有专门处理逻辑函数。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值