| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1376 人关注过本帖
标题:新手学C++的一些疑问
只看楼主 加入收藏
峻峰
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-11-18
收藏
 问题点数:0 回复次数:12 
新手学C++的一些疑问
请各位帮我看一下我的代码有什么问题。。
运行之后,结果总是出现不是期待种的结果

//build a program to know how many seconds in a year
//in this program ,you should key in year day hour and minute
#include <iostream>
using namespace std;
int main()
{
    int year,day,hour,minute,second;
    int seconds;
    int stop;//use the key in function to stop the exe
        cout<<"key in the years you want to know\n";
            cin>>year;
         cout<<"key in the days in a year\n";
            cin>>day;
        cout<<"key in the hours in a day\n";
             cin>>hour;
        cout<<"key in the minutes in an hour\n";
            cin>>hour;
        cout<<"key in the seconds in a minute\n";
            cin>>second;
        seconds=year * day * hour * minute *second;
        cout<<"the years you key in is "<<year<<" ,and the seconds number is \n"<<seconds<<endl;
cin >>stop;
}
搜索更多相关主题的帖子: 疑问 
2008-12-04 20:12
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
不知 lz 有什么期待
2008-12-04 20:55
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
seconds=year * day * hour * minute *second; 有可能是外星生物的时间进制!
时间单位的进制都不知道吗?这样的运算能得到秒数?想想一年多少天,一天多少小时,一小时多少分,一分多少秒.
2008-12-04 21:02
hitcolder
Rank: 1
等 级:新手上路
威 望:1
帖 子:124
专家分:0
注 册:2008-10-28
收藏
得分:0 
以下是引用debroa723在2008-12-4 21:02的发言:

seconds=year * day * hour * minute *second; 有可能是外星生物的时间进制!
时间单位的进制都不知道吗?这样的运算能得到秒数?想想一年多少天,一天多少小时,一小时多少分,一分多少秒.


哈哈,楼主好像是只要输入年数,然后自己设定年,天,小时,分,秒的进制啊,不过只是设成个int变量,不怕溢出吗

不要在你的智慧中夹杂傲慢,也不要使你们的谦卑缺乏智慧的成分。
2008-12-05 13:07
峻峰
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-11-18
收藏
得分:0 
貌似问题还没解决嘛。。
这个设置,我用来检验一下运算的
没想到一算就出问题了
我自己输入数据的适合,感觉没什么问题
而且我是用计算器算过的。

但是在这里却出现问题了

或不会是数字的二进制数目到达顶峰啊。。。我记得有这样的错误存在。
但是一直都没有解决过
2008-12-05 18:11
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
昨天没仔细看,原来是下面代码有问题
cout<<"key in the minutes in an hour\n";
cin>>hour;//这里你要输入分,却把hour放在这儿了,那么变量minute由于没有初始化,是不能参于运算的,它只有声明没有定义的话,是不会在内存中存在的,所以程序员会崩溃
2008-12-06 10:30
jklr11
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-12-6
收藏
得分:0 
呵呵,没错,minute是一个不确定的数值,当然结果不可预测
2008-12-06 11:45
峻峰
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-11-18
收藏
得分:0 
哎呀,我真是大蒙。。。居然打字的适合打成一样了。。。

其实问题还是有的。

例如,我在程序上编辑一个数的平方。。。当这个数大于100000的适合,会出现乱码。。。但是在99999的适合还是可以。。。也就是说100000的平方,就是乱码了。。不是期待结果。
就像是这样。。。
#include <iostream>
using namespace std;
int sqr(int a);
int main()
{
    int stop;//用来停止,方便观察结果
    int num;
    cin>>num;
    cout<<sqr(num);
    
    cin >>stop;
return 0;
}
int sqr(int a )
{
    return a *a;
}

当输入数字大于100000的时候,就产生错误的东西了。

[[it] 本帖最后由 峻峰 于 2008-12-6 18:58 编辑 [/it]]
2008-12-06 18:50
hitcolder
Rank: 1
等 级:新手上路
威 望:1
帖 子:124
专家分:0
注 册:2008-10-28
收藏
得分:0 
回复 第8楼 峻峰 的帖子
楼主确定输入99999可以吗,我运行了下99999*99999显示是14098654094,MS不太对啊,int型数据在VC++6.0中是占4个字节,32位数据,它的数据范围是:>> 2^32-1

ans =

  4.2950e+009
输入99999肯定不会出来正确结果。(假设的是无符号整数啊,如果有符号,范围会小一半 )

不要在你的智慧中夹杂傲慢,也不要使你们的谦卑缺乏智慧的成分。
2008-12-07 12:05
夜罗刹
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-10-30
收藏
得分:0 
在c++中 int类型是4个字节的
    也就是2的32次方  开根号后是2的16次方
  2的16次方是64kB也就是 1024*64=65536 很熟悉的数字
   比它大的数字输入后都有可能出现乱码 所以99999是得不到正确结果的
2008-12-08 00:25
快速回复:新手学C++的一些疑问
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027009 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved