| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 887 人关注过本帖
标题:while 循环编译无法通过,麻烦帮忙看看问题在哪?
只看楼主 加入收藏
Oscar_tam
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-27
结帖率:100%
收藏
已结贴  问题点数:17 回复次数:11 
while 循环编译无法通过,麻烦帮忙看看问题在哪?
#include<stdio.h>
#include<ctype.h>
int main(void)

{
   int c_count,n_count,s_count;
   
       c_count=n_count=s_count=0;
   
   char ch;

   while((ch=getchar())!='#')
   {
      
       if(isspace(ch))
           s_count++;

       else if(ch=='\n')
           n_count++;

       else
           c_count++;
   }

   printf("total:%d%d%d\n",s_count,n_count,c_count);
   return 0;

}



--------------------Configuration: e7121 - Win32 Debug--------------------
Compiling...
e7121.c
C:\Program Files\Microsoft Visual Studio\MyProjects\e7121\e7121.c(10) : error C2143: syntax error : missing ';' before 'type'
C:\Program Files\Microsoft Visual Studio\MyProjects\e7121\e7121.c(12) : error C2065: 'ch' : undeclared identifier
执行 cl.exe 时出错.

e7121.exe - 1 error(s), 0 warning(s)
搜索更多相关主题的帖子: include return 
2014-06-23 05:48
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:4 
程序修改过吧。现在编译没有问题。程序中就没有 'type',而且 char ch;也有了。
最好做下面修改:
 1)  if(isspace(ch))  --> if(ch==' ')   更直接清晰高效
 2)  printf("total:%d%d%d\n",s_count,n_count,c_count); --> printf("total:%d, %d, %d\n",s_count,n_count,c_count);  否则数码是挤在一块的。


2014-06-23 07:51
周满悦
Rank: 3Rank: 3
来 自:江苏
等 级:论坛游侠
威 望:2
帖 子:42
专家分:131
注 册:2014-6-21
收藏
得分:4 
#include<stdio.h>
  
  int main(void)
  {
   int space_count = 0;
   int n_count = 0;
   int ch_count = 0;
   char ch;
   
   do
   {
    ch = getchar();
    if (' ' == ch)
      space_count += 1;

    else if ('\n' == ch)
      n_count += 1;

    else
      ch_count += 1;

   }while (ch != '#');
   
   printf("total: space %d \t '\\n' %d \t char %d\n",
       space_count, n_count, ch_count);
   return 0;
}

//带点空格看着舒服些。

我只是一个自学的。
2014-06-23 08:22
Oscar_tam
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-27
收藏
得分:0 
回复 2 楼 kwxx
我把定义字符的变量char移到int前面居然可以通过

你说得对,代码应该以简洁高效为宗旨,否则容易被自己搞晕。学习了··谢谢您!如果可以解释一下为什么char型变量不能在int后面定义这个问题就更完美了,新手伤不起,虚心求赐教
2014-06-23 08:51
Oscar_tam
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-27
收藏
得分:0 
回复 3 楼 周满悦
嗯!另外觉得你这个方案更容易理解
2014-06-23 08:54
a413873492
Rank: 2
等 级:论坛游民
帖 子:74
专家分:74
注 册:2014-5-12
收藏
得分:4 
貌似楼主是新手

欢迎新手还大神一起来讨论qq群;264711626
2014-06-23 20:24
Oscar_tam
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-27
收藏
得分:0 
回复 6 楼 a413873492
确实是,请多多指教
2014-06-24 05:39
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:0 
回复 4 楼 Oscar_tam
放到前面或后面都是一样的没有任何区别,只要你的定义格式是对的。你再试一试。
2014-06-24 07:29
周满悦
Rank: 3Rank: 3
来 自:江苏
等 级:论坛游侠
威 望:2
帖 子:42
专家分:131
注 册:2014-6-21
收藏
得分:0 
这个变量是可以随便定义的,什么int型,或者char型变量无所谓谁先定义,只要你在调用前声明过了,就行了。至于你说的那个 char型不能在int型后面定义是毫无根据的,可能是编译器的问题,跟你的代码无关,我也经常与道这种情况,我的解决方法是把编程软件重新启动一下就解决了。

我只是一个自学的。
2014-06-24 08:49
靠谱的白蓝
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:55
专家分:189
注 册:2013-12-11
收藏
得分:4 
这只是个求统计字符个数的对吧?复杂了点,我写一个,希望对你有用!

#include <stdio.h>

int main()
{
    char  ch;
    int i,digit=0,englishcount=0,othercount=0,blank=0;
   
printf("input 10 characters:");

   
    while((ch=getchar())!='\n')
    {
        if((ch<='z'&&ch>='a')||(ch<='Z'&&ch>='A'))
           englishcount++;
         
        else if(ch==' ')
               blank++;
           else if(ch<='9'&&ch>='1')  
             digit++;
        else
           othercount++;
       }

  printf("\n英文字母为%d个\n空格为%d个\n数字为%d个\n其他字符为%d个\n",englishcount,blank,digit,othercount);   
   
    return 0;
}
2014-06-24 13:28
快速回复:while 循环编译无法通过,麻烦帮忙看看问题在哪?
数据加载中...
 
   



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

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