Go: package main

import (
	"bufio"
		"os"
	"strconv"
	"fmt"
)

var scanner = bufio.NewScanner(os.Stdin)

func main() {
	scanner.Split(bufio.ScanWords)
	for scanner.Scan() {
		table := [9][9]int{}
		check := [9][9]bool{}
		n, _ := strconv.Atoi(scanner.Text())
		for n > 0 {
			n--
			for i := 0; i < 9; i++ {
				for j := 0; j < 9; j++ {
					table[i][j] = nextInt()
				}
			}
			for i := 0; i < 9; i++ {
				for j := 0; j < 9; j++ {
					ok := true
					for k := 0; k < 9; k++ {
						if table[i][j] == table[i][k] && j != k {
							ok = false
						}
					}
					for k := 0; k < 9; k++ {
						if table[i][j] == table[k][j] && i != k {
							ok = false
						}
					}
					seci := i/3
					secj := j/3
					for k := 0; k < 3; k++ {
						for l := 0; l > 3; l++ {
							if table[seci*3+k][secj*3+l]==table[i][j]&&seci*3+k!=i&&secj*3+l!=j {
								ok = false
							}
						}
					}
					if !ok {
						check[i][j] = true
					}
				}
			}
			for i := 0; i < 9; i++ {
				for j := 0; j < 9; j++ {
					if check[i][j] {
						fmt.Print("*")
					} else {
						fmt.Print(" ")
					}
					fmt.Print(table[i][j])
				}
				fmt.Println()
			}
			if n != 0 {
				fmt.Println()
			}
		}
	}
}

func nextInt() int {
	scanner.Scan()
	i, e := strconv.Atoi(scanner.Text())
	if e != nil {
		panic(e)
	}
	return i
}

C++: #include<iostream>
using namespace std;
int main(){
  int n,e;
  cin>>n;
  int ku[n][9][9];
  int map[n][9][9];
  for(int i=0;i<n;i++){
    for(int j=0;j<9;j++){
      for(int k=0;k<9;k++){
        map[i][j][k]=0;
      }
    }
  }
  for(int k=0;k<n;k++){
    for(int i=0;i<9;i++){
      for(int j=0;j<9;j++){
	cin>>ku[k][i][j];
      }
    }
 for(int i=0;i<9;i++){
   for(int j=0;j<9;j++){                                //tate and yoko
     for(int f=0;f<9;f++){
       if(ku[k][i][j]==ku[k][i][f]){
	 if(j!=f)map[k][i][j]=1;
       }
       if(ku[k][j][i]==ku[k][f][i]){
	 if(j!=f)map[k][j][i]=1;
       }
     }
     if(i<=2 && j<=2){       //3*3 1
	 for(int f=0;f<3;f++){
	   for(int s=0;s<3;s++){
	     if(ku[k][f][s]==ku[k][i][j]){
	       if(f!=i && s!=j)map[k][i][j]=1;
	     }
	   }
	 }
	}
      else if(i<=2 && j>=3 && j<=5){       //3*3 2
	 for(int f=0;f<3;f++){ 
	   for(int s=3;s<6;s++){
	     if(ku[k][f][s]==ku[k][i][j]){
	       if(f!=i && s!=j)map[k][i][j]=1;
	     }
	   }
	 }
      }
      else if(i<=2 && j>=6){       //3*3 3 
	 for(int f=0;f<3;f++){
	   for(int s=6;s<9;s++){
	     if(ku[k][f][s]==ku[k][i][j]){
	       if(f!=i && s!=j)map[k][i][j]=1;
	     }
	   }
	 }
      }
      else if(i>=2 && i<=5 && j<=2){       //3*3 4
	 for(int f=3;f<6;f++){
	   for(int s=0;s<3;s++){
	     if(ku[k][f][s]==ku[k][i][j]){
	       if(f!=i && s!=j)map[k][i][j]=1;
	     }
	   }
	 }
      }
      else if(i>=2 && i<=5 && j<=2 && j<=5){       //3*3 5 
	for(int f=3;f<6;f++){
	  for(int s=3;s<6;s++){
	    if(ku[k][f][s]==ku[k][i][j]){
	      if(f!=i && s!=j)map[k][i][j]=1;
	    }
	  }
	}
      }
      else if(i>=2 && i<=5 && j>=6){       //3*3 6 
	for(int f=3;f<6;f++){
	  for(int s=6;s<9;s++){
	    if(ku[k][f][s]==ku[k][i][j]){
	      if(f!=i && s!=j)map[k][i][j]=1;
	    }
	  }
	}
      }
      else if(i>=6 && j<=2){       //3*3 7 
	 for(int f=6;f<9;f++){
	   for(int s=0;s<3;s++){
	     if(ku[k][f][s]==ku[k][i][j]){
	      if(f!=i && s!=j)map[k][i][j]=1;
	     }  
	   } 
	 } 
      }
      else if(i>=6 && j>=2 && j<=5){       //3*3 8
	 for(int f=6;f<9;f++){
	   for(int s=3;s<6;s++){
	     if(ku[k][f][s]==ku[k][i][j]){
	      if(f!=i && s!=j)map[k][i][j]=1;
	     }
	   }
	 }
      }
      else if(i>=6 && j>=6){       //3*3 9
	 for(int f=6;f<9;f++){
	   for(int s=6;s<9;s++){
	     if(ku[k][f][s]==ku[k][i][j]){
	       if(f!=i && s!=j)map[k][i][j]=1;
	     }
	   }
	 }
       }   
   }
 }
  }   
  for(int s=0;s<n;s++){
    for(int i=0;i<9;i++){
      for(int j=0;j<9;j++){
	if(map[s][i][j]==0)cout<<' '<<ku[s][i][j];
	else if(map[s][i][j]==1)cout<<'*'<<ku[s][i][j];
      }  
      cout<<endl;
    }
    if(s!=n-1)cout<<endl;
  }

  return 0;
}

C++: #include<iostream>
#include<vector>

using namespace std;

int main(void){
  int n ;
  cin>>n;
  while(n--){
    vector<vector<char> > in(9,vector<char>(9));
    vector<vector<bool> > ans(9,vector<bool>(9,false));
    vector<vector<int> > usedx(9,vector<int>(9,-1));
    vector<vector<int> > usedy(9,vector<int>(9,-1));
    vector<vector<int> > usedz(9,vector<int>(9,-1));

    for(int i = 0 ; i < 9 ; i ++){
      for(int j = 0 ; j < 9 ; j ++){

	cin>>in[i][j];
	in[i][j] = in[i][j] - '1';
	
	if(usedx[i][in[i][j]] == -1){
	  usedx[i][in[i][j]] = j;
	}else{
	  ans[i][j] = true;
	  ans[i][usedx[i][in[i][j]]] = true ;
	}

	if(usedy[in[i][j]][j] == -1){
	  usedy[in[i][j]][j] = i;
	}else{
	  ans[i][j] = true;
	  ans[usedy[in[i][j]][j]][j] = true;
	}
	
	//cout<<(int)in[i][j]<<" "<<i<<" "<<j<<" "<<i/3*3+j/3<<endl;
	if(usedz[i/3*3+j/3][in[i][j]] == -1){
	  usedz[i/3*3+j/3][in[i][j]] = i*10+j;
	}else{
	  ans[i][j] = true;
	  ans[usedz[i/3*3+j/3][in[i][j]]/10][usedz[i/3*3+j/3][in[i][j]]%10] = true;
	}
      }
    }
    
    for(int i = 0 ; i < 9 ; i ++){
      for(int j = 0 ; j < 9 ; j ++){
	if(ans[i][j])cout<<"*";
	else cout<<" ";
	cout<<(int)in[i][j]+1;
      }
      cout<<endl;
    }
    if(n!=0)cout<<endl;
  }
}

C++: #include<iostream>
using namespace std;
const int n=9;

int main()
{
	int m;cin>>m;
	for(int i=0;i<m;i++)
	{
		if(i)cout<<endl;
		int b[n][n]={};
		for(int j=0;j<n;j++)
		{
			for(int k=0;k<n;k++)
			{
				cin>>b[j][k];
			}
		}
		bool v[n][n];
		for(int j=0;j<n;j++)
		{
			for(int k=0;k<n;k++)
			{
				v[j][k]=false;
			}
		}
		for(int j=0;j<n;j++)
		{
			for(int k=0;k<n;k++)
			{
				for(int l=0;l<n;l++)
				{
					if(k!=l)
					{
						if(b[k][j]==b[l][j])
						{
							v[k][j]=v[l][j]=true;
						}
					}
				}
			}
		}
		for(int j=0;j<n;j++)
		{
			for(int k=0;k<n;k++)
			{
				for(int l=0;l<n;l++)
				{
					if(k!=l)
					{
						if(b[j][k]==b[j][l])
						{
							v[j][k]=v[j][l]=true;
						}
					}
				}
			}
		}
		for(int j=0;j<3;j++)
		{
			for(int k=0;k<3;k++)
			{
				for(int l=0;l<3;l++)
				{
					for(int u=0;u<3;u++)
					{
						for(int y=0;y<3;y++)
						{
							for(int t=0;t<3;t++)
							{
								if(l!=y&&u!=t)
								{
									if(b[j*3+l][k*3+u]==b[j*3+y][k*3+t])
									{
										v[j*3+l][k*3+u]=v[j*3+y][k*3+t]=true;
									}
								}
							}
						}
					}
				}
			}
		}
		for(int j=0;j<n;j++)
		{
			for(int k=0;k<n;k++)
			{
				if(v[j][k])cout<<"*";
				else cout<<" ";
				cout<<b[j][k];
			}
			cout<<endl;
		}
	}
	return 0;
}