| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1351 人关注过本帖
标题:每日一题!NO.4(适合新手做练习)-[统计字符问题](给出答案)
只看楼主 加入收藏
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
收藏
得分:0 
LZ的ID让俺想起了阿CR。。
亲戚关系?
2011-06-08 12:00
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
貌似有问题!
以下是引用cosdos在2011-6-8 01:11:19的发言:

#include  
#include  
#include  
int main(void)
{
    int ch, space=1, wd=0;
    while( (ch=getchar())!='\n' && ch != EOF )
    {
        if(space && !isspace(ch)) {
                wd++;
                space=0;
        }
        else
            space=isspace(ch);
    }
    printf("%d", wd);
    system("pause");
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

我在思考,这题真的简单吗?
7个单词,输出是6。

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 12:06
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
完全不认识哈!
以下是引用Alar30在2011-6-8 12:00:07的发言:

LZ的ID让俺想起了阿CR。。
亲戚关系?
完全不认识哈!呵呵!

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 12:08
bccn_2012
Rank: 6Rank: 6
等 级:侠之大者
帖 子:158
专家分:447
注 册:2011-5-14
收藏
得分:0 
程序代码:
#include <stdio.h>

int main()
{
    int i,n=0;
    char c;
    c=getchar();
    for(i=0;c!='\n';i++)
    {
        if(c==' ')
            n++;
        c=getchar();
    }
    printf("单词个数为:%d\n",n+1);
}


最简单的版本。。
2011-06-08 12:53
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 12楼 啊C
这个是你输入数据的问题。你都说了单词之间要用空格分开的~
而且这样写也不符合英语语法。英语的标点符号后面是要有空格的
2011-06-08 13:00
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
回复 10楼 啊C
设置一个变量用来记录进入单词状态和非单词状态!单词状态+1!
程序代码:
#include"stdio.h"
int num_of_str(const char *str);
int main()
{
   char *arry="I am xxx.I love speak english!";
   puts(arry);
   printf("%d",num_of_str(arry));
   return 0;
}

int num_of_str(const char *str)
{
    int i=0;
    int word;
    int num=0;
    while(*(str+i)!='\0')
    {
        if(*(str+i)>='a'&&*(str+i)<='z'||*(str+i)>='A'&&*(str+i)<='Z')
        {
            word=1;
        }
        else
        {
            word=0;
        }
        if(word)
        {
            num++;
            while(*(str+i)>='a'&&*(str+i)<='z'||*(str+i)>='A'&&*(str+i)<='Z')
            {
                i++;
                if(*(str+i)=='\0')//这里是针对只有一个单词的情况
                {
                    i--;
                    break;
                }
            }
        }
        i++;
    }
    return num;

}

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

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

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


[ 本帖最后由 liangjinchao 于 2011-6-8 14:04 编辑 ]

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-06-08 13:02
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
以下是引用bccn_2012在2011-6-8 12:53:51的发言:

#include  
 
int main()
{
    int i,n=0;
    char c;
    c=getchar();
    for(i=0;c!='\n';i++)
    {
        if(c==' ')
            n++;
        c=getchar();
    }
    printf("单词个数为:%d\n",n+1);
}
 
最简单的版本。。
很不错嘛,够简单!

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 16:24
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
以下是引用voidx在2011-6-8 13:00:36的发言:

这个是你输入数据的问题。你都说了单词之间要用空格分开的~
而且这样写也不符合英语语法。英语的标点符号后面是要有空格的
呵呵,这个我没注意到,题目是书上的,而我想得有完美了,你写出的代码完全符合题目要求哈!恭喜了!
我想能力强的就该编辑出更适合实际运用的代码!

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 16:28
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
程序代码:
char a[1000];
int i=0,j=0,sum=1;
gets(a);
int n=strlen(a);
strlwr(a);
for(i=0;i<n-1;i++)
{if(a[i]==' '&&a[i+1]!=' ')
sum++;
/*
如果是输入句子,可以加一条:
else if(a[i]=='.'||a[i]=='!'||a[i]=='?')
sum++;*/
}
if(a[0]==' ')
sum--;
for(i=0;i<n;i++)
if(a[i]!=' '&&!(a[i]>=97&&a[i]<=122)) /*如果输入句子,可以改为  if(a[i]!=' '&&!(a[i]>=97&&a[i]<=122)&&a[i]!='.'&&a[i]!='?'&&a[i]!='!')*/
{j++;while(a[i]!=' '&&i<n)i++;
}
puts(a);
printf("%d",sum-j);


[ 本帖最后由 hjywyj 于 2011-6-8 16:50 编辑 ]
2011-06-08 16:44
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

int main(void) {
    int ch, count = 0, i = 0, j = 0;
    while((ch = getchar()) != '\n')
        isalpha(ch) ? (j++ || count++, putchar(ch), i = 0) : (i++ || putchar(' '), j = 0);
    printf("\nYou're entered %d words\n", count);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册



My life is brilliant
2011-06-08 17:24
快速回复:每日一题!NO.4(适合新手做练习)-[统计字符问题](给出答案)
数据加载中...
 
   



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

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