改动数行,就可以满足所有程序的功能,请问:怎么改??
我的上一个贴,是a[][7][7],已经成功完成了谢谢大佬们,现在我想把这个题目延伸一下,就以a[][7][7]为原型(a[][7][7]是可以正常运行的),a[][7][7]的原代码如下:1#include<stdio.h>
2#include <stdlib.h>
3#define N 7//E
4static void _fun( int,int,int** );
5void print(FILE* fp, const int a[][N][N] );
6int main( )
7{
8 int i,j;
9 int a[27][N][N];//F
10 int* p=NULL;
11 FILE *fp;
12 if ((fp = fopen ("D:\\数组7和7.txt", "a+")) == NULL)//G
13 {
14 printf("打开文件失败\n");
15 exit(1);
16 }
17 for (i=0;i!=27;++i)//H
18 {
19 p=a[i][1];
20 {
21 for (j=1;j!=N+1;++j)
22 a[i][0][j-1]=j;
23 }
24 _fun(i,~1,&p);
25 _fun(i,1+N%2,&p);
26 }
27 print(fp, a);
28 fclose(fp);
29 return 0;
30}
31static void _fun( int k,int n,int** p )
32{
33 if (n>0)
34 _fun(k/3,n-1,p);
35 {
36 int i=N+1;
37 while (--i)
38 {
39 **p=k%3;
40 ++*p;
41 }
42 }
43 if (n<0)
44 _fun(k/3,n+1,p);
45}
46void print(FILE* fp, const int a[][N][N] )
47{
48 size_t i;
49 for (i=0;i!=27;++i)//I
50 {
51 size_t j;
52 fprintf(fp,"i = %d\n",i);
53 for (j=0;j!=N;++j)
54 {
55 size_t k;
56 for (k=0;k!=N;++k)
57 fprintf(fp,"%-4d",a[i][j][k]);
58 fprintf(fp,"\n");
59 }
60 fprintf(fp,"\n");
61 }
62}
最左边的一列数字表示的是该程序的该行的行号。
现在我想在a[][7][7]的基础上修改某一行或者几行就可以完成a[][N][N](N为大于5的整数 )的所有相关程序的编程(N的最大值暂时定为20吧)。N=6 和N=8 我已经编写好了,见下表:
说明:第一行的数字3,9,12,17,25,49 指的是该程序的行号。其他的a[][9][9]到a[][20][20]我就不清楚了,请问这个表该怎么填呢??
[此贴子已经被作者于2018-4-23 10:46编辑过]