rakish
|
分享:
▲
▼
複製程式
main()
{
int c=0,r=0,count=1;
int i=0,j=0,n=5;
int a[9][9];
for(i=0;i<n;i++){
for(j=0;j<=i;j++){
a[c][r]=count;
a[n-1-c][n-1-r]=n*n-count+1;
if(c-1<0){c=i+1;r=0;}else{c--;r++;}
count++;
}
}
}
n=4 說明 i j 0 0 [0,0]=1, [3,3]=16 1 0 [1,0]=2 ,[2,3]=15 1 1 [0,1]=3 ,[3,2]=14 2 0 [2,0]=4 ,[1,3]=13 2 1 [1,1]=5 ,[2,2]=12 2 2 [0,2]=6 ,[3,1]=11 3 0 [3,0]=7 ,[0,3]=10 3 1 [2,1]=8 ,[1,2]=9 3 2 [1,2]=9 ,[2,1]=8 3 3 [0,3]=10,[3,0]=7 好久沒寫C摟...現在都用什麼compiler阿?? 相同的方法..第二題用一個迴圈應該可以搞定 發現在Z整除n 的時候會轉一次方向
[ 此文章被rakish在2005-11-24 21:16重新編輯 ]
|
人一但長大了 就發現世上的事不像想的那麼好 你總是會一天天長大的 會看得越來越清楚
|
x1
[4 樓]
From:台灣
| Posted:2005-11-24 20:54 |
|
|
mmpo
|
分享:
▲
複製程式
#include <stdio.h>
#include <stdlib.h>
int main(){
int i1,i2,j1,j2,k;
int num=1,**n;
printf("input a number :");
scanf("%d",&k);
n=(int**)malloc(sizeof(int*)*k);
n[0]=(int*)malloc(sizeof(int)*k*k);
for(i1=1;i1<k;i1++)
n[i1]=n[0]+k*i1;
for(i1=0,i2=0 ; (i1<k)&&(i2<k) ; (i1==k-1)&&i2++,(i1!=k-1)&&i1++)
for(j1=i1,j2=i2; (j1>-1)&&(j2<k) ;j1--,j2++)
n[j1][j2]=num++;
for(i1=0;i1<k;i1++){
for(i2=0;i2<k;i2++)
printf("%5d",n[i1][i2]);
printf("\n");
}
//system("pause");
return 0;
}
複製程式
#include <stdio.h>
#include <stdlib.h>
int main(){
int i,j,k,num=1;
int **n;
printf("input a number :");
scanf("%d",&k);
n=(int**)malloc(sizeof(int*)*k);
n[0]=(int*)malloc(sizeof(int)*k*k);
for(i=1;i<k;i++)
n[i]=n[0]+k*i;
for(i=0;i<k;i++)
for( (i+1)%2&&(j=0) , (i+1)%2==0&&(j=k-1) ; j<k&&j>-1 ; (i+1)%2&&(j++),(i+1)%2==0&&(j--))
n[i][j]=num++;
for(i=0;i<k;i++){
for(j=0;j<k;j++)
printf("%3d",n[i][j]);
printf("\n");
}
//system("pause");
}
|
|
x1
[5 樓]
From:台灣中華電信
| Posted:2005-11-26 10:18 |
|
|
|