| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1127 人关注过本帖
标题:改动数行,就可以满足所有程序的功能,请问:怎么改??
取消只看楼主 加入收藏
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
结帖率:93.33%
收藏
已结贴  问题点数:40 回复次数:4 
改动数行,就可以满足所有程序的功能,请问:怎么改??
我的上一个贴,是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编辑过]

搜索更多相关主题的帖子: int print FILE for fprintf 
2018-04-23 10:42
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:0 
当N=8的时候  是81啊 我运行过,正常。
2018-04-23 10:52
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:0 
回复 4楼 九转星河
你的代码很好,但是不好观看效果,最好能输出到文件里,然后可以通过打开文件的方法查看,就好了。我试试改改看。
2018-04-23 11:45
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:0 
#include<stdio.h>
#include <stdlib.h>
#define N 13
static void _fun( int,int,int** );
void print(FILE* fp, const int [][N][N] );
int a[1<<N][N][N];
int main( void )
{
   int i,j;
   int* p=NULL;
   unsigned k=1;
   FILE *fp;
    if ((fp = fopen ("D:\\数组13和13.txt", "a+")) == NULL)
    {
        printf("打开文件失败\n");
        exit(1);
    }
  for (i=0;i!=N/2;++i)
        k*=3;
   for (i=0;i!=k;++i)
    {
        p=a[i][1];
        {
            for (j=1;j!=N+1;++j)
                  a[i][0][j-1]=j;      
        }
       _fun(i,-(N/2-1),&p);
       _fun(i,N/2-1-(N+1)%2,&p);
    }
    print(fp, a);
    fclose(fp);
    return 0;
}
static void _fun( int k,int n,int** p )
{
     if (n>0)
        _fun(k/3,n-1,p);
   {
        int i=N+1;      
        while (--i)
        {
              **p=k%3;
              ++*p;
        }
   }
    if (n<0)
        _fun(k/3,n+1,p);
}
void print(FILE* fp, const int a[][N][N] )
{
    size_t i;
    unsigned k=1;
    for (i=0;i!=N/2;++i)
        k*=3;
    for (i=0;i!=k;++i)
    {
        size_t j;
        fprintf(fp,"i = %d\n",i);
        for (j=0;j!=N;++j)
        {
            size_t k;
            for (k=0;k!=N;++k)
                fprintf(fp,"%-4d",a[i][j][k]);
           fprintf(fp,"\n");
        }
        fprintf(fp,"\n");
    }
}
2018-04-23 11:53
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:0 
回复 9楼 wmf2014
必须要用到数组,因为我还要用数组来给每个数字定位,以便于好计算,计算也是很复杂的,我都编写好了计算的代码了。
2018-04-23 18:54
快速回复:改动数行,就可以满足所有程序的功能,请问:怎么改??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023457 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved