| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 701 人关注过本帖
标题:程序出错了 改过了 还是有问题
只看楼主 加入收藏
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
结帖率:100%
收藏
 问题点数:0 回复次数:10 
程序出错了 改过了 还是有问题
求1000000以内 将该数的首位数字移到末尾得到的数是原数的整数倍 比如142857     428571就是整数倍  
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int Troitsky(long a[])
{
    long i,j,temp1,temp2,temp3;
    int n;
    for(i=1,n=0;i<=1000000;i++)/*我把这里i改成1了 程序可以运行但没有结果 怎么回事?*/
    {   
        for(j=0;i%((long)pow(10,j))!=i;j++);
        temp1=i/(long)pow(10,j-1);
        temp2=i%(long)pow(10,j-1)*10;
        temp3=temp2+temp1;
        if(temp3%i==0)
            a[n++]=i;
    }
    return n;
}
void main()
{
    long a[10];
    int n,i;
    FILE *fp;
    n=Troitsky(a);
    if((fp=fopen("myf2.out","w"))==NULL)
    {
        printf("cannot open the file\n");
        exit(0);
    }
    for(i=0;i<n;i++)
    {
        fprintf(fp,"%10ld",a[i]);
        printf("%10ld",a[i]);
    }
    printf("\n");
    fprintf(fp,"\n");
    fprintf(fp,"My exam number is : 1231231234\n");
    fclose(fp);
}

[ 本帖最后由 njzhangyuhao 于 2011-3-30 20:19 编辑 ]
搜索更多相关主题的帖子: include long 
2011-03-29 21:44
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
for(j=0;i%((long)pow(10,j))!=i;j++);  <-这里多了个分号



我们都在路上。。。。。
2011-03-30 12:55
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
收藏
得分:0 
这个应该有
2011-03-30 13:08
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
有的话,会有除0错误,

我们都在路上。。。。。
2011-03-30 13:56
sanye2010
Rank: 2
等 级:论坛游民
帖 子:23
专家分:41
注 册:2011-3-29
收藏
得分:0 
Troitsky()函数中j的初始值呢?

-----跳---->我跳--->我跳----->我再跳-------->掉坑里了吧(!)------c语言就这样。
2011-03-30 14:01
zhlich
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2011-3-30
收藏
得分:0 
我觉得也是
2011-03-30 14:06
sanye2010
Rank: 2
等 级:论坛游民
帖 子:23
专家分:41
注 册:2011-3-29
收藏
得分:0 
刚才没看仔细:

    long i,j,temp1,temp2,temp3;
    int n;
    for(i=0,n=0;i<=1000000;i++)
    {   
        for(j=0;i%((long)pow(10,j))!=i;j++);
        temp1=i/(long)pow(10,j-1);
        temp2=i%(long)pow(10,j-1)*10;
        temp3=temp2+temp1;
        if(temp3%i==0)//在这里i第一次被使用的时候的值应该是0
            a[n++]=i;
    }

-----跳---->我跳--->我跳----->我再跳-------->掉坑里了吧(!)------c语言就这样。
2011-03-30 14:31
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
收藏
得分:0 
改过了 还是有问题
2011-03-30 20:21
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int i,j, temp1,temp2,temp3;
    for(i = 10; i < 1000000; i++)
    {
        for(j = 0; i % (int)pow(10,j) != i; j++)
        {
       
        }
       
        temp1 = i / (int)pow(10, j-1);
        temp2 = (i % (int)pow(10, j-1)) * 10 ;
        temp3 = temp2 + temp1;

        if(temp3 % i == 0)
            printf("temp3 = %d, i = %d\n", temp3, i);

    }
    return 0;
}
还真的出结果了,
部分结果:
temp3 = 111111, i = 111111
temp3 = 428571, i = 142857
temp3 = 222222, i = 222222
temp3 = 857142, i = 285714
这种数不多,才2个非常规数。意义不大。

我们都在路上。。。。。
2011-04-01 11:29
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
收藏
得分:0 
我可以再编一个没问题的程序 但是我想知道这个为什么错了 这样下次就不会错了
2011-04-01 12:24
快速回复:程序出错了 改过了 还是有问题
数据加载中...
 
   



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

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