c++小程序,为什么老说我在常量前面少分号和括号呢?

#include<iostream>#include<cmath>usingnamespacestd;#defineP2#defineQ5intfindlambda(in... #include<iostream>
#include<cmath>
using namespace std;
#define P 2
#define Q 5
int findlambda(int Q,float lambda[]);
int main()
{
int besti=0;
int badi=0;
float matrix[2][5]={2,3,1,1,0,3,3,2,0,1};
int ji[5]={0,0,0,1,1};
float c[3]={-40,-45,-24};
float b[2]={100,120};
float lambda[5]={-40,-45,-24,0,0};
badi=findlambda(Q,lambda);
cout<<findlambda;
}

//-----------------------------------------------------------------------
int findlambda(int QQ,float lambda[])

{
int badi=-1;
float M=999999;
for(int i=0;i<QQ;i++)
{
if(lambda[i]<0)
{
if(lambda[i]<M) {
M=lambda[i];
badi=i;}
}
}
return badi;
}
//------------------------------------------------------------------------

就这个小程序,编译时候老说
C:\Documents and Settings\abc\Cpp1.cpp(6) : error C2143: syntax error : missing ')' before 'constant'
C:\Documents and Settings\abc\Cpp1.cpp(6) : error C2143: syntax error : missing ';' before 'constant'
C:\Documents and Settings\abc\Cpp1.cpp(6) : fatal error C1004: unexpected end of file found

他所说的congstant常量指的是什么呢?我看了好半天也没找到哪里少括号和分号啊?真伤心,要是答的好我再加一百分,因为很着急,拜托了
展开
 我来答
百度网友036f89e
2009-05-25 · TA获得超过137个赞
知道答主
回答量:102
采纳率:0%
帮助的人:96万
展开全部
参考:
你用#define Q 5宏定义语句后,Q与5是同一个值5,后面的程序就会把Q当做5,在你定义在函数里定义形参int Q时实际上与定义int 5 一样的,而在定义变量s时是不能用数字开头,更不能只用一个整数代替变量,所以会报错,用#define Q 5; 与const int Q=5;是等价的
修改:
在声明处修改:int findlambda(int i,float lambda[]); 或int findlambda(int ,float lambda[])
顺便说一句:在你的函数定义时用int QQ因为QQ作为一个整体,在程序开头没有语句#define QQ 5所以用int QQ 是合法的。
建议:你用了badi来存储函数返回值,在输出是就可以直接用cout<<badi;
百度网友350302d
2009-05-25 · TA获得超过669个赞
知道小有建树答主
回答量:1048
采纳率:0%
帮助的人:607万
展开全部
int findlambda(int Q,float lambda[]);
改为
int findlambda(int QQ,float lambda[]);

定义常量最好用const,保存不会错啦,上面的Q被换成了5了(#define Q 5)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰蓝月零冻
2009-05-24 · TA获得超过532个赞
知道小有建树答主
回答量:479
采纳率:0%
帮助的人:522万
展开全部
c++定义常量尽量用const,因为define是预编译,也就是编译时不检查对错,所以int findlambda(int Q,float lambda[]); 就错了,会直接代换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdinten
2009-05-24 · TA获得超过6589个赞
知道大有可为答主
回答量:3562
采纳率:56%
帮助的人:1328万
展开全部
#define Q 5
int findlambda(int Q,float lambda[]);
是不是这个地方啊?你把Q定义为5,何必要放在函数里面呢?每次调用函数就把Q简单的换成了5,5就是一个常量。你试着改写一下这个函数,看能不能消除这个问题,我没有环境,不好帮你调试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangdw2006
2009-05-24 · TA获得超过1614个赞
知道大有可为答主
回答量:2521
采纳率:0%
帮助的人:1858万
展开全部
#define Q 5
int findlambda(int Q,float lambda[]);
怎么能这样写啊,int 5是不对的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贵族特困生
2009-05-24 · TA获得超过411个赞
知道小有建树答主
回答量:283
采纳率:0%
帮助的人:244万
展开全部

#define P 2
#define Q 5
改成
const int P=2;
const int Q=5; 就可以了,至于原因我也不很清楚
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式