标题:一个上机题,下午就要考试,在线等!
只看楼主
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
结帖率:33.33%
 问题点数:0 回复次数:2 
一个上机题,下午就要考试,在线等!
#include <conio.h>
#include <stdio.h>
void readwriteDat();
void num(int m, int k, int xx[])
{
    int  data = m+1;
    int  half, n = 0, i;
    while(1)
    {
        half = data/2;
        for (i=2; i<=half; i++)
            if (data%i == 0)
                break;
        if (i > half)
        {
            xx[n] = data;
            n++;
        }
        if (n >= k)
            break;
        data++;
    }
}
main()
{
    int  m, n, xx[1000];
    printf("\nPlease enter two integers:");
    scanf("%d%d", &m, &n);
    num(m, n, xx);
    for (m=0; m<n; m++)
        printf("%d ", xx[m]);
    printf("\n");
    readwriteDat();
}
void readwriteDat()
{
    int  m, n, xx[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);
        num(m, n, xx);
        for (m=0; m<n; m++)
            fprintf(wf, "%d ", xx[m]);
        fprintf(wf, "\n");
    }
    fclose(rf);
    fclose(wf);
}
上面是完整的答案,找出大于整数m且紧靠m的k个整数存入数组xx[],传回。
最后调用函数readwriteDat()从in.dat文件中读取10组数据,分别得出结果并把结果输出到文件out.dat中。
我应该把
void num(int m, int k, int xx[])
{
    int  data = m+1;
    int  half, n = 0, i;
    while(1)
    {
        half = data/2;
        for (i=2; i<=half; i++)
            if (data%i == 0)
                break;
        if (i > half)
        {
            xx[n] = data;
            n++;
        }
        if (n >= k)
            break;
        data++;
    }
}
这一段程序自己编出来,我自己的想法是:
void num(int m, int k, int xx[])
{
int i,t,cnt=0;
     t=m+1;
    while(cnt<k)
    {
    
        for(i=2;i<=t/2;i++)
            if(m%i==0) break;
            if(i>t/2) {xx[cnt]=t;cnt++;}
            t++;
    }
}
可以编译运行,但就是运行时出错,出不来结果,我把自己编的那段代码放到一个独立的程序中可以正常运行,我真的不知道哪错了,下午就要考试了,希望有人指点一下,下面是我自己的代码放到独立的程序中正常运行的代码!
#include <stdio.h>
#include <math.h>
main()
{
    int i,m,k,cnt=0,xx[50];
    scanf("%d%d",&m,&k);
    while(cnt<k)
    {
        m++;
        for(i=2;i<=sqrt(m);i++)
            if(m%i==0) break;
        if(i>sqrt(m)) {xx[cnt]=m;cnt++;}
    }
    for(i=0;i<k;i++)
        printf(" %d",xx[i]);
    getch();
}
搜索更多相关主题的帖子: int half data 上机 
2008-04-13 09:32
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
if(t%i==0) break;

  是t 而不是m

2008-04-13 09:50
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
得分:0 
哦,我怎么犯了这么低级的错误!
我怎么犯了这么低级的错误!,不过好像刚才确实没错误,我和同学一块检查的,哎,不过运行出来就可以了!
2008-04-13 10:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-208716-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.354112 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved