6-13 输入多个单词,统计以指定字母开头的单词个数PTA函数题

本题目:先输入一个含有多个单词的字符串,然后再输入一个字母,然后调用函数getWordNum统计该行字符中以指定字母开始的单词的个数(不区分大小写)。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

函数接口定义:



int getWordNum(char ar1[], char ch) ;

函数返回以形参变量ch中的字符开头的字符数组ar1中的单词数

裁判测试程序样例:



#include<stdio.h>
int getWordNum(char ar1[],char ch) ;
int main()
{ 
    char string[81],c,n; 
    gets(string);                           
    c=getchar();
    n=getWordNum(string,c);
    printf("%d",n); 
    return 0;
}

/* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

af Adf Dad abdde
a

输出样例:

在这里给出相应的输出。例如:

3

参考代码

int getWordNum(char ar1[], char ch) 
{
int number=0;
    int n=strlen(ar1);//计算出字符串长度
    for(int i=0;i<n;i++)
    {
        if(ar1[i]==ch||ar1[i]==ch-32||ar1[i]==ch+32)//小写字母变大写字母减32,相反,大写字母变小写加32
        {
            number++;
        }
    while(ar1[i]!=' '&&ar1[i]!='\0')//移动到空格或者末尾,开始判断下一个单词
                i++;
    }
    return number;
}

 

要完成这个题目,你需要编写一个C程序,包括几个步骤: 1. **获取输入**:首从用户那里接收两个输入一个字符串,另一个字母。 2. **处理字符串**:遍历输入字符串,使用`strtok`函数分割单词,考虑到`strtok`默认区分大小写,我们需要将其转换为小写或大写以便进行比较。 3. **统计单词**:创建一个计数器,对于每个单词,检查其首字母是否与给定的字母相同(忽略大小写),如果是,则增加计数器。 4. **调用函数**:定义一个名为`getWordNum`的函数,接受输入字符串字母参数,返回统计到的单词数量。 以下是一个简单的C语言代码示例: ```c #include <stdio.h> #include <ctype.h> #include <string.h> // 函数原型声明 int getWordNum(const char *str, char start); // 主函数 int main() { char str[100]; // 存放字符串 char letter; // 用户输入字母 printf("请输入一个含有多个单词字符串: "); fgets(str, sizeof(str), stdin); // 获取输入并去掉末尾的换行符 str[strlen(str) - 1] = '\0'; // 去掉末尾的换行符 printf("请输入一个字母: "); scanf("%c", &letter); letter = tolower(letter); // 转换为小写进行比较 int wordCount = getWordNum(str, letter); printf("以 %c 开头单词有 %d 个。\n", letter, wordCount); return 0; } // 计算函数 int getWordNum(const char *str, char start) { int count = 0; const char *word = strtok(str, " "); // 分割单词 while (word != NULL) { if (tolower(*word) == start) { // 检查首字母是否匹配 count++; } word = strtok(NULL, " "); // 继续查找下一个单词 } return count; } ``` 在这个例子中,`getWordNum`函数内部,我们使用了`strtok`函数和`tolower`函数,`strtok`用于分割字符串,`tolower`用于将单词的第一个字符转换为小写,以便于比较。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值