• 智能AI问答!更聪明、更完整、原创作!
  • 一款基于GPT的超级AI机器人,可以回答问题、聊天、创作、写文案!

/*- 【程序设计】函数int trans(char pD)的功能是:统计字符串p中保存的英文单词个数(单词间用空格隔开),并将每个单词的首字母转换为大写字母。函数返回单词个数。

发布于 2024-08-12 12:53:10

下面是一个简单的C语言程序,实现了trans函数,用于统计字符串中英文单词的数量并将每个单词的首字母转换为大写字母。这个函数使用isalpha来判断字符是否为字母,使用toupper将字母转换为大写。

#include <stdio.h>
#include <ctype.h> // 包含isalpha和toupper函数
#include <string.h> // 包含strlen函数

// 函数声明
int trans(char *pD);

int main() {
    char str[1000]; // 假设字符串长度不超过999
    printf("请输入一个字符串:");
    fgets(str, sizeof(str), stdin); // 使用fgets读取一行,包括空格分隔的单词

    // 去除fgets读取的换行符
    size_t len = strlen(str);
    if(len > 0 && str[len - 1] == '\n') {
        str[len - 1] = '\0';
    }

    int wordCount = trans(str); // 调用trans函数
    printf("单词个数: %d\n", wordCount);
    printf("转换后的字符串: %s\n", str); // 输出转换后的字符串

    return 0;
}

// 函数定义
int trans(char *pD) {
    int count = 0; // 单词计数器
    char c, c1;

    // 检查是否是字母,并将首字母转换为大写
    while ((c = *pD++) != '\0') {
        if (isalpha(c)) { // 如果是字母
            *(pD - 1) = toupper(c); // 转换为大写
            while (isalpha(c = *pD)) pD++; // 跳过单词中间的字母
            if ((c1 = *pD) != '\0' && !isalpha(c1)) { // 如果下一个字符不是字母,说明遇到了单词边界
                count++; // 增加单词计数
                if (c1 == ' ') pD++; // 如果是空格,跳过它
            }
        }
    }

    return count; // 返回单词计数
}

这个程序首先包含了必要的头文件,并定义了trans函数来实现题目要求的功能。在main函数中,使用fgets从标准输入读取一行文本,然后调用trans函数处理字符串,并打印出单词的数量和转换后的字符串。

trans函数通过遍历字符串,找到每个单词的首字母并将其转换为大写。当遇到非字母字符时,如果下一个字符是空格或字符串结束符,则认为已经到达单词的末尾,并增加单词计数器。

请注意,这个程序假设输入的字符串不会超过999个字符,并且输入的字符串以换行符结束,因此在读取后需要去除换行符。此外,这个程序没有处理连续空格的情况,如果输入中有空格,它们会被保留。

0 条评论

发布
问题

在线
客服