标题:循环问题
只看楼主
刘暮哲
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:75
专家分:83
注 册:2009-9-25
结帖率:69.23%
已结贴  问题点数:5 回复次数:4 
循环问题
#include<stdio.h>
void main()
{
    char a[100],ctr;
    int i,j;
    printf("please input the string:\n");
    ctr=getchar();
    i=0;
    while(ctr!='\n')
    {   a[i++]=ctr;
        a[i]='\0';
    }
   
   
     if(a[0]=='\0')
        j=0;
     else
        j=1;
    for(i=0;a[i]!='\0';i++)
    {        
     if(a[i]==' ')
        j++;
    }
   
   
   
    printf("%d\n",j);
   
        
   
   
}

      
这个程序好像进去了死循环  但是我检查部出来  请高手帮忙看看
我用别的方法编了一次  下面的程序时对的  请问这两个的循环不是一样的嘛?
#include<stdio.h>
#include<string.h>


void main()
{
    char a[100],ctr;
    int i,c;
    int end=0;
    int words=0;
    printf("please input the string:\n");
    while(end==0)
    {
        c=0;
        while((ctr=getchar())!='\n')
            a[c++]=ctr;
        a[c]='\0';

        if(a[0]=='\0')
            break;
        else
        {
            words++;
            for(i=0;a[i]!='\0';i++)
                if(a[i]==' ')
                    words++;
        }
        printf("%d",words);
    }
}


  谢谢!
搜索更多相关主题的帖子: void include please 
2009-10-17 10:38
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
得分:2 
  while(ctr!='\n')
    {   a[i++]=ctr;
        a[i]='\0';
    }
这里就是个死循环,ctr!='\n'只要第一次输入为真就一直循环,你没有设定重新输入,在里面加一个ctr=getchar();就行了。

离恨恰如春草,更行更远还生。
2009-10-17 10:55
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
得分:2 
while((ctr=getchar())!='\n') ;第二个程序的while循环,每循环一次就获取1字符,当获取到换行符时退出。(但外层的while还是个退不出的循环。)而第一个程序的while里没有,只在while外有个getchar,当只按回车不进入while循环。只要输入字符进到while循环就是死循环。


[ 本帖最后由 UserYuH 于 2009-10-17 10:56 编辑 ]

努力—前进—变老—退休—入土
2009-10-17 10:55
刘暮哲
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:75
专家分:83
注 册:2009-9-25
得分:0 
首先谢谢各位的帮助   不过2楼的我好像在前面定义了
  ctr=getchar();
    i=0;
    while(ctr!='\n')
    {   a[i++]=ctr;
        a[i]='\0';
    }
     
这样不行吗?

做最好的自己
2009-10-19 11:30
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
得分:1 
ctr=getchar();  
    i=0;  
while(ctr!='\n')  
    {   a[i++]=ctr;  
        a[i]='\0';  
    }  
这样是不对的,ctr=getchar();  当他接受一个字符后就没再用到它,假如while为真,就会在次一直循环。
while((ctr=getchar())!='\n') ;这个就行,有什么问题?

离恨恰如春草,更行更远还生。
2009-10-19 12:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-288854-1-1.html




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

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