提交记录 #496
提交时间:2024-12-10 19:47:22
语言:c
状态:Unaccepted
编译情况:编译成功
固定测试点#1:
固定测试点#2:
固定测试点#3:
固定测试点#4:
固定测试点#5:
固定测试点#6:
固定测试点#7:
固定测试点#8:
固定测试点#9:
固定测试点#10:
固定测试点#11:
附加测试点暂不可用
56【字符】缩写展开
#include <stdio.h>
#include <string.h>
#include <ctype.h>
// 展开缩写形式的字符串
void expand_string(const char *input, char *output) {
int output_index = 0; // 输出字符串的索引
for (int i = 0; input[i] != '\0'; i++) {
// 检查是否为缩写形式(如 A-Z 或 1-5)
if (i + 2 < strlen(input) && input[i + 1] == '-') {
char start = input[i];
char end = input[i + 2];
// 检查是否为有效的缩写形式(字母或数字)
if ((isalpha(start) && isalpha(end)) || (isdigit(start) && isdigit(end))) {
// 检查顺序是否正确
if (start <= end) {
// 展开缩写
for (char c = start; c <= end; c++) {
output[output_index++] = c;
}
i += 2; // 跳过缩写部分
continue;
}
}
}
// 如果不是缩写形式,直接复制字符
output[output_index++] = input[i];
}
output[output_index] = '\0'; // 添加字符串结束符
}
int main() {
char input[1000]; // 用于存储输入的字符串
char output[1000]; // 用于存储展开后的字符串
fgets(input, sizeof(input), stdin); // 使用 fgets 读取输入
// 去除 fgets 读取的换行符
input[strcspn(input, "\n")] = '\0';
// 展开缩写形式的字符串
expand_string(input, output);
// 输出结果
printf("%s\n", output);
return 0;
}