#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int sudo[9][9];
int i,j,ie,je,row,column,square;
start:
ie = 0,je = 0,row = 0,column = 0,square = 0;
for(i = 0;i < 9;i++){
for(j = 0;j < 9;j++){
scanf("%d",&sudo[i][j]);
}
}
for (i = 0;i < 9; i++){
for(j = 0;j < 9;j++){
row += sudo[i][j];
}
if (row != 45){
printf("no\n");
goto start;
}
row = 0;
}
for (j = 0;j < 9; j++){
for(i = 0;i < 9;i++){
column += sudo[i][j];
}
if (column != 45){
printf("no\n");
goto start;
}
column = 0;
}
do{
for (i = ie;i < ie + 3;i++){
for(j = je;j < je + 3;j++){
square += sudo[i][j];
}
}
if (square != 45){
printf("no\n");
goto start;
}
square = 0;
je += 3;;
if (j == 9 && i == 3){
ie = 3;
je = 0;
}
if (j == 9 && i == 6){
ie = 6;
je = 0;
}
if (i == 9 & j == 9){
ie = 9;
}
}while(i != 9);
printf("yes\n");
goto start;
return 0;
}
沒有結束點。可判斷scanf傳回值來結束。
請參考其他程式的讀取資料部份。
int m;
start:
ie = 0,je = 0,row = 0,column = 0,square = 0;
for(i = 0;i < 9;i++){
for(j = 0;j < 9;j++){
m=scanf("%d",&sudo[i][j]);
if(m==-1) return 0;
if(m==0) j--;
}
}