注:文章内容来源于网络,真实性有待确认,请自行甄别。
这段C语句怎么没有输出结果!!!#include<stdi
发表于:2024-10-24 00:00:00浏览:8次
问题描述:#include <std.h>
#include<math.h>
#include<stdlib.h>
long fun(long x)
{ long i;
for(i=2;i<=(long)sqrt(x);i++)
if(x%i==0) return 0;
else if(i>=(long)sqrt(x)+1) return 1;
}
main()
{ long a[4][4],b[4][4],c[4][4],A[4][4],d[20];
int i1,i2#include <std.h>
#include<math.h>
#include<stdlib.h>
long fun(long x)
{ long i;
for(i=2;i<=(long)sqrt(x);i++)
if(x%i==0) return 0;
else if(i>=(long)sqrt(x)+1) return 1;
}
main()
{ long a[4][4],b[4][4],c[4][4],A[4][4],d[20];
int i1,i2,i,j,m,t,k=0;
FILE *fp;
fp=fopen("d:\\矩阵运算.txt","w");
if(fp==NULL){printf("Can not open the file!");exit(0);}
srand(time(NULL));
fprintf(fp,"A:\n");
for(i1=0;i1<4;i1++)
{ for(i2=0;i2<4;i2++)
{ m=rand();
while(m>=100||m<10)
m=rand();
a[i1][i2]=m;fprintf(fp,"%d ",m);
}
fprintf(fp,"\n");
}
fprintf(fp,"B: \n");
for(i1=0;i1<4;i1++)
{ for(i2=0;i2<4;i2++)
{ m=rand();
while(m>=1000||m<100)
m=rand();
b[i1][i2]=m;fprintf(fp,"%d ",m);
}
fprintf(fp,"\n");
}
fprintf(fp,"A+B :\n");
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{ c[i][j]=a[i][j]+b[i][j];
fprintf(fp,"%d ",c[i][j]);
}
fprintf(fp,"\n");
}
fprintf(fp,"A*B :\n");
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{ c[i][j]=a[i][j]*b[i][j];
fprintf(fp,"%ld ",c[i][j]);
}
fprintf(fp,"\n");
}
fprintf(fp,"A矩阵转置 :\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
A[i][j]=a[j][i];
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
fprintf(fp,"%d ",A[i][j]);
fprintf(fp,"\n");
}
/*前面的三个求两个矩阵相加,相乘,转置均正确显示出结果,可下面的语句段(将相乘后矩阵中所有的素数放进一个一维数组中,并输出显示结果在D盘)怎么没有结果啊!!!到底是哪错了!!理论上没错啊!很简单啊!可是就是在文件中没结果!!
我都想吐血!!!!!!!!!!*/
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(fun(c[i][j]))
{ d[k++]=c[i][j]; /*fprintf(fp,"c[i][j] ");*/}
for(i=0;i<k;i++)
fprintf(fp,"%d ",d[i]);
fclose(fp);
}
你的FUN有问题~有一个WARNING..我在你原来的程序上修改了一下~可以输出了~*^^*
本人编程比较菜~如改的不好希望各位高手不要计较
#include
#include
#include
long fun(long x)
{ long i;long f;
for(i=2;i=100||m<10)
m=rand();
a[i1][i2]=m;fprintf(fp,"%d ",m);
}
fprintf(fp,"\n");
}
fprintf(fp,"B: \n");
for(i1=0;i1<4;i1++)
{ for(i2=0;i2<4;i2++)
{ m=rand();
while(m>=1000||m<100)
m=rand();
b[i1][i2]=m;fprintf(fp,"%d ",m);
}
fprintf(fp,"\n");
}
fprintf(fp,"A+B :\n");
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{ c[i][j]=a[i][j]+b[i][j];
fprintf(fp,"%d ",c[i][j]);
}
fprintf(fp,"\n");
}
fprintf(fp,"A*B :\n");
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{ c[i][j]=a[i][j]*b[i][j];
fprintf(fp,"%ld ",c[i][j]);
}
fprintf(fp,"\n");
}
fprintf(fp,"A矩阵转置 :\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
A[i][j]=a[j][i];
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
fprintf(fp,"%d ",A[i][j]);
fprintf(fp,"\n");
}
/*前面的三个求两个矩阵相加,相乘,转置均正确显示出结果,可下面的语句段(将相乘后矩阵中所有的素数放进一个一维数组中,并输出显示结果在D盘)怎么没有结果啊!!!到底是哪错了!!理论上没错啊!很简单啊!可是就是在文件中没结果!!
我都想吐血!!!!!!!!!!*/
fprintf(fp,"两矩阵相乘后所有的素数 :\n");
long z;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
z=fun(c[i][j]);
/*printf("%d ",z);所编的程序无错,Z全为0,全不是素数*^^**/
if(z==1)
{ d[k++]=c[i][j]; /*fprintf(fp,"c[i][j] ");*/}}
for(i=0;i
栏目分类全部>