程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> 用數字實現“之”型輸出 c語言

用數字實現“之”型輸出 c語言

編輯:C語言問答

用數字實現“之”型輸出 c語言

如下:輸入5:
1 2 6 7 15
3 5 8 14 16
4 9 13 17 22
10 12 18 21 23
11 19 20 24 25

輸入:7

1 2 6 7 15 16 28
3 5 8 14 17 27 29
4 9 13 18 26 30 39
10 12 19 25 31 38 40
11 20 24 32 37 41 46
21 23 33 36 42 45 47
22 34 35 43 44 48 49

好心人幫幫忙啊,十分感謝!!!

最佳回答:

何苦用匿名呢



#include <stdio.h>
int n;
int *data, *arr;

void Init ( void )
{
int i;
int *pd;
scanf ( "%d", &n );
pd = data = (int*) malloc ( sizeof(int) * n * n );
arr = (int*) malloc ( sizeof(int) * n * n );
for ( i = 1; i <= n * n; i++ )
{
*pd++ = i;
}
}

void End ( void )
{
free ( data );
free ( arr );
}

void Rev ( int b, int e )
{
int tmp;
int *p = data;
p--;
while ( e > b )
{
tmp = p[e];
p[e] = p[b];
p[b] = tmp;
e--;b++;
}
}

void Reverse ( void )
{
int i;
int b,e;
int nn = 2 * n;
b = 1; e = 1;
for ( i = 2; i <= n; i++ )
{
b = e + 1;
e = e + i;
if ( i % 2 ) continue;
Rev ( b, e );
}
for ( ; i < nn; i++ )
{
b = e + 1;
e = e + nn - i;
if ( i % 2 ) continue;
Rev ( b, e );
}
}

void Arrange ( void )
{
int i, r, c;
int *pd, *pa;
pd = data; pa = arr;
r = 0; c = 0;
for ( i = ( n * n ); i > 0; i-- )
{
pa[r*n+c] = *pd++;
r--; c++;
if ( c == n )
{
c = r + 2;
r = n - 1;
}
else if ( r == -1 )
{
r = c;
c = 0;
}
}
for ( i = n * n; i > 0; i-- ) data[i] = arr[i];
}

void Show ( void )
{
int i;
int *pd;
pd = data;
for ( i = n * n; i > 0; i-- )
{
printf ( "%4d ", *pd++ );
if ( i % n == 1 )
putchar ( '\n' );
}
}

int main ( void )
{
Init();
Reverse();
Arrange();
Show();
End();
return 0;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved