注册 登录
编程论坛 C++教室

有关 while 循环的问题

wjhjcz 发布于 2014-05-24 20:24, 612 次点击
#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
  char ch;
   int i=1;
   while(scanf("%c",&ch)){
      if(ch!=' ') {
        cout<<ch;
         i++;
   }
     }

   
        return 0;
}为什么调试时,电脑总是要求输入字符?
我结束输入时按啦“crtl"+"z",为啥屏幕出现“ ’”而且结束不了?
7 回复
#2
一根牙签2014-05-24 22:09
你没有终止循环

   while(scanf("%c",&ch))
   {
      if(ch!=' ')
      {
        cout<<ch;
         i++;
        }
      else
        break;

     }
#3
yangfrancis2014-05-25 23:02
出现这个报错可能是因为程序里面没有输入语句,也就是你没有给ch赋值。在if前面给ch加个输入语句赋一下值看能不能行。
#4
TonyDeng2014-05-25 23:04
你知道那個while()循環的結束是什麽嗎?如何才能得到這個結束條件?換句話説,你知道scanf()函數的返回值何時是你想要的?
#5
RobinWang2014-05-26 08:08
回复 楼主 wjhjcz
未终止循环,并未对ch赋值
#include <iostream>
#include <cstdio>
using namespace std;
void main()
{
  char ch;
   int i=1;
   while(cin>>ch)
   {
      if(ch!='2')
      {
         cout<<ch;
         i++;
   }
   
else
break;
}
}
#6
yangfrancis2014-05-26 15:06
这里循环语句和i没有什么关系,退出循环的条件也没有涉及到i,这里的i只会一遍遍地往上累加,执行起来会有数据溢出的问题。把i++注释掉吧。
#7
wjhjcz2014-06-02 10:54
回复 6 楼 yangfrancis
但是如果删了i++,循环无法实现啦啊
#8
wjhjcz2014-06-02 10:55
回复 5 楼 RobinWang
ch!=2 什么意思啊
1