c++-C++初学者遇到的严重问题

问题描述

C++初学者遇到的严重问题

#includeusing namespace std;int main() { double x = 10.7332; long a = x; double y = x - a; for (; y != 0;) { x *= 10; a = x; cout << a << endl << x << endl; y = x - a; cout << y << endl; } cout << "end"; return 0;}//结果为死循环,永远不输出end字符
//经调试发现当double=107332时,long=107331
//求教!

解决方案

你好好看下书,long是什么类型的,实在不行你就输出来结,一看你就知道了,书上都有

解决方案二:

输出结果:
107 107.332000
0.332000
1073 1073.320000
0.320000
10733 10733.200000
0.200000
107331 107332.000000
1.000000
1073319 1073320.000000
1.000000
10733199 10733200.000000
1.000000
107331999 107332000.000000
1.000000
1073319999 1073320000.000000
1.000000
10733199999 10733199999.999998
0.999998
107331999999 107331999999.999985
0.999985
1073319999999 1073319999999.999878
0.999878
10733199999999 10733199999999.998047
0.998047
107331999999999 107331999999999.984375
0.984375
1073319999999999 1073319999999999.875000
0.875000
10733199999999998 10733199999999998.000000
0.000000

解决方案三:

输出结果:
107 107.332000
0.332000
1073 1073.320000
0.320000
10733 10733.200000
0.200000
107331 107332.000000
1.000000
1073319 1073320.000000
1.000000
10733199 10733200.000000
1.000000
107331999 107332000.000000
1.000000
1073319999 1073320000.000000
1.000000
10733199999 10733199999.999998
0.999998
107331999999 107331999999.999985
0.999985
1073319999999 1073319999999.999878
0.999878
10733199999999 10733199999999.998047
0.998047
107331999999999 107331999999999.984375
0.984375
1073319999999999 1073319999999999.875000
0.875000
10733199999999998 10733199999999998.000000
0.000000

解决方案四:

for (; y != 0;)这句话有问题,y为double类型的,这个条件永远为真,所以是死循环,你可以换成for(; y > 0.000000001 && y <-0.000000001)试试看

解决方案五:

for (; y != 0;)这句话有问题,y为double类型的,这个条件永远为真,所以是死循环,你可以换成for(; y > 0.000000001 && y <-0.000000001;)试试看

解决方案六:

建议你学习一下各种数据类型与0的比较,,林悦的高质量C、C++编程指南的附录面试题里面说的有

解决方案七:

#if 1
#include
using namespace std;

int main()
{
double x = 10.7332;
long a = x;
double y = x - a;
//死循环,Y永远都是0.31999999,建议调试代码,记录并跟踪每一条语句执行后的变量的值
for (; y != 0;)
{
x *= 10;
a = x;
cout << a << endl << x << endl;

y = x - a;
cout << y << endl;
}
cout << "end";
return 0;
}
#endif

时间: 2024-09-12 04:09:11

c++-C++初学者遇到的严重问题的相关文章

搜狗输入法初学者使用指南

搜狗拼音输入法是搜狐公司(或是旗下的搜狗搜索引擎)推出的一款拼音输入法工具.它与传统方法不同的是,采用了搜索引擎技术,是第二代的输入方 法.由于采用了搜索引擎技术,速度有了质的飞跃,在词库的广度.词语的准确度上,搜狗都远远领先于其他输入方法.不过对于初学者来说,搜狗输入法还是有些 小技巧他们是不知道的,下面黑白网的小编就来说一下搜狗输入法初学者使用指南 怎样进行翻页选字? 搜狗拼音输入法默认的翻页键是"逗号(,)句号(.)",即输入拼音后,按句号(.)进行向下翻页选字,相当于PageD

初学者-麻烦看下这是什么问题?

问题描述 麻烦看下这是什么问题? 我安装webconsole的时候报这个错,麻烦看下是什么原因吧,我是初学者 解决方案 检查网络连接,dns解析.最好用vpn,现在网络和谐的厉害.

初学者关于 编程的一些问题

问题描述 初学者关于 编程的一些问题 我是一个编程初学者,在学习c语言,请问c语言学到什么地步才算学好了,学完了c语言,是应该学习数据结构与算法,还是继续学习其他语言,比如c++,java 解决方案 各种计算机语言都是相同的,建议学习一门语言,最好精通一门.等你到一定程度了,学习再学其他的语言,分分钟的事情.大同小异 解决方案二: 学无止境.初学编程,最重要的是要专心,先把一门语言学的熟练,再考虑其他的.所谓熟练,就是给你个目标,你就对如何实现它有清晰的理解,能写出来.

求解答-初学者,计算1-1/3+1/5-1/7+...直到最后一项的绝对值小于10的-16次方2

问题描述 初学者,计算1-1/3+1/5-1/7+...直到最后一项的绝对值小于10的-16次方2 #include void main() { int n=1; float x=1,t=1,s=0; while(t>=1e-6) { t=1.0/(2*n-1); s=s+x*t; x=(-1)*x; n=n+1; } printf("1-1/3+1/5-1/7+...=%fn",s); getch(); return 0; } 为什么是t>=1e-6.而不是t<1e

mfc求助-求MFC程序制作,本人初学者,很多都不懂,希望能有大神提供样本参考。

问题描述 求MFC程序制作,本人初学者,很多都不懂,希望能有大神提供样本参考. 摇杆 主动快带动从动块 键盘WD能控制主动块左右移动菜单里面有"绘制轨迹"选项 和 "消除轨迹" 选项 绘制连杆中点的轨迹 消除轨迹 求大神给个样本参考 T.T

visual studio 2010怎么用keil c51编译?(网上的教程不太懂,初学者)

问题描述 visual studio 2010怎么用keil c51编译?(网上的教程不太懂,初学者) 我看了一些网上的教程,但是有的不懂,所以很久都没有成功.望指点!十分感谢! 解决方案 keil c51有一个workbench,外观和VC++一样,直接就可以用.

(初学者)eclipse编写java 对数据库的操作问题,不知道问题出在哪里,无法入库

问题描述 (初学者)eclipse编写java 对数据库的操作问题,不知道问题出在哪里,无法入库 代码如下:QueryRunner queryRunner = new QueryRunner(); String sql = ""delete from customers where id = ?""; Connection connection = null; try { connection = JDBCTools.getConnection(); System.

Android初学者,求解决这个URI解析

问题描述 Android初学者,求解决这个URI解析 打印出来的信息是读取的同一张图片,选择图库里的就可以获取到,选择其他的就报null 解决方案 http://blog.csdn.net/ljz2009y/article/details/7678027

wpf-vs2012 WPF 和AE开发系统,怎么实现点选查询。初学者求帮助

问题描述 vs2012 WPF 和AE开发系统,怎么实现点选查询.初学者求帮助 用wpf和AE开发系统怎么实现点选查询,就是点一个位置弹出属性表就可以.本人初学者,求各位大侠帮助.

ocx atl-clsid的定义类型问题(初学者提问)

问题描述 clsid的定义类型问题(初学者提问) const CLSID CLSID_MyClass = {0x562052A7,0xF17C,0x408D,{0x99,0x9C,0xCC,0xF1,0xEB,0x9E,0xE7,0x14}}; MIDL_DEFINE_GUID(CLSID, CLSID_MyClass,0xB035F76C,0xF12D,0x4903,0xAE,0x9A,0x33,0x4D,0x27,0x4A,0xA8,0x5E); CLSID_MyClass 两者的区别是什么