冥思苦想,解决不了,请大家帮小妹一下!!!
#include<iostream.h>
#include<iomanip.h>
int fn(int i,int j);
int main()
{
fn(-7,10);
fn(-8,10);
cout<<endl<<endl;
fn(0,20);
system("pause");
}
int fn(int i,int j)
{
if(i<0 || j<=0)
goto end;
for (;i<j;i++)
cout<<setfill('*')<<setw(j)<<"*"<<endl;
end:
cout<<"you have done wrong";
}
上题我的本意是 仅仅在 if(i<0 || j<=0)时,输出 cout<<"you have done wrong";
但我上面的做法在 调用 fn(0,20);时 ,也会输出cout<<"you have done wrong";
请问如何解决这问题?
问题点数:20、回复次数:6Top
1 楼doway(john)回复于 2005-08-03 20:03:12 得分 6
if(i<0 || j<=0)
goto wrong;
for (;i<j;i++)
cout<<setfill('*')<<setw(j)<<"*"<<endl;
goto end;
wrong:
cout<<"you have done wrong";
end:
Top
2 楼megaboy(飞天御剑流之杀神一刀斩)回复于 2005-08-03 20:03:15 得分 6
fn的代码应该改为:
int fn(int i, int j)
{
if(i<0 || j<=0) cout<<"you have done wrong";
else
{
for (;i<j;i++) cout<<setfill('*')<<setw(j)<<"*"<<endl;
}
return 0;
}
Top
3 楼llf_hust()回复于 2005-08-03 20:06:12 得分 8
#include<iostream.h>
#include<iomanip.h>
int fn(int i,int j);
int main()
{
fn(-7,10);
fn(-8,10);
cout<<endl<<endl;
fn(0,20);
system("pause");
}
int fn(int i,int j)
{
if(i<0 || j<=0)
cout<<"you have done wrong";
else
{
for (;i<j;i++)
cout<<setfill('*')<<setw(j)<<"*"<<endl;
}
}
/* 这样写吧,最好不要用GOTO语句 */Top
4 楼yanddan(索尔)回复于 2005-08-03 20:34:19 得分 0
哪个老师教的哦,该杀了,不要用gotoTop
5 楼jiangbo1125(江小鱼)回复于 2005-08-03 20:39:31 得分 0
建议最好不要用goto,多说一句还有今后编程时要避免使用递规!
Top
6 楼LoveYouJustOneDay(哈哈)回复于 2005-08-03 21:08:30 得分 0
杀了
杀了
居然gotoTop




