+ -
当前位置:首页 → 问答吧 → 一个C++问题需要大侠解决……

一个C++问题需要大侠解决……

时间:2011-12-24

来源:互联网

随便输入一个不限位数的数字,求出他是几位数子。我的代码是:
#include <iostream>
using namespace std;
int main()
{
cout<<"please input a number :";
double n;
int i=1;
cin>>n;
for(int z=10;n/z!=0;z*=10)
{
i++;
}
cout<<"the number is "<<i<<" wei shu zi..."<<endl;
return 0;
}

作者: chiedey   发布时间: 2011-12-24

然后呢?

作者: mingliang1212   发布时间: 2011-12-24

C/C++ code

#include <iostream>
using namespace std;
int main()
{
cout<<"please input a number :";
double n;
int i=1;
cin>>n;
for(int z=10;n/z!=0;z*=10)  // 不要拿 double型的数据(n/z的结果) 和 0 进行相等(或不等)比较
{
i++;
}
cout<<"the number is "<<i<<" wei shu zi..."<<endl;
return 0;
}

// 既然是不限位数,问题就不是那么好解决,可以参考以下这个,然后再修改
#include <iostream>
using namespace std;
int main()
{
cout<<"please input a number :";
long long n; // 改动这个地方,long long 类型,但是位数有限制
int i=1;
cin>>n;
for(int z=10;n/z!=0;z*=10)
{
i++;
}
cout<<"the number is "<<i<<" wei shu zi..."<<endl;
return 0;
}

作者: seucs   发布时间: 2011-12-24

然后呢?

作者: dw903632958   发布时间: 2011-12-24

long long之后位数还好搜有限制啊,这该怎么办啊??疑惑

作者: chiedey   发布时间: 2011-12-24

error C2632: 'long' followed by 'long' is illegal
他说long long是不合法的!

作者: chiedey   发布时间: 2011-12-24

呵呵,使用字符串处理。

作者: songjinshi   发布时间: 2011-12-24

我想解决的问题是数字位数不限制

作者: chiedey   发布时间: 2011-12-24

引用 4 楼 chiedey 的回复:
long long之后位数还好搜有限制啊,这该怎么办啊??疑惑


char str[100];

std::cin>>str;
//在这里检测输入是不是合法的

std::cout<<strlen(str);

作者: mingliang1212   发布时间: 2011-12-24

字符串如何处理,麻烦给个思路,我是菜鸟刚学,麻烦给个知识点,我再自己去啃书。

作者: chiedey   发布时间: 2011-12-24

以字符串的形式输入

作者: Zoelov   发布时间: 2011-12-24

for(int i = 0; i < 100; i++)
 if(str[i] == '\0')
  break;
 else if(str[i] >= '0' && str[i] <= '9')
  { 
  n++;
  }else 
  {
  std::cout<<"erro input!";
  break;
  }
  
 

作者: mingliang1212   发布时间: 2011-12-24