首页 > 电脑

c语言在线请教

更新时间2022-03-17 16:23:12

#include <stdio.h>#include"conio.h"void  wwjt();   long fun(int n){ long i,k; long s=1; for(i=2;i<=n;i++)  for(k=2;k<i;k++)  {   if(i%k==0)    break;   if(k==i)    s*=i;  }  return s;  }
main()   {  int  m;  printf("Enter m: ");  scanf("%d", &m);  printf(" The result is %ld ", fun(m));  wwjt();}  
void wwjt(){  FILE *IN,*OUT;  int c ;  int t;  long o;    IN=fopen("in.dat","r");  if(IN==NULL)  {    printf("Read FILE Error");  }  OUT=fopen("out.dat","w");  if(OUT==NULL)  {    printf("Write FILE Error");  }   for(c=1;c<=5;c++)  {     fscanf(IN,"%d",&t);    o=fun(t);    fprintf(OUT,"%ld ",o);  }  fclose(IN);  fclose(OUT);}
为什么这个运行的结果一直都是1???

你的

  if(k==i)

位置不对,它永远不可能相等

若k<i时, if(i%k==0) 跳出循环,执行不到if(k==i)

若k==i,循环结束了,也不能执行到if(k==i)

虽然不知你程序的目的,但估计是你的{}写错了(位置不对,且漏了)

以下改好的,可以求素数的乘积

long fun(int n) {
   long i,k;
   long s=1;
   for(i=2; i<=n; i++) {
       for(k=2; k<i; k++)  {
           if(i%k==0)
               break;
       }
       if(k==i)
           s*=i;
   }
   return s;
}


相关标签:c语言

上一篇:系统在传输封装数据时,系统是怎么解决数据的实时性问题

下一篇:Python求一个能有效加密python代码的方法