注册 登录
编程论坛 C++教室

关于return语句

xiangjiantui 发布于 2005-11-16 22:48, 1909 次点击
我在VC++和C-FREE都试验了可是让我不能理解的是一个小小的retun把我难住,大家来看下2个代码一个是有return一个是没有:
#include<iostream>
#include<cmath>
using namespace std;
float sanjiaoxing(float a,float b,float c);
void main()
{cout<<"请输入一个三角形的各边长a,b,c"<<endl;
int x,y,z;
cin>>x>>y>>z;
sanjiaoxing(x,y,z);
}
float sanjiaoxing(float a,float b,float c)
{ float area;
float s;
if(a+b<=c||a+c<=b||b+c<=a)
{cout<<"您输入的三个数不能组成三角形"<<endl;
//本应该有的位置
}
else
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
cout<<"三角形"<<a<<" "<<b<<" "<<c<<" "<<"的面积是:"<<area<<endl;
/本应该有的位置
}
}
这个程序执行没有毛病
再来看看书上的原代码:
#include<iostream>
#include<cmath>
using namespace std;
float sanjiaoxing(float a,float b,float c);
void main()
{cout<<"请输入一个三角形的各边长a,b,c"<<endl;
int x,y,z;
cin>>x>>y>>z;
sanjiaoxing(x,y,z);
}
float sanjiaoxing(float a,float b,float c)
{ float area;
float s;
if(a+b<=c||a+c<=b||b+c<=a)
{cout<<"您输入的三个数不能组成三角形"<<endl;
return;
}
else
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
cout<<"三角形"<<a<<" "<<b<<" "<<c<<" "<<"的面积是:"<<area<<endl;
return;
}
}
这个程序运行后有2个毛病
可是书上的是为了说明retun没有返回值的语句啊!!!!!!
谁能帮我解这个问题!谢谢
15 回复
#2
ElfDN2005-11-17 10:49
写个return 0;。。。。。
#3
ElfDN2005-11-17 10:56
对不起,刚才没看仔细,你改成int main试试
#4
Knocker2005-11-17 11:11
丢掉你的书
#5
Knocker2005-11-17 11:15
#include<iostream>
#include<cmath>
using namespace std ;
void sanjiaoxing(float a,float b,float c);
int main(void)
{
cout<<"请输入一个三角形的各边长a,b,c"<<endl ;
int x,y,z ;
cin>>x>>y>>z ;
sanjiaoxing(x,y,z);

return 0;
}
void sanjiaoxing(float a,float b,float c)
{
float area ;
float s ;
if(a+b<=c||a+c<=b||b+c<=a)
{
cout<<"您输入的三个数不能组成三角形"<<endl ;
return ;
}
else
{
s=(a+b+c)/2 ;
area=sqrt(s*(s-a)*(s-b)*(s-c));
cout<<"三角形"<<a<<" "<<b<<" "<<c<<" "<<"的面积是:"<<area<<endl ;
return ;
}
}

注意红字
#6
xiangjiantui2005-11-17 18:07
你写的红字能不能说明?
谢谢版主
#7
nFox182005-11-17 18:30
   两个程序都错了啊.声明为又返回值的函数必须有返回语句,而且必须返回一个值.你那个函数根本不需返回值,版主改的就很好,不过那两个返回语句可以不要....
#8
Staples2005-11-17 22:56
在if else 语句中不要return也是行的吧!
#9
苦味酸2005-11-18 22:43
你的面积计算函数根本就不需要有值返回嘛,干吗要加return,多此一举,再说,为什么要在条件判断语句中去做返回呢,本来你的想法没错,但给人的感觉就是很不规范,要尽量追求程序简单易读才是。  return语句不是你这么用的,既然你定义的是返回浮点型,就不能在程序中返回空值!
#10
echeck2005-11-19 23:52

#include<iostream>
#include<cmath>
using namespace std ;
void sanjiaoxing(float a,float b,float c);
void main(void)
{
cout<<"请输入一个三角形的各边长a,b,c"<<endl ;
int x,y,z ;
cin>>x>>y>>z ;
sanjiaoxing(x,y,z);

}
void sanjiaoxing(float a,float b,float c)
{
float area ;
float s ;
if(a+b<=c||a+c<=b||b+c<=a)
{
cout<<"您输入的三个数不能组成三角形"<<endl ;
}
else
{
s=(a+b+c)/2 ;
area=sqrt(s*(s-a)*(s-b)*(s-c));
cout<<"三角形"<<a<<" "<<b<<" "<<c<<" "<<"的面积是:"<<area<<endl ;
}
}
这样你试一下

#11
nFox2005-11-22 12:12

main()函数要有返回值

#12
tomic2005-11-27 14:14

用void就不要了吧。

#13
poppylx2005-11-27 20:47
void函数可以用reture来结束函数
#14
honey06072005-11-28 15:50
#include<iostream>
#include<cmath>
using namespace std;
float sanjiaoxing(float a,float b,float c);
void main()
{cout<<"请输入一个三角形的各边长a,b,c"<<endl;
float x,y,z;
cin>>x>>y>>z;
sanjiaoxing(x,y,z);
}
float sanjiaoxing(float a,float b,float c)
{ float area;
float s;
if(a+b<=c||a+c<=b||b+c<=a)
{cout<<"您输入的三个数不能组成三角形"<<endl;
exit(1); //退出该函数
}
else
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
cout<<"三角形"<<a<<" "<<b<<" "<<c<<" "<<"的面积是:"<<area<<endl;
return area;
}
}

[此贴子已经被作者于2005-11-28 15:51:52编辑过]

#15
陈冬2008-11-28 13:36
呵呵
#include<iostream>
#include<cmath>
using namespace std;
float sanjiaoxing(float a,float b,float c);
void main()
{cout<<"请输入一个三角形的各边长x,y,z"<<endl;
float x,y,z;
cin>>x>>y>>z;
cout<<"三角形"<<x<<" "<<y<<" "<<z<<" "<<"的面积是:"<<sanjiaoxing(x,y,z)<<endl;
}
float sanjiaoxing(float a,float b,float c)
{ float area;
float s;
if(a+b<=c||a+c<=b||b+c<=a)
{cout<<"您输入的三个数不能组成三角形"<<endl;
return 0;
}
else
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));

return area;
}
}你在运行一下就没问题了。你的源代码有小点错误。你要的是面积值,但是你调用函数后却没返回值。如果不要返回值的话,return语句可有也可无。
另外你的参数传递也不怎么好,一种是float型,一种确是int型。这样还要系统为你进行类型转换。还有你输出时有个area在main函数中是未定义的。
因此错误很多,建议多看些书上的概念。有问题可以交流。QQ657919224.
#16
zuiwutong52008-11-28 17:27
你的源程序根本就不存在返回值的问题,当然会出现错误。很正常。
1