鱼C论坛

 找回密码
 立即注册
查看: 3615|回复: 6

让我纠结了半年的难题:怎么让变量存储10个9?

[复制链接]
发表于 2011-4-27 08:54:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 旭日东升 于 2011-4-28 14:34 编辑

郁闷  这个难题在我设计程序时 让我纠结了很久 ...  特别是设计 【兔子加密程序】 的时候,那个郁闷啊 ...

看看例程哈

#include <stdlib.h>
#include <stdio.h>
int main()
{
    unsigned long int a=999999999;
    int i=0;
    printf("长整型变量 a 为【%d】\n\n",a);
    puts("请输入数值与变量a相乘:");
    scanf("%d",&i);
    printf("a*[%d] = [%d]\n\n",i,i*a);
    system("pause");
    }

运行后 结果
============================================
长整型变量 a 为【999999999】

请输入数值与变量a相乘:
100
a*[100] = [1215752092]

请按任意键继续. . .
============================================

纠结...

哪位大侠 能解决这个问题的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-27 10:20:10 | 显示全部楼层
大数计算哈,一般方法用数组来存储,分别想成后加上进制数就可以哈,试试看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-28 11:13:55 | 显示全部楼层
参考算盘啊,先算前面再算后面,用函数和数组。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-29 02:58:52 | 显示全部楼层
回复 小甲鱼 的帖子

能给个例程吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-10 20:30:47 | 显示全部楼层
回复 Love 梦想 的帖子

  1. #include<iostream>
  2. #include<set>
  3. #include<vector>
  4. #include<map>
  5. #include<queue>
  6. #include<algorithm>
  7. using namespace std;
  8. int main()
  9. {   char a[100];
  10.     int sum[100]={0},la,ls=100,n;
  11.         for(int k=0;k<2;k++)
  12.         {   gets(a);
  13.             la=strlen(a);
  14.             int t=ls-la;
  15.             
  16.             for(int i=la-1;i>=0;i--)
  17.             {   
  18.                  sum[i+t]+=a[i]-'0';
  19.                  if(sum[i+t]>=10)   
  20.                  {   sum[i+t]%=10;
  21.                      sum[i+t-1]++;
  22.                  }   
  23.             }
  24.               
  25.          
  26.         }
  27.         int t=0;
  28.        for(int i=0;i<=99;i++)
  29.         
  30.         if(sum[i]||t)
  31.         {  printf("%d",sum[i]);t=1;  }
  32.         
  33.         if(!t)printf("0");
  34.         cout<<"\n";
  35.     system("pause");
  36.     return 0;
  37. }
复制代码
这是个加法的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-18 00:25:08 | 显示全部楼层
回复 wangyexin 的帖子

有错哦

程序运行的结果  明显错误

9999999999999999999999999999999
1
99999999999999999999999999999100
请按任意键继续. . .

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-18 23:04:54 | 显示全部楼层
回复 Love 梦想 的帖子

谢谢指正 这个bug修正了 不知道还有错没

  1. #include<iostream>
  2. #include<set>
  3. #include<vector>
  4. #include<map>
  5. #include<queue>
  6. #include<algorithm>
  7. using namespace std;
  8. int main()
  9. {   char a[100];
  10.     int sum[100]={0},la,ls=100,n;
  11.    
  12.         for(int k=0;k<2;k++)
  13.         {   gets(a);
  14.             la=strlen(a);
  15.             int t=ls-la;
  16.             
  17.             for(int i=la-1;i>=0;i--)
  18.             {   
  19.                  sum[i+t]+=a[i]-'0';
  20.                  
  21.                  int j=i;
  22.                  while(sum[j+t]>=10)   
  23.                  {   sum[j+t]%=10;
  24.                      sum[j+t-1]++;
  25.                      j--;
  26.                  }   
  27.             }
  28.               
  29.          
  30.         }
  31.         int t=0;
  32.        for(int i=0;i<=99;i++)
  33.         
  34.         if(sum[i]||t)
  35.         {  printf("%d",sum[i]);t=1;  }
  36.         
  37.         if(!t)printf("0");
  38.         cout<<"\n";
  39.     system("pause");
  40.     return 0;
  41. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 22:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表