C++编写小程序

对任意输入的小于1的并且只有3位尾数的实数,分别求出其各位数字并输出。要求输出的各数字之间要空2格。例如,输入为0.368时,输出结果为‘0368’。... 对任意输入的小于1的并且只有3位尾数的实数,分别求出其各位数字并输出。要求输出的各数字之间要空2格。例如,输入为0.368时,输出结果为‘0 3 6 8’。 展开
 我来答
仙戈雅3n
2014-03-13 · TA获得超过5789个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:872万
展开全部
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

bool EndAsThree(char str[]){
int lenN=0,index=0;
bool flag=false;
while (index<strlen(str)){
if(flag) {
lenN++;
    index++;
}
else{
if(str[index++]=='.') flag=true;
else continue;
}
}

    if(lenN==3) return true;
else return false;
}
void OutputD(char dstr[]){
      double n;
  char *p;
  int i;
  p=dstr;
  n=atof(p);
  if(n<1.0){
  if (EndAsThree(dstr)) {
  for (i=0;true;i++){
  if (dstr[i]!=' '){   
  if(dstr[i]=='.') continue;
  cout<<dstr[i]<<"  ";
  }
  else break;
  }
  cout<<endl;
  }
  else cout<<"不符合实数为3位尾数的"<<endl;
  
  }
else cout<<"该实数不小于1"<<endl;
}
int main(){
    
char dstr[100];

for (int i=0;i<100;i++) dstr[i]=' ';
cout<<"请输入一个小于1并且只有3位尾数的实数:";
cin>>dstr;
OutputD(dstr);
return -1;
}

追问
第九行报错,error: 'strlen' was not declared in this scope?
改成#include之后就没错了,完美运行
追答
我的编译器没有报错,是C++语言为了兼容C语言才使用.h的。
白塔湖大明
2014-03-13 · 超过22用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:54.7万
展开全部
#include<iostream>
#include<string>
#include<vector>
using namespace std;
void Out (double num)
{

vector<int> vtem;
if(((num*1000-(int)(num*1000))==0)&&((num*100-(int)(num*100))!=0))
{
int temp=num*1000;
while(temp>0)
{
vtem.push_back((temp%10));
temp=temp/10;

}
for(vector<int>::reverse_iterator riter=vtem.rbegin();riter!=vtem.rend();riter++)
{
cout<<*riter<<"  ";
}
}

}
void  main()
{
double num=0;
cin>>num;
Out(num);
}

我是纯菜鸟...大神勿喷...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pp1611400
2014-03-13
知道答主
回答量:20
采纳率:0%
帮助的人:13.1万
展开全部
#include <iostream>
#include <string>
using namespace std;
void main()
{
double a;
int k;
cout<<"输入:"<<endl;
cin>>a;
while(a<0||a>=1)
{
cout<<"您的输入不正确,重新输入:"<<endl;
cin>>a;
}
k=a*1000;
cout<<"0"<<" "<<(k/100)<<" "<<(k-k/100*100)/10<<" "<<(k-k/100*100)%10<<endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iAdward
2014-03-13 · TA获得超过100个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:65.9万
展开全部
方法1:
char buf[100];
scanf("%s", buf);
char *pos= strrchr(buf, '.');
if(strlen(pos)>3)
{
printf("\n0 %c %c %c\n", pos[1], pos[2], pos[3]);

}

方法2:
double num = 0.0;
scanf("%0.3lf", &num);
num -= static_cast<int>(num);
int a=num*10;
int b=int(num*100)%10;
int c=int(num*1000)%10;
printf("\nOutput:\n0 %d %d %d\n", a, b, c);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
红色缥缈
2014-03-13 · TA获得超过130个赞
知道小有建树答主
回答量:281
采纳率:0%
帮助的人:141万
展开全部
#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int main()
{
float a;
cout<<"cin a num"<<endl;
cin>>a;
stringstream oss;
oss<<a;
string b;
oss>>b;
for(int i=0;i<b.size();i++)
{
if(b[i]=='.')continue;
cout<<b[i]<<" ";
}
cout<<endl;
return 0;
}
楼主可以试试~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式