64,674
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#define N 5
void main() {
int v[N][N] = { 0 };
int count = 0;
for (int i = 0; i < N; ++i) {
for (int j = 0; j <= i; ++j) {
if (i % 2 == 0)
v[j][i - j] = ++count;
else
v[i - j][j] = ++count;
}
}
for (int i = 1; i < N; ++i) {
for (int j = i; j < N; ++j) {
if ((N - i) % 2 == 0)
v[N + i - 1 - j][j] = ++count;
else
v[j][N + i - 1 - j] = ++count;
}
}
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
printf("| %-3d", v[i][j]);
}
printf("|\n");
}
getchar();
}
//定义一个m行n列的数组,比如3行4列
// 1 2 4 7
// 3 5 8 10
// 6 9 11 12
#include <stdio.h>
#include <conio.h>
int a[20][20];
int m,n;
int x,y;
int d;
void find_first_0(int *fx,int *fy) {
int i,j;
*fx=0;
*fy=0;
for (i=0;i<m;i++) {
for (j=0;j<n;j++) {
if (0==a[i][j]) {
*fx=j;
*fy=i;
return;
}
}
}
}
void main() {
printf("Input m(1..20),n(1..20):");
scanf("%d,%d",&m,&n);
if (m<1 || 20<m || n<1 || 20<n) return;
for (y=0;y<m;y++) for (x=0;x<n;x++) a[y][x]=0;
d=1;
x=0;
y=0;
while (1) {
a[y][x]=d;
d++;
while (1) {
x--;
if (x<0) break;
y++;
if (y>=m) break;
a[y][x]=d;
d++;
}
find_first_0(&x,&y);
if (0==x && 0==y) break;
}
for (y=0;y<m;y++) {
for (x=0;x<n;x++) {
printf("%2d ",a[y][x]);
}
printf("\n");
}
getch();
}
#include <stdio.h>
#include <stdlib.h>
// 正方形最大边长
#define MAX_LEN 10
// 就是从左下角向右上角填充数组即可
// 填充完成后按格式打印
int main(int argc, char* argv[])
{
int array[MAX_LEN][MAX_LEN] = {0};
const int edge_length = 5;
int count = 0;
// 左上角
for (int i = 0; i < edge_length; ++i)
{
for(int j = 0; j <= i; j++)
{
array[i-j][j] = ++count;
}
}
// 右下角
for (int i = 1; i < edge_length; ++i)
{
for(int j = i; j < edge_length; j++)
{
array[j][edge_length + i - 1 - j] = ++count;
}
}
// 按格式输出
for (int i = 0; i < edge_length; ++i)
{
for(int j = 0; j < edge_length; j++)
{
printf("|%4d", array[i][j]);
}
printf("|\n");
}
return 0;
}