标题:这个是什么错误?
只看楼主
flysky102
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-26
 问题点数:0 回复次数:9 
这个是什么错误?
我按c primer上说的写了个计算中奖率的程序,可是编译时出现了问题,我的英文水平一般,也看不懂什么意思,大家帮我看看错哪了,程序如下:
# include <iostream>
long double pro(unsigned numbers,unsigned picks);
int main()
{ using namespace std;
  double a,b;
  cout<<"请输入总数字和可选数字个数\n";
  while((cin>>a>>b)&&b<=a)
  {cout<<"你的中奖率为:";
    cout<<pro(a,b);
    cout<<"输入Q以结束输入";
   }
   cout<<"bye\n";
   system("pause");
   return 0;
}
 long double pro(unsigned numbers,unsigned picks)
 { long double c=1.0;
   long double n;
   unsigned d;
   for(n=numbers,d=picks;d>0;n--,d--)
    c=c*n/d;
    return c;
}
   错误提示如下:
   9 C:\Documents and Settings\cface\桌面\新建文件夹\Untitled1.cpp [Warning] passing `double' for converting 1 of `long double pro(unsigned int, unsigned int)'
   9 C:\Documents and Settings\cface\桌面\新建文件夹\Untitled1.cpp [Warning] passing `double' for converting 2 of `long double pro(unsigned int, unsigned int)'
搜索更多相关主题的帖子: include numbers system double return 
2008-03-23 14:24
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
参数类型不对。。。把基础看好。。不急看primer

学习需要安静。。海盗要重新来过。。
2008-03-23 14:27
flysky102
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-26
得分:0 
可是我是仿照primer 第5版上说的一个程序编写的啊,搞不懂了。。。我学C++也是按论坛上的推荐买的primer这本书的

I think I could do better.
2008-03-23 14:44
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
我编译了一下没有警告也没有错误提示,我用vc++6.0

学习需要安静。。海盗要重新来过。。
2008-03-23 14:51
zjl138
Rank: 1
等 级:新手上路
威 望:1
帖 子:788
专家分:0
注 册:2007-11-12
得分:0 
类型不配。
long double pro(unsigned numbers,unsigned picks);这里你参数类型为UNSIGNED,而double a,b;这里又为double.当然会有警告。
你试着自已修改一下,把类配改为相匹配。

i like linux...
2008-03-23 16:22
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
不是会隐式的类型转换吗
2008-03-23 16:38
zjl138
Rank: 1
等 级:新手上路
威 望:1
帖 子:788
专家分:0
注 册:2007-11-12
得分:0 
会,所以是warning而不是error!!!

i like linux...
2008-03-23 16:42
goodlucklj
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-28
得分:0 
我试了一下,编译运行都没有问题呀!!
这个程序中的   
      cout<<"输入Q以结束输入";是不是有问题呀??
2008-03-23 17:06
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
你调用函数做个c的显示的转换
pro((unsigned)a,(unsigned)b);

隐式转换发生的条件是类型扩展,即没有信息丢失。
显然,从double到int被截断了,所以不能隐式转换。

Fight  to win  or  die...
2008-03-23 17:30
flysky102
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-26
得分:0 
我把double a,b;修改为了int a,b后程序可以编译了,我用的是dev-c++编译器

I think I could do better.
2008-03-23 20:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-204846-1-1.html




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

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