- 相關(guān)推薦
編寫一個程序:輸入N,打印N*N矩陣
比如 N = 3,打印:
1 2 3
8 9 4
7 6 5
N = 4,打。
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
1 #define N 15
int s[N][N];
void main()
{
int k = 0, i = 0, j = 0;
int a = 1;
for( ; k < (N+1)/2; k++ )
{
while( j < N-k ) s[i][j++] = a++; i++; j--;
while( i < N-k ) s[i++][j] = a++; i--; j--;
while( j > k-1 ) s[i][j--] = a++; i–; j++;
while( i > k ) s[i--][j] = a++; i++; j++;
}
for( i = 0; i < N; i++ )
{
for( j = 0; j < N; j++ )
cout << s[i][j] << '\t';
cout << endl;
}
}
2 define MAX_N 100
int matrix[MAX_N][MAX_N];
/*
*(x,y):第一個元素的坐標(biāo)
* start:第一個元素的值
* n:矩陣的大小
*/
void SetMatrix(int x, int y, int start, int n) {
int i, j;
if (n <= 0) //遞歸結(jié)束條件
return;
if (n == 1) { //矩陣大小為1時
matrix[x][y] = start;
return;
}
for (i = x; i < x + n-1; i++) //矩陣上部
matrix[y][i] = start++;
for (j = y; j < y + n-1; j++) //右部
matrix[j][x+n-1] = start++;
for (i = x+n-1; i > x; i–) //底部
matrix[y+n-1][i] = start++;
for (j = y+n-1; j > y; j–) //左部
matrix[j][x] = start++;
SetMatrix(x+1, y+1, start, n-2); //遞歸
}
void main() {
int i, j;
int n;
scanf(“%d”, &n);
SetMatrix(0, 0, 1, n);
//打印螺旋矩陣
for(i = 0; i < n; i++) {
for (j = 0; j < n; j++)
printf(“%4d”, matrix[i][j]);
printf(“\n”);
}
}
【編寫一個程序:輸入N,打印N*N矩陣】相關(guān)文章:
工程師的N種性格08-27
關(guān)于l跟n的繞口令08-21
求職不可不知的N個禮儀細節(jié)07-22
面試技巧;面試前需考慮的N個問題10-17
h7n9禽流感防治常識大全10-23
h7n9禽流感防治小常識08-06
H7N9型禽流感常識及預(yù)防措施09-12
高中數(shù)學(xué)《等差數(shù)列前n項和的公式》說課稿10-07
導(dǎo)游詞編寫的技巧06-01