c++一个判断字符串有几个数字的程序,为什么一输入n就输出0?

#include <iostream>
#include <ctype.h>
#include <stdio.h>
using namespace std;
int main ()
{
int n,d,a;
char s;
while (cin>>n)
{
for (int i=0;i<n;i++)
{
for (d=0;(s=getchar())!='\n';)
{
if(isdigit(s)) d++;
}
cout<<d<<endl;
}
}
return 0;
}

第1个回答  2014-09-25
if(isdigit(s)) d++;
你这里判断是否是数字,估计是不是你在回车之前一直都在输入字母啊
第2个回答  2014-09-25
按以下程序,再试试
#include <iostream>
#include <stdio.h>
using namespace std;
int main ()
{
    int n,d;
    char s;
    while (cin>>n)
    {
        getchar();//加上这个,滤掉回车!
        for (int i=0;i<n;i++)
        {
            cout << "input data: " ; //加个提示
            for (d=0;(s=getchar())!='\n';)
            {
                if(isdigit(s)) d++;
            }
            cout<<d<<endl;
        }
    }
    return 0;
}

追问

果然可以……可是为什么会这样啊?求大神解答

追答

cin>>n ; 这里你一定要输入回车才会操作
但你后面 getchar()是读字符,不过滤这个回车,会导致getchar()读到这个回车

本回答被提问者和网友采纳
第3个回答  2014-09-25
while (cin>>n)
条件这样写的,变量不需要n,直接用输入字符串的length属性

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网