输入描述 空格分隔的单词 从中找出符合python变量命名的单词 1、不允许为关键字,关键字包括:if、else、elif、while、import 2、变量名称只能包括:小写字母、数字、下划线 3、第一个字母不能是数字,例如:3answer 4、变量长度为 4-16 字符 输出描述 空格分隔的变量名称,按照输入字符串的顺序输出。使用C语言实现
时间: 2023-07-10 10:15:50 浏览: 164
变量命名和关键字-vue cli4 vue.config.js标准配置(最全注释)
以下是使用 C 语言实现的代码,实现从输入的字符串中找出符合 Python 变量命名规则的单词并输出:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int is_keyword(char *word) {
// 判断是否为关键字
char *keywords[] = {"if", "else", "elif", "while", "import"};
int i, n = sizeof(keywords) / sizeof(keywords[0]);
for (i = 0; i < n; i++) {
if (strcmp(word, keywords[i]) == 0) {
return 1;
}
}
return 0;
}
int is_valid_identifier(char *word) {
// 判断是否为合法的标识符
int i, n = strlen(word);
if (n < 4 || n > 16) {
return 0;
}
if (!islower(word[0])) {
return 0;
}
for (i = 1; i < n; i++) {
if (!islower(word[i]) && !isdigit(word[i]) && word[i] != '_') {
return 0;
}
}
return 1;
}
int main() {
char str[1000], word[100];
int i, j, n;
fgets(str, sizeof(str), stdin); // 从标准输入读入输入字符串
n = strlen(str);
i = 0;
while (i < n) {
while (i < n && !islower(str[i])) {
i++;
}
j = i;
while (j < n && (islower(str[j]) || isdigit(str[j]) || str[j] == '_')) {
j++;
}
if (j > i) {
strncpy(word, str + i, j - i);
word[j - i] = '\0';
if (!is_keyword(word) && is_valid_identifier(word)) {
printf("%s ", word);
}
}
i = j + 1;
}
return 0;
}
```
输入示例:
```
hello world 123 foo_bar if_else 3answer while_ 123456789abcdefg
```
输出示例:
```
hello world foo_bar while_
```
阅读全文