实验描述:下三角阵螺旋
注意事项:注意行和列索引都需要控制,t2和t
应用程序:
#include<stdlib.h>
#include<stdio.h>
int counts;
void execValue(int** store, int count, int num, int row, int col, int t, int t2)
{
int i;
int j;
for(j = col, i = row; j < num - t && i < num - t2 ; j++, i++)
{
store[i][j] = count++;
//printf("%d\n", store[i][j] );
}
i = num - t2 - 1;
for(j = j-2; j > col; j--)
{
store[i][j] = count++;
//printf("%d\n", store[i][j] );
}
j = col;
for(i = num -t2 -1; i > row; i--)
{
store[i][j] = count++;
//printf("%d\n", store[i][j] );
}
if(count > counts){
return;
}else{
execValue(store, count, num, row + 2, col + 1, t+2, t2 + 1);
}
}
int main(void)
{
int num;
printf("Please enter the length:");
scanf("%d", &num);
int** store =(int **)malloc(sizeof(int *) * num);
int i;
int j;
counts = 0;
for(i=0; i < num; i++){
store[i] = (int *)malloc(sizeof(int) * num);
counts += i+1;
}
for(i=0; i < num; i++){
for(j=0; j < num; j++)
store[i][j] = 0;
}
int count = 1;
int t = 0;
int t2 = 0;
execValue(store, count, num, 0, 0, t, t2);
for(i=0; i < num; i++){
for(j=0; j < num; j++)
if(store[i][j] > 0){
printf("%-4d ", store[i][j]);
}
printf("\n");
}
for(i=0; i < num; i++){
free(store[i]);
}
free(store);
return 0;
}