| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1420 人关注过本帖
标题:求输入字符中的单词个数,为什么第一个循环运行完就停止执行后面的代码了?
只看楼主 加入收藏
i_need_to
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-5-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:19 
求输入字符中的单词个数,为什么第一个循环运行完就停止执行后面的代码了?
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 100
int main()
{
   
    int i=0,change=0,pre=0,now=0,num;/*change表示当前字符在空格与字母中发生改变,now表示当前字符是空格与字母中的那种*/
    char c,a[Maxsize];
    while((c=getchar())!=EOF)
    {
                           a[i]=c;
                           printf("%C",a[i++]); /*反映a[i]是否赋值*/   
                             }
       i=0;
                            while(a[i]!=-1)
                            printf("%c",a[i++]);/*检测程序第一次循环后是否继续下一步,是为检测而加上去的*/
    i=0;
    if(a[i]!='\0')
                   pre=1;
    while(a[i]!=-1)
    {
     now=(a[i]<='z'&&a[i]>='a'||a[i]<='Z'&&a[i]>='A')?1:0;
     change+=pre==now?0:1;
     pre=now;
     }
     printf("共有单词%d个",num=a[0]=='\0'?(change+1)/2:(change+2)/2);
     system("pause");
     return 0;
}
           输入 I am a student!再ctrl+z后回车,输出 I am a student!后就不进行了,请各位再看看,错在哪儿,谢谢!
我发现是哪儿的问题了,我改为
#include<stdio.h>
#include<stdlib.h>
int main()
{
   
    int i=0,change=0,pre=0,now=0,num;
    char c;
    while((c=getchar())!=EOF)
    {
    now=(c<='z'&&c>='a'||c<='Z'&&c>='A')?1:0;
     change+=(pre==now)?0:1;
     pre=now;
     }
     printf("共有单词%d个",num=(change+1)/2);
     system("pause");
     return 0;
}
输入I love China!(回车)
    I am a chinese!(回车)
ctrl+z(回车)
最后显示为7个,得到了答案,谢谢各位!!                  
            

[ 本帖最后由 i_need_to 于 2011-5-15 20:25 编辑 ]
搜索更多相关主题的帖子: 检测 
2011-05-15 03:59
i_need_to
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-5-15
收藏
得分:0 
补充:第二,三次循环条件为a[i]!=-1;now=((a[i]<='z'&&a[i]>='a')||(a[i]<='Z'&&a[i]>='A'))
2011-05-15 04:06
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:2 
printf("%C",a[--i]);

这个是什么

《狂人C:程序员入门必备》
2011-05-15 10:36
i_need_to
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-5-15
收藏
得分:0 
回复 3楼 键盘农夫
代码写错了,应该是
a[i]=c;
printf("%c",a[i++]);
作用是每次给a[i]赋值后,输出a[i],
可最终没有数字输出,比如输入I am a student!输出为I am a student!,之后光标跳至下一行,就没有输出了
2011-05-15 13:12
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:2 
如果别人输错中间有两个空格呢?空格和enter程序是当作一样的
2011-05-15 13:22
i_need_to
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2011-5-15
收藏
得分:0 
回复 5楼 lucky563591
由于第一个空格是pre=0第二次空格now=0,那么change+=0,change不变,是没有影响的
2011-05-15 13:26
vipvvv
Rank: 2
等 级:论坛游民
帖 子:9
专家分:18
注 册:2010-9-14
收藏
得分:3 
char c,a[Maxsize];
    while((c=getchar())!=EOF)
你这个循环永远都不会停止!
2011-05-15 14:29
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
楼主,不用这么麻烦吧?
2011-05-15 14:40
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:3 
程序代码:
    while((c=getchar())!=EOF)
    {
         a[i++]=c;
         printf("%c",a[--i]); /*反映a[i]是否赋值*/  
    }
第一个循环是这个
你是怎么让它结束的?

从下面你的说法来看
比如输入I am a student!输出为I am a student!,之后光标跳至下一行,就没有输出了
实际上循环没结束
是等着你继续输入呢

《狂人C:程序员入门必备》
2011-05-15 15:09
shalyf
Rank: 2
等 级:论坛游民
帖 子:21
专家分:18
注 册:2011-5-12
收藏
得分:0 
晕,一道简单的题目干吗编那么复杂啊
2011-05-15 15:24
快速回复:求输入字符中的单词个数,为什么第一个循环运行完就停止执行后面的代码 ...
数据加载中...
 
   



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

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