编写程序,要求读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里”单词“是指由空格隔开的字符串)。例如,若输入:I am a student to take the examinat1on则应输出:I Am A Student To Take The Examination .用c语言
时间: 2024-02-20 09:01:34 浏览: 87
好的,以下是使用 C 语言实现这个功能的示例代码:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char text[1000];
fgets(text, sizeof(text), stdin); // 读入一行文本
int i = 0;
while (text[i] != '\0') { // 遍历文本中的每个字符
// 如果当前字符是空格或换行符,则它后面的字符是一个新单词的第一个字母
if (isspace(text[i]) || text[i] == '\n') {
i++; // 跳过空格或换行符
// 将新单词的第一个字母改成大写
if (isalpha(text[i])) {
text[i] = toupper(text[i]);
}
}
i++;
}
printf("%s", text); // 输出处理后的文本行
return 0;
}
```
解释一下代码:
1. 首先,我们声明一个字符数组 `text`,用于存储输入的一行文本。为了避免数组溢出,我们使用 `fgets` 函数读入一行文本,并指定读入的最大字符数为 1000。
2. 然后,我们使用一个 `while` 循环遍历文本中的每个字符。如果当前字符是空格或换行符,则它后面的字符是一个新单词的第一个字母。我们跳过空格或换行符,然后判断新单词的第一个字母是否是字母。如果是字母,则使用 `toupper` 函数将其转换成大写字母。
3. 最后,我们使用 `printf` 函数输出处理后的文本行。
需要注意的是,在 C 语言中,字符串是以空字符(\0)结尾的字符数组。因此,在遍历文本中的每个字符时,我们需要判断当前字符是否是空字符,以确定是否到达了字符串的结尾。
阅读全文