子函数怎么返回多个值

sky?? 2016-05-27 01:03:47
五子棋。输入一个19*19的矩阵,只包含数字0、1、2,表示两人下五子棋的棋牌状态,1、2分别表示两人的棋子,0表示空格。要求判断当前状态下是否有人获胜(横向、竖向或者斜线方向连成5个同色棋子)。题目说明输入样例保证每条线上至多只有连续5个同色棋子,并且保证至多只有1人获胜。如果有人获胜,输出获胜者(1或2)加一个冒号,接着输出获胜的五连珠的第一个棋子的坐标,从上到下从左到右序号最小的为第一个,序号从1开始编号。如果无人获胜,输出no。
我的问题:子函数 无法返回坐标
#include<stdio.h>
void main()
{
int panduan(int p[19][19],int i,int j,int m);
int p[19][19]={0},i,j,num=0,flag=0;
while(1){
num++;
scanf("%d%d",&i,&j);
if(p[i][j]==0)
p[i][j]=1;
else{
printf("重新输入\n");
scanf("%d%d",&i,&j);
p[i][j]=1;}

flag=panduan(p,i,j,1);
if(flag==1){
printf("1\n");

num=0;
for(i=0;i<19;i++)
for(j=0;j<19;j++)
p[i][j]=0;
break;
}
else printf("no\n");
if(num==181){
printf("no\n");
break;}
scanf("%d%d",&i,&j);
if(p[i][j]==0)
p[i][j]=2;
else{
printf("重新输入\n");
scanf("%d%d",&i,&j);
p[i][j]=2;}

flag=panduan(p,i,j,2);
if(flag==1){
printf("2\n");
num=0;
for(i=0;i<19;i++)
for(j=0;j<19;j++)
p[i][j]=0;
break;
}
else printf("no\n");
}
}
int panduan(int p[19][19],int i,int j,int m)
{
int o,n,num=1;
for(o=i+1;o<=19&&(p[o][j]==m);o++)
num++;
if(num>=5)
return(1);
else
for(o=i-1;o>=0&&(p[o][j]==m);o--)
num++;
if(num>=5)
return(1);
for(num=1,n=j+1;n<=19&&(p[i][n]==m);n++)
num++;
if(num>=5)
return(1);
else
for(o=j-1;n>=0&&(p[i][n]==m);n--)
num++;
if(num>=5)
return(1);
for(num=1,o=i-1,n=j-1;o>=0&&n>=0&&(p[o][n]==m);o--,n--)
num++;
if(num>=5)
return(1);
else for(o=i+1,n=j+1;o<=19&&n<=19&&(p[o][n]==m);o++,n++)
num++;
if(num>=5)
return(1);
for(num=1,o=i-1,n=j+1;o>=0&&n<=19&&(p[o][n]==m);o--,n++)
num++;
if(num>=5)
return(1);
else for(o=i+1,n=j-1;o<=19&&n>=0&&(p[o][n]==m);o++,n--)
num++;
if(num>=5)
return(1);
return(0);
}

...全文
186 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
灌水号 2016-05-27
  • 打赏
  • 举报
回复
传个指针过去,用指针操作.
renwotao2009 2016-05-27
  • 打赏
  • 举报
回复
指针、引用的方式传递参数
夏夕14207304 2016-05-27
  • 打赏
  • 举报
回复
用指针吧。。或者定义结构体
ghx287524027 2016-05-27
  • 打赏
  • 举报
回复
利用地址传递的特性,将返回的多个值存放于数组或者结构体,最后返回只想这种数据类型的指针就可以了
自信男孩 2016-05-27
  • 打赏
  • 举报
回复
通过返回结构体类型的变量可以获取多个参数;把想要返回的数据放入结构体里; 另外,也可以通过传入传出参数实现,但是不建议将函数参数数目超过5个;
lm_whales 2016-05-27
  • 打赏
  • 举报
回复
tuple?
小灸舞 版主 2016-05-27
  • 打赏
  • 举报
回复
1.返回结构体
2.通过指针/引用传参的方式将结果带出子函数

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧