C语言的大神帮我看看哪里写错了?

上课按着老师的代码拔的,但是编译老师提示错误,自己怎么也找不出来,求C语言大神帮忙看看,万分感谢!!!代码和图片都给大家。#include <stdio.h>int isPrime(int x, int KnownPrimes[], int numberOfKnownPrimes );int main(void){ const int number=10; int prime [number]={2,}; int count = 1; int i = 3; while ( count< number) { if(isPrime(i,prime,count)) { prime[count++] = 1; } i++; } for(i=0; i<number; i++){ printf("%d",prime[i]); if((i+1)%5)printf("\t"); else printf("\n"); } return 0;}int isPrime(int x,int KnownPrimes[],int numberOfKnownPrimes){ int ret = 1; int i; for(i=0;i<numberOfKnownPrimes;i++){ if(x%KnownPrimes[i] ==0){ ret=0; break; } } return ret;}

已经修改完成,运行通过:

#include <stdio.h>

int isPrime(int x, int KnownPrimes[], int numberOfKnownPrimes );

int main(void)

{ const int number=10;

  int prime [number]= {2}; //有修改 

  int count = 1;

  int i = 3;

  while ( count< number)

  { if(isPrime(i,prime,count))

    { prime[count++] = i; //有修改

    }

    i++;

  }

  for(i=0; i<number; i++)

  { printf("%d",prime[i]);

    if((i+1)%5)printf("\t");

    else printf("\n");

  }

  return 0;

}

int isPrime(int x,int KnownPrimes[],int numberOfKnownPrimes)

{ int ret = 1;

  int i;

  for(i=0; i<numberOfKnownPrimes; i++)

  { if(x%KnownPrimes[i] ==0)

    { ret=0;

      break;

    }

  }

  return ret;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-06-30
1、该代码在vs2019下是正常通过的
2、你所用的编译器已经很清晰地提示了,变长数组不允许初始化。这可能是c99语法规则的限制,你可以把.c文件改成.cpp也许就过了
所以你最好了解一下老师是在什么环境下写代码的,尽可能在初学阶段避免这些麻烦。当然,很多问题知道出在哪了,解决就相对简单了
第2个回答  2021-06-30

可变长数组,要求编译器支持C99标准

开启编译器的C99支持选项,具体方法自行搜索对应编译器关键字

相似回答