链接:https://ac.nowcoder.com/acm/contest/92236/J 来源:牛客网 小红拿到了一个仅由大小写字母组成的长度为 𝑛 n的字符串,她希望把前 𝑘 k个字母变成大写,后 𝑛 − 𝑘 n−k个字母变成小写
时间: 2024-10-15 07:09:36 浏览: 37
这是一个简单的字符串操作题目,要求将给定字符串中的前k个字符转换为大写,其余的转换为小写。在C语言中,我们可以使用`toupper()`和`tolower()`这两个标准库函数来进行字符的大小写转换。
```c
#include <stdio.h>
#include <ctype.h>
void convert_case(char *str, int k) {
for (int i = 0; i < k; i++) { // 将前k个字符转为大写
str[i] = toupper(str[i]);
}
for (int i = k; i < strlen(str); i++) { // 将剩余字符转为小写
str[i] = tolower(str[i]);
}
}
int main() {
char input[100]; // 假设字符串最大长度不超过100
int n, k;
printf("请输入字符串(忽略空格)和需要转换的大写字母数量: ");
fgets(input, sizeof(input), stdin); // 注意处理换行符
input[strlen(input) - 1] = '\0'; // 去掉末尾的换行符
sscanf(input, "%d %d", &n, &k);
if (k <= n && k >= 0) {
convert_case(input, k);
printf("转换后的字符串是: %s\n", input);
} else {
printf("k的值不正确,请确保0 <= k <= n。\n");
}
return 0;
}
```
在这个程序中,首先从用户那里获取字符串和k的值,然后调用`convert_case`函数执行转换。如果k的值在有效范围内(大于等于0且小于或等于n),则输出结果;否则提示错误。
阅读全文