#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;
}追问
#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属性
条件这样写的,变量不需要n,直接用输入字符串的length属性