| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2975 人关注过本帖, 1 人收藏
标题:字符数组的起始位置有空格吗?
只看楼主 加入收藏
YuriGagarin
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2008-2-22
收藏
得分:0 
[bo][un]YuriGagarin[/un] 在 2008-8-1 17:02 的发言:[/bo]

1.教材的程序,一行字符的开头不统计空格;而我这个程序,因为是num初始化为1,是不是应该算作没有统计开头的空格呢??
  字符开头的空格怎么算呢??

  判别标志的问题多少有些明白了。
  但是,那个“ ...


再问问!
2008-08-03 09:18
busuzhike007
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-8-3
收藏
得分:0 
头都大了,听不懂啊
2008-08-03 09:30
busuzhike007
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-8-3
收藏
得分:0 
我是初学者请大家多多关照
2008-08-03 09:35
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
[bo][un]YuriGagarin[/un] 在 2008-8-1 17:02 的发言:[/bo]

1.教材的程序,一行字符的开头不统计空格;而我这个程序,因为是num初始化为1,是不是应该算作没有统计开头的空格呢??
  字符开头的空格怎么算呢??

  判别标志的问题多少有些明白了。
  但是,那个“ ...


我的天,你到底懂了没?所有的程序跟空格都没有关系,统计的是单词数目,不是空格数目!!!

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-08-04 10:30
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
换句话,一个“实现正确”的程序,对于下面几个句子,识别的单词数应该是一样的:
A big one.
A    big    one   .
   A    big   one   .
A!#@$%#$big one.
A big-big one.

一个正确的程序,对于上面四个句子,其单词数都是3,如果不是,证明其实现错误。这跟空格什么的没关系,空格是实现细节。

[[it] 本帖最后由 StarWing83 于 2008-8-4 10:35 编辑 [/it]]

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-08-04 10:32
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
这是我的程序(注意和6#的有点点不一样,6#的有点点笔误,第一个代码是对的):

#include <stdio.h>
#include <ctype.h>
int main()
{
    char str[81];
    char ap[256]={0};
    int i,num=0;

    for (i=0;i<26;i++)ap[i+'a']=ap[i+'A']=1;
    while (gets(str)!=NULL)
    {
        for (num=i=0;str[i] != '\0';i++)
        {
            if (ap[(int)str[i]] && str[i+1]!='-' && !ap[(int)str[i+1]])
                num++;
        }
        printf("There are %d words in the line.\n",num);
    }
    return 0;
}

这是测试结果:
A big one.
There are 3 words in the line.
A    big    one   .
There are 3 words in the line.
   A    big   one   .
There are 3 words in the line.
A!#@$%#$big one.
There are 3 words in the line.
A big-big one.
There are 3 words in the line.



这是你的教材上的程序的测试结果:
A big one.
There are 3 words in the line.
A    big    one   .
There are 4 words in the line.
   A    big   one   .
There are 4 words in the line.
A!#@$%#$big one.
There are 2 words in the line.
A big-big one.
There are 3 words in the line.

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-08-04 10:40
YuriGagarin
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2008-2-22
收藏
得分:0 
楼上的程序里,有很多我还没有看到,所以也不好多说什么!

  我只是想知道:
教材原程序————————————————
#include <stdio.h>
void main()
{
 char string[81];
 int i,num=0,word=0;
 char c;
 gets(string);
 for (i=0;(c=string[i]) != '\0';i++)
 {
  if (c == ' ')
   word=0;
  else if (word == 0)
   {
    word=1;
    num++;
   }
 }
 printf("There are %d words in the line.\n",num);
}

自己的版本————————————
#include <stdio.h>
void main()
{
 char string[81];
 int i,num=1;
 char c;
 gets(string);
 for (i=0;(c=string[i]) != '\0';i++)
 {
  if (c == ' ')
  num++;
 }
 printf("There are %d words in the line.\n",num);
}

  我知道这两个都不是很健全,但为什么“num”的初值可以不同呢?!!
  教材说,“字符串的一行开头的空格不统计”,但为什么教材自己的程序就算进去了呢?!!

  我就是想知道这个问题的细节!!
2008-08-06 12:32
floats
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-8-5
收藏
得分:0 
[bo][un]YuriGagarin[/un] 在 2008-8-1 17:02 的发言:[/bo]

1.教材的程序,一行字符的开头不统计空格;而我这个程序,因为是num初始化为1,是不是应该算作没有统计开头的空格呢??
  字符开头的空格怎么算呢??

  判别标志的问题多少有些明白了。
  但是,那个“ ...

 楼主测试的时候输入“        I am a boy.”在最前面多打几个空格就会发现你的程序和书上的不同之处了
2008-08-06 22:32
YuriGagarin
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2008-2-22
收藏
得分:0 
我不得不承认:自己又钻进语法细节的牛角尖里了!
想了这么久,总算明白了!
  教材原题中,“word”的初值即为0,因此,字符串开头的空格无论统计与否,都会在读取下一个空格前读取“else if”分支中的“num++”……
  丫的,又被谭浩强给忽悠了!
  教材里先是在起始陈述“一行开头的空格不统计在内”,后在表现程序运行思路的表格里算上首单词前的空格……这不是自相矛盾吗?!
  怪不得有夸他的书好,有骂他的烂了!

  我已经至少被忽悠三次了!!
2008-08-07 08:46
YuriGagarin
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2008-2-22
收藏
得分:0 
[bo][un]floats[/un] 在 2008-8-6 22:32 的发言:[/bo]


 楼主测试的时候输入“        I am a boy.”在最前面多打几个空格就会发现你的程序和书上的不同之处了


如楼上所言,不仅我的程序有问题,教材里的程序运行结果也不对了!!

  但是,唉!这已经超出我的“承受”范围了!
  几位高手的“举一反三”,需要我慢慢消化……

  谢谢各位,我所理解的问题基本解决……
2008-08-07 08:50
快速回复:字符数组的起始位置有空格吗?
数据加载中...
 
   



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

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