针对如何编程实现二维数组的从0到1包含所有形式的变化挑错

来源:百度知道 编辑:UC知道 时间:2024/06/07 04:22:54
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
int a[1000][100];
struct data
{
int row;int col;int dat;
};
void readDat()
{
FILE *in;
int i,j;
in=fopen("IN123.DAT","r");
for(i=0;i<1000;i++)
for(j=0;j<100;j++)
fscanf(in,"%d,",&a[0][0]);
fclose(in);
}
void main()
{
int i,j,k=0,t=0,b=0;struct data da[200000];int w[1000][100];
struct data *p; double f;int sum[20000];
readDat();
for(i=0;i<1000;i++)
for(j=0;j<100;j++)
{
w[i][j]=0;
if(a[i][j]!=0)
{da[k].row=i;da[k].col=j;da[k].dat=0;k++;}
}
f=pow(2.0,k);
for(i=0;i<(int)f-1;i++)
{
sum[i]=0;
p=(struct data *)da[0].dat;
while(*p+1>1)
{*p=0;p++;}
for(j=0;j<k;j++)
w[da[j].row][da[j].col]=da[j].dat;
for(j=0;j<1000;j++)
for(k=0;k<100

#include<stdlib.h>
#include<stdio.h>
#include<math.h>
int a[1000][100];
struct data
{
int row;int col;int dat;
};
void readDat(struct data *a) // 要加上struct data *a,不然你的&a[0][0]从哪里来的?
{
FILE *in;
int i,j;
in=fopen("IN123.DAT","r");
for(i=0;i<1000;i++)
for(j=0;j<100;j++)
fscanf(in,"%d,",&a[0][0]);
fclose(in);
}

void main()
{
int i,j,k=0,t=0,b=0;struct data da[200000];int w[1000][100];
struct data *p; double f;int sum[20000];
readDat(da); // 加上
for(i=0;i<1000;i++)
for(j=0;j<100;j++)
{
w[i][j]=0;
if(da[i][j]!=0) // if(a[i][j]!=0)原来的少了d!
{da[k].row=i;da[k].col=j;da[k].dat=0;k++;}
}
f=pow(2.0,k);
for(i=0;i<(int)f-1;i++)
{
sum[i]=0;
p=(struct data *)da[0].dat; // da[0].dat是int型
while(*p+1>1) //你的while循环