CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

一个程序!

楼主flish(烨子风)2005-04-01 22:33:53 在 C/C++ / 新手乐园 提问

有一个数组。里面装了double型的数。  
  求这些数中那些数自己各个位上的数相加为偶数。  
  那位大哥帮忙写个程序啊。我写了几个都不对。想不出来了。 问题点数:20、回复次数:6Top

1 楼killer1984(人在天涯)回复于 2005-04-01 23:04:12 得分 5

分两部分,一是取整数部分每一位数字:  
  1、取整  
  2、取10的模得到个位数  
  3、除以10  
  4、结果小于1结束否则返回第一步  
  二是取小数部分每位数字  
  1、用a-[a]的方式取出小数部分,其中[a]为对a取整,若为0则结束  
  2、乘以10,取出整数部分,得到一位数字  
  3、返回第一步  
   
  这样只要将得到的每一位相加就可以,判断是不是偶数只需要将相加的结果与1进行按位与运算,为0则是偶数,为1则是奇数Top

2 楼kobefly(科比--网络学习中)回复于 2005-04-01 23:04:25 得分 0

比较困难Top

3 楼flish(烨子风)回复于 2005-04-01 23:09:15 得分 0

直接给程序好吧。。我现在头晕死了。都不想写了。  
  Top

4 楼szws(克米帅)回复于 2005-04-02 11:34:32 得分 7

int   judgeeven(double   u)  
  {  
  char   uunit[20]={0};  
  int   num=0,sum=0;  
  int   intepart=floor(u);  
  double   decimal=u-intepart;  
  while(intepart>0)  
  {  
  uunit[num++]=intepart%10;  
  if(intepart<10)break;  
  intepart=intepart/10;  
  }  
  while(decimal>=0.000001)  
  {  
  uunit[num++]=floor(decimal*10);  
  if(decimal*10>=0.000001)break;  
  decimal=decimal*10-floor(decimal*10);  
  }  
  for(int   i=0;i<num;i++)  
  sum+=uunit[i];  
   
  if(sum%2==0)  
  return   1;  
  else   return   0;  
  //return   sum;  
  }  
  int   main()  
  {  
  //print();  
  const   int   n=8;  
  double   a[n]={123,   341.23,23.45,21.6457,23.45645,11.002,23.6787,1.23456};  
  cout<<"己各个位上的数相加为偶数的有:"<<endl;  
  for(int   i=0;i<n;i++)  
  {  
  if(judgeeven(a[i]))  
  {  
   
  cout<<a[i]<<'   ';  
  }  
  }  
   
  return   0;  
  }Top

5 楼pcboyxhy(-273.15℃)回复于 2005-04-02 11:36:46 得分 0

存在误差问题Top

6 楼antter(JiangMiao)回复于 2005-04-02 12:46:55 得分 8

//我写个简短点的吧,16位有效位相加  
  //误差是double的问题,不是程序的问题。  
  #pragma   warning(disable:4786)  
  #include   <iostream>  
  #include   <iomanip>  
  #include   <algorithm>  
  using   namespace   std;  
   
   
  double   data[]   =   {1.34,23423,23,44,22.6,1,3.1415926535};  
  const   int   N   =   sizeof(data)/sizeof(double);  
   
  //   计算各位的和  
  void   sum(double   old)  
  {  
  double   a=old;  
  int   rt=0;//各位的和  
  while(a>=1.0)   a/=10;  
  for(int   i=0,b;i<16;i++){  
  a   -=   b=(int)(a*=10);  
  rt   +=   b%10;  
  }  
  cout<<setprecision(16)<<old<<'   '<<rt<<'   '  
  <<(rt%2?"奇数":"偶数")<<endl;  
  }  
   
  void   main()  
  {  
  for_each(data,data+N,sum);  
  }Top

相关问题

  • 程序员?非程序员?-----没程序。
  • 程序中的程序
  • 源程序
  • 程序人生?
  • 排课程序
  • 向导程序
  • 幕后程序
  • 一段程序
  • 程序求简
  • 程序纠错?

关键词

  • 偶数
  • intepart
  • uunit
  • 相加
  • 程序
  • decimal
  • 部分
  • floor
  • double
  • 数字

得分解答快速导航

  • 帖主:flish
  • killer1984
  • szws
  • antter

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo