harumakigohan686

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

CP1024 单词切分以及一些拓展题

又是一道小题,(但是也不是空格作为分割符,范围更广)本质上还是连续字符串,又考了判断嵌套啊

俺的做法:

#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
    char a[100];//用于存储刚开始的字符串
    char b[100][100];//用于存储切分出来的单词
    int k=0,j=0;//计数器
    gets(a);
    for(int i=0; a[i]!='\0'; i++) //字符串遍历
    {
        if(a[i]==' '||a[i] =='1'||a[i] =='2'||a[i] =='3'||a[i] =='4'||a[i] =='5'||a[i] =='6'||a[i] =='7'||a[i] =='8'||a[i] =='9'||a[i] =='0')//判断是不是字母
        {
            if(a[i+1]==' '||a[i+1] =='1'||a[i+1] =='2'||a[i+1] =='3'||a[i+1] =='4'||a[i+1] =='5'||a[i+1] =='6'||a[i+1] =='7'||a[i+1] =='8'||a[i+1] =='9'||a[i+1] =='0')//判断第二个是不是字母,防止误杀友军
            {
               continue;//是的话过掉,下一个
            }
            else
            {
                k++;//反之则另起一行继续存储
            }

        }
        else//存储单词
        {
            if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))//防止把标点放进去
            {
                b[k][j]=a[i];//存储单词
                j++;
            }
        }
        b[k][j]='\0';//加上结束符,很重要,不能少
    }
    int y;
    for(int i=0; i<=k; i++)
    {
        for(y=0; y<j; y++)
        {
            if(b[i][y]!='\0')//这个是去掉前面的多余的东西
            {
                printf("%c",b[i][y]);
            }
        }
        printf("\n");
    }
    return 0;
}
很有意思的题目,但我的方法还是太笨了,下次再试试指针之类来做,还有二维字符串也得试试。
哦对了
该代码稍微改一下还可以做单词缩写哦~(笑)
补充代码如下:
 int y;
    for(int i=0; i<=k; i++)
    {
        for(y=0; y<j; y++)
        {
            if(b[i][y]!='\0')
            {
                if(b[i][y]>='a'&&b[i][y]<='z')
                {
                printf("%c",b[i][y]-32);
                break;
                }
                if(b[i][y]>='A'&&b[i][y]<='Z')
                {
                printf("%c",b[i][y]);
                break;
                }
            }
        }
    }
 

posted on   harumakigohan  阅读(71)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示