我想写一个程序,输出一个字符串是用pascal,camel,snake,kebab,还是没有。在第一行中,我们应该从input中获取整数n
。然后,在接下来的n行中,我们应该取一个整数k
,然后每行取一个没有空格的字符串。k是字符串的大小。下面是这些大小写样式示例:
pascal case => HelloWorld
camel case => helloWorld
snake case => hello_world
kebab case => hello-world
例如:输入:
3
11 masterShifu
12 master_shifu
12 MASTER_SHIFU
输出:
Camel 箱
蛇管套
未定义大小写样式
这个程序的问题是我不知道如何找到每个单词的第一个字母,因为两个不同的单词之间没有空格。这是我到目前为止写的:
#include <stdio.h>
#include <ctype.h>
int
main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int k;
scanf("%d ", &k);
char word[k];
gets(word[k]);
int count = 0;
if (isupper(word[0]) == 1) {
for (int i = 1; i < n; i++) {
if (isupper(word[i]) == 1) {
count++;
}
}
if (count == k)
printf("Undefined Case Style\n");
else
printf("PascalCase\n");
}
else {
int c = 0,
s = 0,
count = 0;
for (int i = 0; i < n; i++) {
if (word[i] == '-') {
c++;
printf("kebab-case\n");
break;
}
else if (word[i] == '_') // snake case
{
s++;
printf("snake_case\n");
break;
}
else if (isupper(word[i]) == 1) // camel case
{
count++;
printf("camelCase\n");
break;
}
}
if (c == 0 && s == 0)
printf("Undefined Case Style\n");
}
}
return 0;
}
1条答案
按热度按时间hivapdat1#
我建议你遍历输入字符串
s
,然后给定当前字符*s
和你找到的found
的大小写,确定*s
是否有效,新的found
是什么,或者你可以终止处理。这里是输出:
然后我会用宏重构代码:
函数就变成了:
除了使用
fgets()
而不是gets()
之外,您似乎没有遇到解析输入格式和生成预期输出格式的问题,因此将其作为练习留给读者。