#include
void fun(int m, int k, int xx[])
{
int j,n=0,a,b=0;
while(n<k)
{
a=m+1;
for(j=1;j<a;j++)
{
if(a%j==0)
b++;
}
if(b==0)
xx[n++]=a;
}
xx[n]=0;
}
main()
{
int m, n, zz[1000] ;void NONO ();
printf("\nPlease enter two integers:");
scanf("%d %d", &m, &n);
fun(m, n, zz);
for(m = 0 ; m < n ; m++)
printf("%d ", zz[m]);
printf("\n");
NONO();
}
void NONO ()
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
int m, n, zz[1000], i ;
FILE *rf, *wf ;
rf = fopen("in.dat","r");
wf = fopen("out.dat","w");
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%d %d", &m, &n);
fun(m, n, zz);
for(m = 0 ; m < n ; m++) fprintf(wf, "%d ", zz[m]);
fprintf(wf, "\n");
}
fclose(rf);
fclose(wf);
}
请问该fun 函数中哪里错了,大神指点迷津
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
9条回答 默认 最新
- yyfbuzhidao 2015-08-04 16:43关注
有以下几点不对:
1.fun()函数不对,有死循环,每次a都等于m+1,
//你的逻辑
void fun(int m, int k, int xx[])
{
int j,n=0,a,b=0;//这里一大堆错,b不能放在循环外面,否则b永远不可能为0,a每次要++while(n<k) { a=m+1; for(j=1;j<a;j++) { if(a%j==0) b++; } if(b==0) xx[n++]=a; } xx[n]=0;
}
//该进之后
void fun(int m, int k, int xx[])
{
if (NULL == xx || m <= 0 || k <= 0)
{
return;
}int a = m + 1; int n = 0; if (1 == m) { xx[n++] = 2; a++; } while(n < k) { int j; int b = 0; for(j = 2;j < a;j++)//从2开始 { if((a%j) == 0) { b++;//一次不满足直接退出; break; } } if(b == 0) { xx[n++]=a; } a++; } xx[n]=0;
}
//我的版本
void fun(int m, int k, int xx[])
{
if (NULL == xx || m <= 0 || k <= 0)
{
return;
}int iCount = 1; while (k > 0) { int iTemp = m + iCount; if (2 == iTemp) { *xx++ = iTemp; k--; } else if (1 == (iTemp & 1)) { iTemp = (iTemp + 1) / 2; while (iTemp >= 2) { if (0 == ((m + iCount)%iTemp)) { break; } iTemp--; } if (1 == iTemp) { *xx++ = m + iCount; k--; } } iCount++; } *xx = 0;
}
2.文件流操作不对,这个不多说,不是重点
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器