| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 544 人关注过本帖, 1 人收藏
标题:我的一个朋友让我帮他计算200个2的平方 我简单的计算了一下 不知道正确与 ...
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏(1)
已结贴  问题点数:100 回复次数:6 
我的一个朋友让我帮他计算200个2的平方 我简单的计算了一下 不知道正确与否 还请各位评委给看一下
当然了  代码很弱  很弱  有批判的也十分欢迎
程序代码:
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#define _CRT_SECURE_NO_WARNINGS     //该死不


#include <stdio.h>
#include <malloc.h>

int main()
{
    char* s[200];
    char t[401]={'\0'};
    int i;
    int k1=0;
    int k2=0;
    int k3=0;
    int j=200;
    int _ecx=0;
    int tmp=0;
    //初始化
    for(i=0;i<200;i++)
    {
        s[i]=(char*)malloc(401);     
        //第一段
        for(k1=0;k1<j;k1++)
        {
            *(s[i]+k1)='\0 ';
        }
        //第二段
        for(k2=j;k2<200+j;k2++)
        {
            *(s[i]+k2)='4';
        }
        //第三段
        for(k3=j+200;k3<400;k3++)
        {
            *(s[i]+k3)='\0';
        }
        *(s[i]+400)='\0';
        j--;
       
    }
    //模拟手工加法计算
    int tmp2;
    for(i=400;i>=0;i--)
    {
        for(j=0;j<200;j++)
        {
            if(*(s[j]+i)>'0') tmp2=*(s[j]+i)-'0';else tmp2=0;
            tmp+=tmp2;
        }
        tmp+=_ecx;
        _ecx=tmp/10;
        t[i]=tmp %10 +'0';
        tmp=0;
    }
    t[400]='\0';
    char* p=&t[0];
    for(i=0;i<400;i++)
    {
      if(t[i]>'0')
      {
          p+=i;
          break;
      }
    }
    printf("最后结果等于\n%s\n",p);
    return 0;
}
/*
最后结果等于:
49382716049382716049382716049382716049382716049382716049382716049
38271604938271604938271604938271604938271604938271604938271604938
27160493827160493827160493827160493827160493827160493827160493827
16048395061728395061728395061728395061728395061728395061728395061
72839506172839506172839506172839506172839506172839506172839506172
83950617283950617283950617283950617283950617283950617283950617283
950617284

*/



搜索更多相关主题的帖子: 应用程序 控制台 朋友 
2013-11-06 20:38
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:100 
结果没有问题,这个题目有一些很有趣的性质。

送万哥一段代码,cal函数一看就明白怎么用了,基本上想算多长算多长(注意s要预留足够的空间)。

程序代码:
#include<stdio.h>
#include<malloc.h>

char * cal(int a, int n, char * s)
{
    char * t;
    int f = 0, i = 0, j, d;
    if(!(t = (char *)malloc(n * 3))) return NULL;
    for(j = 1; j <= n; j++)
    {
        d = j + f;
        t[i++] = d % 10;
        f = d / 10;
    }
    for(j = n - 1; j; j--)
    {
        d = j + f;
        t[i++] = d % 10;
        f = d / 10;
    }
    for(; f; f /= 10) t[i++] = f % 10;
    for(a *= a, f = j = 0; j < i; j++)
    {
        d = t[j] * a + f;
        t[j] = d % 10;
        f = d / 10;
    }
    for(; f; f /= 10) t[i++] = f % 10;
    for(j = 0; i--; s[j++] = t[i] + '0');
    s[j] = '\0';
    free(t);
    return s;
}

int main()
{
    char s[512];
    puts(cal(2, 200, s));
    return 0;
}

重剑无锋,大巧不工
2013-11-06 21:58
忘尘无憾
Rank: 2
来 自:三峡大学
等 级:论坛游民
帖 子:5
专家分:10
注 册:2012-11-1
收藏
得分:0 
好强大。。。
2013-11-06 22:03
小龙五
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-10-7
收藏
得分:0 
呵呵。。。学习中、、、
2013-11-06 22:08
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用beyondyf在2013-11-6 21:58:06的发言:

结果没有问题,这个题目有一些很有趣的性质。
 
送万哥一段代码,cal函数一看就明白怎么用了,基本上想算多长算多长(注意s要预留足够的空间)。
 
#include
#include
 
char * cal(int a, int n, char * s)
{
    char * t;
    int f = 0, i = 0, j, d;
    if(!(t = (char *)malloc(n * 3))) return NULL;
    for(j = 1; j <= n; j++)
    {
        d = j + f;
        t = d % 10;
        f = d / 10;
    }
    for(j = n - 1; j; j--)
    {
        d = j + f;
        t = d % 10;
        f = d / 10;
    }
    for(; f; f /= 10) t = f % 10;
    for(a *= a, f = j = 0; j < i; j++)
    {
        d = t[j] * a + f;
        t[j] = d % 10;
        f = d / 10;
    }
    for(; f; f /= 10) t = f % 10;
    for(j = 0; i--; s[j++] = t + '0');
    s[j] = '\0';
    free(t);
    return s;
}
 
int main()
{
    char s[512];
    puts(cal(2, 200, s));
    return 0;
}
高手永远都是高手    我的程序虽然也可以扩展  但是绝对没有你的这么简洁   
不过看到了 /10   %10   +'0' 等等  很是熟悉  哈哈

DO IT YOURSELF !
2013-11-06 22:10
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
但是 说实话  这段代码自我感觉没啥用处

实际应用中 几百位的数字 不知道哪里能用到

也不晓得我朋友算22222222......22222222^2想干吗

DO IT YOURSELF !
2013-11-06 22:15
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,当作个游戏也不错么。就跟计算圆周率一样,银河系这个尺度的有个几十位都可以精确到原子级别了,但就有人想知道它的第一万亿位是个几。

感谢万哥送分。

重剑无锋,大巧不工
2013-11-06 22:28
快速回复:我的一个朋友让我帮他计算200个2的平方 我简单的计算了一下 不知道 ...
数据加载中...
 
   



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

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