分类：电脑/网络-程序设计-C/C++
问题：这段C语句怎么没有输出结果!!!#include&lt;stdi 
#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 <stdio.h>#include<math.h>#include<stdlib.h>long fun(long x){ long i;long f;for(i=2;i<x;i++){f=x%i;if(f==0)break;}return f;}void main(){ long a[4][4],b[4][4],c[4][4],A[4][4],d[20];int i1,i2,i,j,m,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盘)怎么没有结果啊!!!到底是哪错了!!理论上没错啊!很简单啊!可是就是在文件中没结果!!我都想吐血!!!!!!!!!!*/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<k;i++)fprintf(fp,"%d ",d[i]);fclose(fp);}