| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1176 人关注过本帖
标题:程序运行出现随机数,咋办?
只看楼主 加入收藏
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
结帖率:93.33%
收藏
已结贴  问题点数:10 回复次数:6 
程序运行出现随机数,咋办?
程序代码:
#include<stdio.h>
#include<windows.h>
main()
{int a1,a2,a3,a4,b;
system("cls");
for(a1=1;a1<1000000;a1++)
  {
      for(a2=1;a2<1000000;a2++)
      {
      for(a3=1;a3<1000000;a3++)
      {
          for(a4=1;a4<1000000;a4++)
          {
             for(b=1;b<100000000;b++)    
             if(b*b*b*b*b==a1*a1*a1*a1*a1+a2*a2*a2*a2*a2+a3*a3*a3*a3*a3+a4*a4*a4*a4*a4)
             {
                 printf("%d^5=%d^5+%d^5+%d^5+%d^5",b,a1,a2,a3,a4);
              printf("\n");
             }
          }
      }    
      }
  }

}

编程时,用的是中文简体输入法,编译完后运行不需要手动输入数据,但是结果却是:
93812238^5=1^5+1^5+1^5+141^5
28233011^5=1^5+1^5+1^5+190^5
64642259^5=1^5+1^5+1^5+244^5
......
这等式明显不对嘛。请问是什么原因呢?
搜索更多相关主题的帖子: for 出现 随机数 printf 运行 
2020-09-23 09:23
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
1000000^5 约等于 2^100 次方
2020-09-23 09:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
好久没写标准C代码了

程序代码:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
#include <math.h>

int main( void )
{
    // const uintmax_t m = 1 + (uintmax_t)pow( UINTMAX_MAX+0.0, 1.0/5 ); // 防止溢出
    const uintmax_t m = 145; // 但上面的数值范围还是太大了,得运行一年时间,于是改得小一些
    printf( "search in range [1,%"PRIuMAX"):\n", m );

    for( uintmax_t a=1; a!=m; ++a )
    for( uintmax_t b=a; b!=m; ++b )
    for( uintmax_t c=b; c!=m; ++c )
    for( uintmax_t d=c; d!=m; ++d )
    {
        uintmax_t e, s=a*a*a*a*a + b*b*b*b*b + c*c*c*c*c + d*d*d*d*d;
        for( e=d+1; e!=m && e*e*e*e*e<s; ++e );
        if( e*e*e*e*e == s )
            printf( "\t%"PRIuMAX"^5 = %"PRIuMAX"^5 + %"PRIuMAX"^5 + %"PRIuMAX"^5 + %"PRIuMAX"^5\n", e, a, b, c, d );
    }
}


输出是
search in range [1,145):
        144^5 = 27^5 + 84^5 + 110^5 + 133^5
2020-09-23 10:45
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:0 
printf( "search in range [1,%"PRIuMAX"):\n", m );编译时  出现:[Error] expected ')' before 'PRIuMAX'
2020-09-23 14:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
回复 4楼 自学的数学
(我在windows上的VC++2009、MinGW8.1,linux上的gcc10、clang10 都测试了一下,没问题呀)

你用的什么编译器,以及编译器版本?
而且非常奇怪的是,你的编译器报 PRIuMAX错。PRIuMAX定义在<inttypes.h>中,若是编译器太古老,那应该在#include <inttypes.h>时就报错。
2020-09-24 11:04
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:0 
本机操作系统:windows 7
编译软件: devcpp 5.7.1
2020-09-24 12:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
回复 6楼 自学的数学
“devcpp 5.7.1”并不是个编译器呀,我在网上搜了一下,大部分用“devcpp 5.7.1”的人配置的编译器是mingw4.7.1和mingw4.8.1。
我试验了一下它俩,在有编译参数“-std=c99”的情况下,都能编译通过;在“-std=c89”时编译,报错,但错误的原因与你在4楼粘贴到完全不同。
2020-09-24 13:04
快速回复:程序运行出现随机数,咋办?
数据加载中...
 
   



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

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