写一段C语言代码输入格式: 输入第一行给出一个整型范围内的正整数 N,随后 N 行,每行给出一个长度不超过 80 的字符串,为用户输入的句子,由英文字母、数字、空格和标点符号组成,以回车结束。 输出格式: 对每一行句子,如果其结尾字符为问号 ? 则判断此句中有无 PTA?如果有则在一行中输出 Yes!,否则输出 No.。如果不是问号结尾,则敷衍地回答 enen。
时间: 2024-02-13 12:02:10 浏览: 174
好的,下面是一段符合要求的 C 语言代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
int n;
scanf("%d", &n); // 输入整数 N
getchar(); // 读取换行符,避免影响后面的输入
char str[85];
while (n--) {
fgets(str, 85, stdin); // 读入一行字符串
int len = strlen(str);
if (str[len-2] == '?') { // 如果句子以问号结尾
if (strstr(str, "PTA") != NULL) // 如果包含 PTA
printf("Yes!\n");
else
printf("No.\n");
} else { // 如果句子不以问号结尾
printf("enen\n");
}
}
return 0;
}
```
代码分析:
1. 首先读入整数 N,表示有 N 行字符串需要处理。
2. 使用 `fgets` 函数读入一行字符串,长度为 85,以避免超出数组范围。需要注意的是,`fgets` 函数会读入换行符,因此需要在后面的代码中进行处理。
3. 获取字符串长度 len,判断句子是否以问号结尾。
4. 如果句子以问号结尾,则使用 `strstr` 函数判断是否包含 PTA,如果包含则输出 Yes!,否则输出 No.。
5. 如果句子不以问号结尾,则直接输出 enen。
6. 循环处理下一行字符串,直到处理完所有字符串。
注意事项:
1. 使用 `fgets` 函数时,需要注意读入的换行符。
2. 对于字符串的末尾,需要使用下标 `len-2`(而不是 `len-1`),因为最后一个字符是换行符,倒数第二个才是问号。
3. 使用 `strstr` 函数判断字符串是否包含子串时,需要注意函数的返回值,如果返回 NULL 则表示不包含子串。
阅读全文