6-8 分词并显示 (8 分)程序的功能是:调用Input函数读入最多80个字符,要求字符串中只保留字母和空格,遇到读满或者回车结束读入字符,空格用于分隔单词。请将字符串中用空格分隔的单词在屏幕上输

函数接口定义:

void Input ( char *str );
int Split_Count ( char *str,char **pStr );

裁判测试程序样例:

#include <stdio.h>
/* userCode(<80字符): 自定义函数之原型声明 */
void Input ( char *str );
int Split_Count ( char *str,char **pStr );

int main(void)
{
    char String[81]={0}, *pString[45];
    int i=0, count;
    
    Input(String);
    
    count = Split_Count(String,  pString);
     
    printf("%d Words: ", count);
    for (i=0; i<count-1; i++)
    {
         printf("%s-", pString[i]);
    }
    printf("%s", pString[count-1]);
    putchar('\n');
    return 0;
}
/* 请在这里填写答案 */

输入样例:

Actions speak  louder than  words

输出样例:

5 Words: Actions-speak-louder-than-words

输入样例:

12A good && beginning is half  @done  

输出样例:

6 Words: A-good-beginning-is-half-done
//起初没有看清题,在Input中是调用Input函数读入最多80个字符,要求字符串中只保留字母和空格,,但当时直接scanf(“%[^\n]”,str);了,所以后续代码有些步骤看起来很多余//

void Input(char* str)
{
    int i = 1;
    char x;
    x = getchar();
    while(x!='\n'&&i<81)
    {
        if((x>='a'&&x<='z')||(x>='A'&&x<='Z')||x==' ')
        {
            str[i-1] = x;
            i++;
        }
        x = getchar();
    }
    *(str+i) = '\0';
}
int Split_Count(char* str, char** pStr)
{
    int k = 0;
    int flag = 0, flag1 = 0;
    while (*str < 'A' || (*str > 'Z' && *str < 'a') || *str>'z')
    {
        str++;
    }
    while (*str)
    {
        if ((*str>='a'&&*str<='z')||(*str>='A'&&*str<='Z'))
        {
            *(pStr + k) = str;
            k++;
        }
        while (*str)
        {
            if (*str < 'A' || (*str > 'Z' && *str < 'a') || *str>'z')
            {
                *str = '\0';
                break;
            }
            str++;
        }
        str++;
    }
    return k;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值