| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 572 人关注过本帖
标题:一个上机题,下午就要考试,在线等!
只看楼主 加入收藏
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
快速回复:一个上机题,下午就要考试,在线等!
数据加载中...
 
   



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

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