Viết ma trận vuông xoáy cấp n

#include <stdio.h>
#include <conio.h>
#include <math.h>
int main(){
	int i=1,j=1,d=1,n;
	int a[100][100];
	printf("Nhap cap ma tran xoay :");
	scanf("%d",&n);
	a[0][1]=1;
	a[n+1][1]=1;
	a[0][n]=1;
	a[n][n+1]=1;
	while(d<=n*n){
			while(a[i][j]==0){
				a[i][j]=d;
				d++;
				j++;		
			}
			i++;j--;
			while(a[i][j]==0){
				a[i][j]=d;
				d++;
				i++;
			}
			i--;j--;
			while(a[i][j]==0){
				a[i][j]=d;
				d++;
				j--;
			}
			j++;i--;
			while(a[i][j]==0){
				a[i][j]=d;
				d++;
				i--;
			}
			i++;j++;
	}
	for(i=0;j<n;i++){  
		for(i=0;j<n;j++){  
			printf("%d\t",a[i][j]);  
	}  
		printf("\n");  
	}  
	return 0;
}```
kết quả : 
Nhap cap ma tran xoay :3
1       2       3
101     102     0
201     0       203

--------------------------------
Process exited after 1.701 seconds with return value 0
Press any key to continue . . .

Sentinel ở dòng 0
Điền vào dòng 1 :smiley:

vì vậy sentinel không có tác dụng.

là sao ạ ? em không hiểu

Tham khảo:

Javascript
// input
//var n = Number(prompt("Nhập n"));
var n = 9;

var d = 0; // direction.
var D = [[0,1],[1,0],[0,-1],[-1,0]]; // clockwise.
//var D = [[1,0],[0,1],[-1,0],[0,-1]]; // anti-clockwise.

var c = i = j = 0; // count, i, j.
var w = n,  h = n; // height, width for any rectangle.
var a = Array(h).fill(0).map(x => Array(w).fill(0)); // a[h][w];

while(c<h*w){
  // put value
  a[i][j] = ++c;
  
  // move next
  i+=D[d][0];
  j+=D[d][1];
  // check next valid
  if((i<0||i>=h)||(j<0||j>=w)||a[i][j]){ // a[i][j]!=0
    // not valid
    // return old value
    i-=D[d][0];
    j-=D[d][1];
    // change direction
    d=(d+1)%4;
    // safe move next
    i+=D[d][0];
    j+=D[d][1];
  }
}
// Result
var r ="";
for(var i in a){
  for(var j in a[i]){
    r+=a[i][j]+" ";
  }
  r+="\n";
}
console.log(r);
document.body.innerText = r;

Có lẽ code này ko phải của bạn :smiley:

đây là bài tập thầy cho…mấy bạn sửa em chép vô thôi mà chạy không ra

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?