C++ 判断是否是数字的问题~~~

饭fan有引力 2010-03-20 04:53:22
给一个包含10个元素的数组,现在我们要为这个数组赋值,要求是每次都只能输入数字,然后如果输入了非数字则提出错误提醒。然后要求用户重新输入这个元素对应的数值。
现在的问题是怎么判断多位数字,像12345,因为我现在只能判断的是1位数字。
在网上查了很久的资料,由于是新手,所以看不懂,大虾们可不可以给段代码让我研究下怎么实现这样的功能。
...全文
750 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
WJ15333178133 2011-06-30
  • 打赏
  • 举报
回复
编写一个函数,判断是否每一位都是数字,把要求告诉我,我给你编一个。
饭fan有引力 2010-03-20
  • 打赏
  • 举报
回复
问题已经解决了,谢谢
stardust20 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 longxiangxl2008 的回复:]
4楼还是不行,无法重新输入这个元素对应的数值.

C/C++ code

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
const int N = 10;
int a[N];
for (int i = 0; i < N; i++)
{
……
[/Quote]
有想过这个问题。。不过感觉要加一个判断,判断一次是否输入成功。。你上面那个要是连续两次输错。。i会减两次
boych 2010-03-20
  • 打赏
  • 举报
回复
4楼还是不行,无法重新输入这个元素对应的数值.

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
const int N = 10;
int a[N];
for (int i = 0; i < N; i++)
{
cin >> a[i];
if (cin.fail())
{
cout << "读入为非数字! 请重新读入:" << endl;
cin.clear();
fflush(stdin);
i = i - 1; //注意!!!
}
else
cout << "读入数字:" << endl;
}

system("pause");
return 0;
}

stardust20 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 iamduoluo 的回复:]
引用 10 楼 lovesi3344 的回复:
可以啊 4楼的代码就是我对东东的改进
为什么我要改进?? 因为这个帖子我要收藏



引用 9 楼 iamduoluo 的回复:
引用 3 楼 stardust20 的回复:
判断读入是否成功

C/C++ code
#include <iostream>
using namespace std;
int main()
{……
[/Quote]
streams维护着一些状态。。然后其中failbit是表示某个I/O操作未成功(我们这边要cin一个int型数,却输入char之类的非数字也属于这种情况)。。fail()函数的功能是若发生错误,返回true(表示failbit或badbit设立)所以可以这样判断。。。fflush(stdin)是清空缓冲区的作用。。上面说的如果读取未成功,那么那个未被读取的输入就留在了缓冲区中。。我们把它清空下。。cin.clear是把failbit之类的一些标志清除的功能
饭fan有引力 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lovesi3344 的回复:]
可以啊 4楼的代码就是我对东东的改进
为什么我要改进?? 因为这个帖子我要收藏



引用 9 楼 iamduoluo 的回复:
引用 3 楼 stardust20 的回复:
判断读入是否成功

C/C++ code
#include <iostream>
using namespace std;
int main()
{
const int N=10;
int a[……
[/Quote]

是的,可以的,我是想要知道他的意思啊,我不明白那两句代码的意思
lovesi3344 2010-03-20
  • 打赏
  • 举报
回复
可以啊 4楼的代码就是我对东东的改进
为什么我要改进?? 因为这个帖子我要收藏


[Quote=引用 9 楼 iamduoluo 的回复:]
引用 3 楼 stardust20 的回复:
判断读入是否成功

C/C++ code
#include <iostream>
using namespace std;
int main()
{
const int N=10;
int a[N];
for (int i=0; i < N; i++)
{
cin>>a[i];
if (cin.fail())
……

而……
[/Quote]
饭fan有引力 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 stardust20 的回复:]
判断读入是否成功

C/C++ code
#include <iostream>
using namespace std;
int main()
{
const int N=10;
int a[N];
for (int i=0; i < N; i++)
{
cin>>a[i];
if (cin.fail())
……
[/Quote]
而且你要是输入非数字之后可以不要退出DOS吗,就是输入非数字之后让用户重新输入这个对应的数组元素
饭fan有引力 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 stardust20 的回复:]
判断读入是否成功

C/C++ code
#include <iostream>
using namespace std;
int main()
{
const int N=10;
int a[N];
for (int i=0; i < N; i++)
{
cin>>a[i];
if (cin.fail())
……
[/Quote]


if (cin.fail())这句是什么意思呢,还有fflush(stdin)??
不好意思呢,你的可以用,不过我是初学者,所以看不懂,你简要的说一下这两句的意思可以吗
lovesi3344 2010-03-20
  • 打赏
  • 举报
回复
isdigit() 方法输入12345 运行的结果却是第一位 1 而不是12345

jixingzhong 2010-03-20
  • 打赏
  • 举报
回复
东东 的办法不错,可以参考一下
jixingzhong 2010-03-20
  • 打赏
  • 举报
回复
isdigit 判断可用,循环即可
lovesi3344 2010-03-20
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
int main()
{
const int N=10;
int a[N];
for (int i=0; i < N; i++)
{
cin>>a[i];
if (cin.fail())
{
cout<<"读入非数字"<<endl;
cin.clear();
fflush(stdin);
}
else cout<<"读入数字"<<endl;
}


system("pause");
return 0;
}
stardust20 2010-03-20
  • 打赏
  • 举报
回复
判断读入是否成功
#include <iostream>
using namespace std;
int main()
{
const int N=10;
int a[N];
for (int i=0; i < N; i++)
{
cin>>a[i];
if (cin.fail())
{
cout<<"读入非数字"<<endl;
break;
cin.clear();
fflush(stdin);

}
}
return 0;
}
昵称很不好取 2010-03-20
  • 打赏
  • 举报
回复
extern int isdigit(int c);
BT六眼飞鱼 2010-03-20
  • 打赏
  • 举报
回复
LZ 写个循环好了 然后判断每一位是不是数字
#include <ctype.h>
int isdigit( int ch );


功能:如果参数是0到9之间的数字字符,函数返回非零值,否则返回零值.

char c;
scanf( "%c", &c );
if( isdigit(c) )
printf( "You entered the digit %c\n", c );

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧