井字棋游戏--数组在函数参数中得使用

#include <stdio.h>
#include<iostream>
using namespace std;
#define size 3    //define后面没有分号
void input(int a[][size],int n);
void output(int n);
int whoiswin(int a[][size],int n);
int main(){
int music[size][size];
input(music,size);     //数组作为函数参数时直接写名字
int x;
x=whoiswin(music,size);
output(x);
return 0;
}
void input(int a[][size],int n)    //以前已经说过用一个变量传入数组大小
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cin>>a[i][j];
}
}
}
void output(int n)
{
switch(n){
case -1:cout<<"no";break;
case 0:cout<<"0";break;
case 1:cout<<"1";break;
}
}
int whoiswin(int a[][size],int n)
{
int i,j;
int flag=-1;
int hang1,hang0,lie1,lie0;
int zuo1,zuo0,you1,you0;
//同时检查行和列
for(i=0;i<n&&flag==-1;i++)    //同时检查行和列有一点小技巧可以参考
{
hang1=hang0=lie1=lie0=0;
for(j=0;j<n;j++)
{
if(a[i][j]==1)
{
hang1++;
}else{
hang0++;
}
if(a[j][i]==1)
{
lie1++;
}else{
lie0++;
}
if(hang1==n||lie1==n)
{
flag=1;
}else if(hang0==n||lie0==n){
flag=0;
}
}
}
//检查对角线
zuo1=zuo0=you1=you0=0;
for(i=0;i<n&&flag==-1;i++)
{
if(a[i][i]==1)
{
zuo1++;
}else{
zuo0++;
}
if(a[i][size-i-1]==1)
{
you1++;
}
else{
you0++;
}
if(zuo1==n||you1==n)
{
flag=1;
}else if(zuo0==n||you0==n){
flag=0;
}
}
return flag;
}

原文地址:https://www.cnblogs.com/BananaMan/p/11184725.html