标题:求大佬解释这个算法在这道题怎么用的?
只看楼主
梦伦
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-6-18
结帖率:50%
已结贴  问题点数:10 回复次数:2 
求大佬解释这个算法在这道题怎么用的?
求大佬解释这个算法在这道题怎么用的?

题目: 计算 5/2^50
编程:
#include<stdio.h>
#define N 50
    int main()
{
    int i,j,k,t;
    int a[N]={5};
   for(i=0;i<N;i++)
{
    for(j=0;j<N;j++)
{
  t=a[j]+k;
  a[j]=t/2;
 k=t%2*10;
}

}
for(i=0;i<N;i++)
printf("%d",a[i]);
}PS:下划线部分为什么要这么编程
搜索更多相关主题的帖子: 算法 int i++ for 编程 
2020-09-07 21:27
沈和
Rank: 2
等 级:论坛游民
威 望:5
帖 子:22
专家分:81
注 册:2019-8-26
得分:5 
这位网友,你好。题目的5/2^50。运算符/理解成整数除,还是数学除法?运算符^是理解成异或还是乘方?
程序代码:
#include<stdio.h>
#define N 50
    int main()
{
    int i,j,k,t;
    int a[N]={5};
   for(i=0;i<N;i++)
{
    for(j=0;j<N;j++)
{
  t=a[j]+k;
  a[j]=t/2;
 k=t%2*10;
}
}
for(i=0;i<N;i++)
printf("%d,",a[i]);
}

这段的运行结果是
0,0,0,0,0,0,0,-3,0,-2,-2,-5,-1,-8,-2,-9,-7,-8,-6,-8,-2,-5,-9,-6,-5,-1,-2,-9,-5,-3,-7,-5,0,-7,-8,-9,-1,-6,-5,-4,-9,-6,-8,-2,-6,-1,-7,-1,-8,-7,


而两种对运算符的理解,结果和上述结果没看出关联性。
程序代码:
#include <stdio.h>
#include <math.h>

int main(void)
{
  int a = 2;
  int b = 50;
  printf("%d\n", a^b);
  
  printf("%g\n", 5.0 / pow(2, 50));
  return 0;
}


运行结果:
48
4.44089e-15


因此,我觉得没有必要理解划线那段是什么意思。

[此贴子已经被作者于2020-9-7 23:49编辑过]

2020-09-07 23:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
即使改正了你的错误代码,输出也是 00000000000000044408920985006261616945266723632812,最后一位明显不对,最后一位应当是5。

我来写个正确的代码吧
程序代码:
#include <stdio.h>

int main( void )
{
    // 计算 5/2^50
    enum { N=50 };
    unsigned char a[N+1] = { 5 };
    for( size_t i=0; i!=N; ++i )
    {
        unsigned k = 0;
        for( size_t j=0; j!=sizeof a; ++j )
        {
            unsigned t = a[j] + k;
            a[j] = t/2;
            k = t%2 * 10;
        }
    }

    for( size_t i=0; i!=sizeof a; ++i )
    {
        putchar( '0'+a[i] );
        if( i == 0 )
            putchar( '.' );
    }
}

输出是 0.00000000000000444089209850062616169452667236328125
2020-09-08 12:22



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




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

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