c++编程题 输入一个数,求它的小数位数

如题所述

如果只是求那个数的小数位数的话,不考虑小数部分的零的话:

#include <iostream>
using namespace std;

int main() {
char str[100];
cin >> str;
int cnt = 0;
int i;
for (i = 0; str[i] != '.'; i++);
for (i++; str[i] != '\0'; i++) {
cnt++;
}
cout << cnt << endl;
return 0;
}

如果小数部分末尾的零不算的话:

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

int main() {
int i, j;
int cnt = 0;
char str[100];
cin >> str;
int length = strlen(str);
for (j = length - 1; str[j] == '0'; j--);
for (i = 0; str[i] != '.'; i++);
for (i++; i <= j; i++) {
cnt++;
}
cout << cnt << endl;
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-10-28
如果输入的不是一个小数就有问题了,可以使用正则表达式
$\d+\.(\d+)^
来匹配字符串,匹配成果后获取\1的group字符串,然后使用_tcslen来求取长度。

c++编程题 输入一个数,求它的小数位数
如果只是求那个数的小数位数的话,不考虑小数部分的零的话:include <iostream> using namespace std;int main() { char str[100];cin >> str;int cnt = 0;int i;for (i = 0; str[i] != '.'; i++);for (i++; str[i] != '\\0'; i++) { cnt++;} cout << cnt << en...

如何只输入一个数,然后运行得出两位小数?
打开dev c++,创建一个源代码窗口 2. 输入一段代码。这段代码的意思是,输入一个类型为浮点数的数值。输出一个浮点数 3. 运行,结果如下。此时结果不止两位小数。4. 于是需要对printf的代码进行修改,如下图 5. 然后在调试运行,即可只保留两位小数。

C++中取出一个数的小数部分有几种方法
如:printf("%.2f",a);那就两位小数了。一般编程的时候最好用double(float太糟糕了),然后在空间不够用,并且精度又没有高要求的时候,把double换成float。(2)没错,就是六位。不过它内部有一位保留位,是用于内部精度控制的。

c++问题,传入double类型值,获取小数点前后的位数。急。 在线等。 代码...
printf("%.15lf",a); --- 可以输出小数点后15位,就算不指定 printf("%lf",a); ---也有默认小数点后6位输出 你用那cout 和 << 输出实型数,不特别指定格式时,就是默认7位有效数字.对于cout,你会去研究它的特别格式吗?多数人都忽略它们了,我也忽略它的,即使是用C++ 我依旧爱用p...

如何在编程软件中输入一个数?
1、首先打开DEV C++软件,点击“新建源代码”,在编辑页面输入以下代码。2、因为题目要求我们先输入一个整数,所以在定义变量时,就应该将其定义为整数型,注意,在输入,输出函数中,整数型对应的是“%d”。3、接下来就要对输入的整数进行判断,在C语言中,if是判断语句,所以用它来对整数进行判断。if...

用C++编写一个程序,键盘输入若干个整数,输入字母为结束数据输入,最后...
\/*程序说明:回车键作为两个数据之间的分隔点,输入特殊字符后也必须回车键才能结束,getchar()函数必须通过换行符才能开始处理字符,支持正负数同时处理。*\/ include <iostream> using namespace std;bool check(char c){ char ch[]={'0','1','2','3','4','5','6','7','8','9','...

c++语言:输入一个数,定义和调用函数:double squareRoot(double x...
include <iostream>#include <stdexcept>#include <cmath>double squareRoot(double x){ if (x < 0) throw(std::runtime_error("Invalid parameter.")); return sqrt(x);}int main(void){ try { double result = squareRoot(4); std::cout << result << std::endl...

C++编程输入一个字符,将其大写或者小写.
int main( ){ char x, y ;printf ( " 请输入一个字母:" );scanf ( "%c", &x ) ;if ( x >= 'a' && x <= 'z' )y = x - 32 ;if ( x >= 'A' && x <= 'Z' )y = x + 32 ;printf ( "转换后的字符为:%c\\n" , y ) ;} 代码在DEVC++环境下运行效果如下...

C++ 数组 输入一行字符串(长度小于80个字符,只有字母和数字),统计其中...
int abc_count = 0;\/\/小写字母个数 scanf("%s", str);\/\/连续输入字符到字符数组 while (str[i] != '\\0'){ if ((str[i] >= '0') && (str[i] <= '9'))\/\/判断是否是数字 { Numb_count++;} else if ((str[i] >= 'a') && (str[i] <= 'z'))\/\/判断是否是小写字母...

C++编程 输入一个正整数n(1<n<=10),再输入n个整数,输出其最大值及其...
include<stdio.h> main(){ int n,i,j;scanf("%d",&n);int a[11];for(i=0;i<n;i++)scanf("%d",&a);for(j=0;j<n;j++){ if(a[0]j){ i=j;} } } printf("%d%d",a[0],i);}

相似回答