| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3355 人关注过本帖
标题:统计字符串中 有几个good
只看楼主 加入收藏
MuMuLee
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2016-1-16
结帖率:84.21%
收藏
已结贴  问题点数:20 回复次数:9 
统计字符串中 有几个good
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,i;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        int j,x,a=0;
        char c[101];
        for(j=0;j<101;j++)
            scanf("%c",&c[j]);
            //c[j]=getchar();
        for(x=0;x<101;x++)
        {
            if((c[x]=='g')&&(c[x+1]=='o')&&(c[x+2]=='o')&&(c[x+3]=='d'))
              a++;
        }
        printf("%d",a);
    }
    return 0;
}
你能统计出good有多少个吗?

input
输入数据的第1行一个N (1 < N < 100),代表输入的数据组数,然后有N 行,每行有很多个单词,单词之间用空格隔开;每行的长度不超过100.

output
对于每行数据,输出其中含good单词的个数。

sample_input
2
i am a good boy!



不能运行诶
goof good good dood good
搜索更多相关主题的帖子: 字符串 color 统计 
2016-02-23 20:35
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:4 
问题出在输入字符串上,scanf好像不能接收空格,但我用gets也不行(CodeBlocks),看看其他人有没有办法。
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,i;
    scanf("%d",&n);

    for(i=1;i<=n;i++)
    {
        int x,a=0;
        char c[101];

        gets(c);  //直接略过不执行
        //scanf("%s",c);  //输入有空格不会统计之后的字符
        //你下面的方法不可行,因为非得输入100个字符才结束
        /*for(j=0;j<101;j++)
            scanf("%c",&c[j]);*/

        for(x=0;x<97;x++)
        {
            if(c[x]!='g') continue;
            if((c[x]=='g')&&(c[x+1]=='o')&&(c[x+2]=='o')&&(c[x+3]=='d'))
            {
                a++;
                x+=3;
            }
        }
        printf("%d\n",a);
    }

    return 0;
}

   唯实惟新 至诚致志
2016-02-23 21:31
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:1 
首先将题目贴完整
input
2
i am a good boy!
goof good good dood good
output
1
3

其次,题目要求是“输出其中含good单词的个数”

程序代码:
#include <stdio.h>

int main( void )
{
    unsigned n;
    scanf( "%u", &n );
    scanf( "%*[^\n]" );
    scanf( "%*c" );
    for( unsigned i=0; i!=n; ++i )
    {
        char s[101];
        fgets( s, sizeof(s)/sizeof(*s), stdin );

        unsigned num = 0;
        char t[101];
        for( int j=0,k; sscanf(s+j,"%s%n",t,&k)==1; j+=k )
            num += (t[0]=='g' && t[1]=='o' && t[2]=='o' && t[3]=='d' && t[4]=='\0');

        printf( "%u\n", num );
    }

    return 0;
}

2016-02-24 09:30
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
不知道  aggoodc  算不算正确答案

DO IT YOURSELF !
2016-02-24 09:33
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:1 
回复 3楼 rjsp
高大上,表示看不懂。

   唯实惟新 至诚致志
2016-02-24 09:37
拉链
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:534
注 册:2016-1-22
收藏
得分:1 
回复 4楼 wp231957
大概sscanf的%n格式已经分出各个单词了,不用担心单词包含。
2016-02-24 11:19
LGing
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:32
专家分:107
注 册:2015-3-15
收藏
得分:6 
程序代码:
/*
统计字符串个数

*/
#include<stdio.h>
#include<stdlib.h>
#define MAX 200
char s[MAX];
int main(void)
{
    printf("输入字符串:");
    gets(s);
    char k[40];
    printf("输入需要统计的字符串:");
    gets(k);
    int length=0;//输入字符长度

    while(*(k+length))
    {
        length++;
    }
    //printf("%d\n",length);
    int num=0,i=0;//字符串个数
    int start=0,end=0;
    int t=0;
    while(*(s+i))
    {
        if (*(s+i)==' ')
        {
            end=i;
            for (int m=start;m<end;m++)
            {
                //进行匹配
                if ((end-start)!=length)
                break;
                if (*(s+m)==*(k+t))
                {
                    t++;
                    if (t==length)
                    num++;
                }
            }
            t=0;
            start=end+1;
        }
        i++;
    }
    printf("字符串中一共有%d个%s\n",num,k);

}
你改下,可以的

2016-02-24 12:02
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:2 
回复 5楼 qq1023569223
scanf("%[^\n]",a);
%[^..]  的意思是获取字符串,直到遇见“..”后面再用一个scanf("%c")则是为了把最后面的那个分隔符"\n"读掉

下面是前辈总结的
http://blog.

φ(゜▽゜*)♪
2016-02-24 13:15
巡山的狮子王
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2016-2-24
收藏
得分:2 
#include<stdio.h>
#include<string.h>
int tong(char *a)
{int m=0,i;
char b[]={"good"};
for(i=0;i<4;i++)
{if(*(a+i)==*(b+i)) m=1;
else {m=0;return m;}
}
return m;
}
int main()
{int i,m,n=0,c;
char a[101];
scanf("%d",&i);
for(c=i;c>=0;c--)
{gets(a);
for(unsigned int j=0;j<=strlen(a);j++)
{m=tong(&a[j]);
if(m==1) n++;
}
}
if(n>0) printf("good的个数:%d\n",n);
else printf("no words:good\n");
return 0;
}
2016-02-24 13:39
米线儿
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:54
注 册:2015-3-28
收藏
得分:2 
我感觉是输入字符串的问题呢。你在for循环那里输入字符的时候,强制要运行到101才跳出来这个循环继续下一次。

图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-2-25 14:59编辑过]

2016-02-25 03:58
快速回复:统计字符串中 有几个good
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022500 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved