问答题

【说明】 设有3n+2个球互连,将自然数1~3n+2分别为这些球编号,使相连的两球编号之差的绝对值正好是数列1,2,…,3n+1中的各数,如下图所示:
其中填自然数的思想如下; (1)先自左向右,第1列中间1个填数,然后第2列上、下2个填数,每次2列;但若n为偶数,最后1次只排第1列中间一个数。 (2)自右向左,先右第1列中间填数;若n是奇数,再右第2列中间填数。然后依次右第1列上、下2个填数,再右第2列中间1个填数,直到左第2列为止。 【程序】 #include <stdio.h> #define size 10 int a[3][size]; void main() { int i,k,m,n; printf("imput the n:"); scanf("%d",&n); k=1; for(i=0; i<=n/2; i++) { a[1][2*i]=k; k++; if((i==n/2)&& (1) ||(i<n/2)) { a[0][2*i+1]=k; k++; (2) k++; } } if(n%2==1) { (3) k++; m=n; } else (4) for(i=0; i<n/2; i++) { a[1][m-2*i]=k; k++; (5) k++; a[2][m-2*i-1]=k; k++; } a[1][1]=k; printf("\n"); printf(" "); for(i=1; i<=n; i++) printf("%6d",a[0][i]); printf("\n\n"); for(i=0; i<=n+1; i++) printf("%6d",a[1][i]); printf("\n\n"); printf(" "); for(i=1; i<=n; i++) printf("%6d",a[2][i]); printf("\n"); }

【参考答案】

(1)(n%2==1) (2)a[2][2*i+1]=k; (3)a[1][n+1]=k; (4)m=n+1; (......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题