用C语言编写一个能将一行字符的每个单词的首字母改为大写后输出的程序。 所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是任意多个。(输入字符串请使用gets函数)
时间: 2024-03-20 12:44:39 浏览: 123
好的,这是一个简单的 C 语言程序,可以实现你的需求:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[100];
printf("请输入一行字符:\n");
gets(str);
int i = 0;
while (str[i] != '\0') {
if (i == 0 || str[i-1] == ' ') {
str[i] = toupper(str[i]);
}
i++;
}
printf("转换后的结果为:\n%s\n", str);
return 0;
}
```
程序会提示你输入一行字符,然后使用 `gets` 函数读取输入的字符串。接着,程序会遍历字符串中的每个字符,如果当前字符是第一个字符或者前一个字符是空格,则将当前字符转换成大写字母。最后,程序输出转换后的字符串。
需要注意的是,`gets` 函数已经被标记为不安全的函数,不建议使用。在实际开发中,应该使用更安全的输入函数,比如 `fgets`。
相关问题
单词首字母大写:输入一行字符,将每个单词的首字母改为大写后输出。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。试用c语言编写相应程序。
在C语言中,我们可以使用`strtok()`函数以及一些控制字符来实现这个需求。这里是一个简单的示例程序,它会接收一行用户输入,然后将每个单词的首字母转换成大写:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void capitalize(char *word) {
int start = 0;
while (word[start] != '\0') {
word[start] = toupper(word[start]); // 转换为大写
start++; // 移动到下一个字符
if (isalpha(word[start])) { // 如果找到新的单词首字母
start++; // 跳过空格
}
}
}
int main() {
char input[1000];
printf("请输入一行字符: ");
fgets(input, sizeof(input), stdin); // 读取用户输入
// 删除fgets结尾的换行符
size_t len = strlen(input);
if (input[len - 1] == '\n') {
input[len - 1] = '\0';
}
char* token = strtok(input, " "); // 分割单词
while (token != NULL) {
capitalize(token); // 转换首字母为大写
printf("%s ", token); // 输出处理后的单词
token = strtok(NULL, " "); // 获取下一个单词
}
return 0;
}
```
当你运行这个程序并输入一行字符时,它会将每个单词的首字母变为大写。
本题目要求编写程序,输入一行字符,将每个单词的首字母改为大写后输出。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 输入格式: 输入给出一行字符。 输出格式: 在一行中输出已输入的字符,其中所有单词的首字母已改为大写。 用C语言写
#include <stdio.h>
#include <ctype.h>
int main()
{
char c, prevc = ' ';
while ((c = getchar()) != '\n') {
if (isalpha(c) && !isalpha(prevc)) {
putchar(toupper(c));
} else {
putchar(c);
}
prevc = c;
}
return 0;
}
阅读全文
相关推荐














