返回列表 发帖

高手帮忙看哈这个C程序,一直错唉 急!!

高手帮忙看哈这个C程序,一直错唉 急!!

#include <stdio.h>
#define MAX  200
int a[MAX], b[MAX], cnt = 0 ;
void writeDat();
int isprime(int m)
{
  int i ;
  for(i = 2 ; i <= m/2 ; i++)
   if(m % i == 0) return 0 ;
  return 1 ;
}

void jsVal()
{
        int i, m,b,c,d,mc,db;
for( i = 0 ; i <= 200 ; i++)
{
        m=a[i]/1000;
        b=(a[i]-1000*m)/100;
        c=(a[i]-1000*m-100*b)/10;
        d=a[i]-1000*m-100*b-10*c;
        mc=10*m+c;
        db=10*d+b;
if(isprime(mc)==1 && isprime(db)==1&&mc!=0&&db!=0)
{
b[cnt]=mc;
cnt++;
b[cnt]=db;

cnt++;

}


}
}




void readDat()
{
  int i ;
  FILE *fp ;
  fp = fopen("in.dat", "r") ;
  for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ;
  fclose(fp) ;
}

void main()
{
  int i ;
  readDat() ;
  jsVal() ;
  printf("满足条件的数=%d\n", cnt) ;
  for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;
  printf("\n") ;
  writeDat() ;
}

void writeDat()
{
  FILE *fp ;
  int i ;
  fp = fopen("K:\\K78\\35000614\\out.dat", "w") ;
  fprintf(fp, "%d\n", cnt) ;
  for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\n", b[i]) ;
  fclose(fp) ;
}

太让我失望了   ,我原以为科院高手比较多  原来不过如此    这个程序jsVal()
中变量局部变量b和全局数组冲突  只要把函数里变量b换成其他的如w即可    !!!
1

评分人数

TOP

c 用malloc函数   c++用new
fd

TOP

还有动态数组 申请空间
fd

TOP

"fp = fopen("in.dat", "r") ;"    你的文件放哪里 里面的数据呢   怎么读出来
fd

TOP

"fp = fopen("in.dat", "r") ;"我可以负责任的告诉你,这行没有错!

TOP

fp = fopen("in.dat", "r") ;
这里没有给你的文件路径!~~~~~

TOP

首先你的写法不是很规范,main函数要放在最前,然后子函数跟在后面。
一般出现错误以后,双击你的错误,他就会告诉你是哪一行出错了,然后稍微读一下就明白了
欢迎大家来我的个人博客
地址:小枫's Blog

TOP

不知道对不对······你要从一个文件里读取数据,在筛选,符合你规则的显示,并写会你的文件。
绿漠 发表于 2010-3-24 22:45



    哥的偶像啊···周末考三级 要是你在我身边就好了

TOP

prog1.c
H:\NCRE31\35000614\prog1.c(26) : error C2109: subscript requires array or pointer type
H:\NCRE31\35000614\prog1.c(26) : error C2106: '=' : left operand must be l-value
H:\NCRE31\35000614\prog1.c(28) : error C2109: subscript requires array or pointer type
H:\NCRE31\35000614\prog1.c(28) : error C2106: '=' : left operand must be l-value
Error executing cl.exe.

prog1.obj - 4 error(s), 0 warning(s)

TOP

非常感谢

TOP

楼上大哥“文件里读取数据,在筛选,符合你规则的显示,并写会你的文件。”不错,但是m不会是是随机值,修改后任然不行哎

TOP

不知道对不对······你要从一个文件里读取数据,在筛选,符合你规则的显示,并写会你的文件。

TOP

void jsVal()
{
        int i, m,b,c,d,mc,db;
for( i = 0 ; i <= 200 ; i++)
{
        m=a[i]/1000;
        b=(a[i]-1000*m)/100;
        c=(a[i]-1000*m-100*b)/10;
        d=a[i]-1000*m-100*b-10*c;
        mc=10*m+c;
        db=10*d+b;
if(isprime(mc)==1 && isprime(db)==1&&mc!=0&&db!=0)
{
b[cnt]=mc;
cnt++;
b[cnt]=db;

cnt++;

}


}
}

这个函数里面的m是个随机值,for循环里面i<=200超出你所定义的数组

TOP

返回列表