帮忙看看这个C语言三级上机题程序哪错了

来源:百度知道 编辑:UC知道 时间:2024/06/03 19:06:09
题目:
请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。
最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。
部分源程序存在文件prog1.c中。
例如:若输入17 5 则应输出:19,23,29,31,37。
请勿改动主函数main()和写函数writeDat()的内容。

我的答案:
void num(int m, int k, int xx[])
{
int a,b,c;
b=c=0;
while(m)
{
m=m++;
for(a=2;a<m;a++)
{
if(m%a==0)c++;
}
if(c=0)
{
xx[b]=m;
b++;
}
else continue;
if(b>k)break;
}
}

帮我看看哪里错了
#include <conio.h>
#include <stdio.h>
void rwdata();
void primenum(int m, int k, int array[])
{
}
}
main()
{ int m, n, array[1000];
printf("\nPlease enter two integers:");
scanf("%d%d", &m, &n);
primenum(m, n, array

把整个程序弄出来,而且分数提高点

m=m++;
后因加上c=0

你只看了比m大的数,没看比m小的数

如果还有问题,可按照下面的方法与我沟通:
http://hi.baidu.com/%BA%CE%D6%BE%B5%A4/profile

楼上正解

还有,
for(a=2;a<m;a++)
{
if(m%a==0)c++;
}
这里改成
for(a=2;a<m;a++)
{
if(m%a==0) c=1; //作标记用
if(c=1) braek;
else continue;
}
这样,当m是合数的时候就不用算那么多步了,是吧?

最后一句错了。。
if(b>k)break;
改成 if(b == k)break;
这样就行了,因为你找到一个数的时候xx[0] = m 时;b++;这个时候b==1(找到一个),所以当b==k的时候已经是K个了应该break;

还有一个问题while(m) 这里为什么要用while(m)呢?很明显,这里用while(1)就行了,如果你用while(m)的话,你看看这组输入,(0,5) 0是整数吧,这样的输入你的程序能输出什么?整个都不执行。

m=m++;这里也写得不好,直接m++;就可以了。不是吗?

这是给改好的程序:
#include <conio.h>
#include <stdio.h>
void rwdata();
void primenum(int m, in