1到100累乘 用数组来存储这个数位,然后用数组打印出这个数字

问题描述

1到100累乘 用数组来存储这个数位,然后用数组打印出这个数字

1到100累乘 用数组来存储这个数位,然后用数组打印出这个数字

9、1到100累乘
1 * 2 * 3*4 * ....100
老师的分析

a[200]
a[0] = 1
a[0] * 1

a[0] * 2 = 2

a[0] * 3 = 6;

a[0] * 4 = 24;

0+1

a[1] = a[0] / 10 = 2;
a[0] = a[0] % 10 = 4;

a[0] * 5 = 20;
a[1] * 5 = 10;

a[2] = a[1] / 10 = 1;

a[1] = a[1] % 10 + a[0] /10 = 2;

a[0] = a[0] % 10 = 0;

自己编写的程序:
#include "stdio.h"
int main()
{
int b = 0;
int i = 0;
int j = 0;
int n = 1;

int a[500]= {0};
printf("请输入一个累乘数:n");
scanf("%d",&b);
a[0]=1;
for(i = 1; i <= b; i++)

{

a[j] *= i;

if(a[j] > 9)

n++;
if (n > 1) {
for(j=0;j
{
a[j] *= i;
if(a[j] > 9)
{
a[j+1]= a[j]/10;
a[j] = a[j]%10;
n++;
}

        }
    }

}

printf("累乘后:n");
for (j = n-1; j >=0; j--)
{
printf("%d",a[j]);
}
printf("n");
return 0;
}

存在的问题是我的这个数位数不知道怎么存储, 下一次乘需要每一个数位都乘
,满10还要进行拆分,没有思路? 求帮助
思路还不清楚?

解决方案

累乘用for循环来实现!用数组显示出来的话你可以这样理解:1234=1*1000+2*100+3*10+4,所以: a[3]就等于1234除1000的商(也就是1),余数为234!然后类推就可以得出结果!

解决方案二:

这个累乘数的结果很大,用来接收他的类型的整数会溢出,是解决这个问题,!!!!!???

解决方案三:

答案:

#include
#define N 200

int main()
{
int a[N] = {1};

int bits = 1;
int n;
scanf("%d", &n);

int i, j;
for(i = 1; i < n+1; i++)
{
    for(j = 0; j < bits; j++)
        a[j] = a[j] * i;
    for(j = 0; j < bits; j++)
    {
        if(a[bits-1] > 9)
            bits++;
        if(a[j] > 9)
        {
            a[j+1] = a[j+1] + a[j] / 10;
            a[j] = a[j] % 10;
        }
    }
}
printf("bits = %dn", bits);
for(i = bits-1; i >= 0; i--)
    printf("%d", a[i]);
printf("n");

return 0;

}

解决方案四:

答案:

#include
#define N 200

int main()
{
int a[N] = {1};

int bits = 1;
int n;
scanf("%d", &n);

int i, j;
for(i = 1; i < n+1; i++)
{
    for(j = 0; j < bits; j++)
        a[j] = a[j] * i;
    for(j = 0; j < bits; j++)
    {
        if(a[bits-1] > 9)
            bits++;
        if(a[j] > 9)
        {
            a[j+1] = a[j+1] + a[j] / 10;
            a[j] = a[j] % 10;
        }
    }
}
printf("bits = %dn", bits);
for(i = bits-1; i >= 0; i--)
    printf("%d", a[i]);
printf("n");

return 0;

}

时间: 2024-12-02 08:07:44

1到100累乘 用数组来存储这个数位,然后用数组打印出这个数字的相关文章

递归原理-java 递归 有一个数组 1,2,2,3,5 用java打印出所有不同的排列顺序

问题描述 java 递归 有一个数组 1,2,2,3,5 用java打印出所有不同的排列顺序 有一个数组 1,2,2,3,5 用java打印出所有不同的排列顺序:如12235,12325,13225

数组指针存储的数据怎么给新的空表 下面是代码帮忙看看

问题描述 数组指针存储的数据怎么给新的空表 下面是代码帮忙看看 void Create_class(Link &l)//创建班级信息 { Node p[100],; Link L; int j,m; int classnum=1; L = (Node)malloc(sizeof(Node)); printf("几个班:"); scanf("%d",&m); for(j = 0;j { l = (Node*)malloc(sizeof(Node));

《指针的编程艺术(第二版)》一第三章 指针与数组3.1 指针与一维数组

第三章 指针与数组 指针的编程艺术(第二版) 3-1 指针与一维数组 3-2 指针与二维数组 3-3 数组指针 3-4 为什么parr等同于 *parr? 3-5 指向数组的指针 3-6 多重指针 3-7 命令行参数 3-8 改错题 3-9 练习 3-10 程序实战 指针其实就是一个地址.数组的名称,表示这个数组的第1个元素的地址,所以它也是指针.由此可知,指针与数组的关系是很密切的.为了与指针变量(pointer variable){XE "指標變數(pointer variable)&quo

C#大数相乘问题,用三个数组来存储

问题描述 C#大数相乘问题,用三个数组来存储 最好用分治法解决问题,然后能够运算20位左右的大数相乘,控制台和窗口都行 解决方案 http://blog.csdn.net/xianfajushi/article/details/49555767 解决方案二: 比较难写你再给你个思路吧,你完善下. ``` public class dashucheng { public string cs;//乘数 public string bcs;//被乘数 public string cheng()//乘操

函数调用-如何调用函数打印出数组

问题描述 如何调用函数打印出数组 我已经编写了函数itob(n,s,d),将整数n转换为以b为底的数,并将转换结果以字符形式保存到字符串s中.请问既然函数的返回值不能是数组,那么如何在main 函数中调用这个itob函数打印出字符串s?(刚入门的新手,很多函数没有学) 解决方案 void main() { char buf[50]; int num=100; itob(num,buf,8);//你设计的函数形参s应该是个指针,这样在函数内部转换完,在main函数就可以打印. printf("%s

vc++-C语言结构数组的题,请大神看看错误出在哪里

问题描述 C语言结构数组的题,请大神看看错误出在哪里 #include struct sell { char dm[4]; char mc[10]; int dj; int sl; long int je; }sell[100]; void main() { int i,j,t; long int m; for(i=0;i scanf("%s,%s,%4d,%5d,%5dn",&sell[i]dm,&sell[i].mc,&sell[i].dj,&sel

解析将多维数组转换为支持curl提交的一维数组格式

本篇文章是对将多维数组转换为支持curl提交的一维数组格式实现代码进行了详细的分析介绍,需要的朋友参考下   复制代码 代码如下: /**      * @desc    多维数组转化为支持curl提交数组      * @author    脚本之家    2013-07-8      */     public function toPost(array $params = array(), $pre = '')     {         $result = array();       

java数组-一个数组可以看成一个类吗,数组当中的每一个元素可以看成一个对象吗

问题描述 一个数组可以看成一个类吗,数组当中的每一个元素可以看成一个对象吗 一个数组可以看成一个类吗,数组当中的每一个元素可以看成一个对象吗 解决方案 数组是一种数据类型,数组中的每个元素类型取决于它的声明是什么类型,例如:String[],里面只能存放String类型的数据.Student[],里面只能存放Student类型的数据. 解决方案二: 数组是一个容器 ,你可是在里面放类 ,但它不是一个类 解决方案三: 不能,虽然数组里可以放很多东西,但它不是一个类.数组,就是相同数据类型的元素按一

Android解析json数组对象的方法及Apply和数组的三个技巧_Android

json是种常用的数据传输格式,在android开发中,如何借助java语言实现对json数组对象的解析呢,请参阅下面的关键代码: import org.json.JSONArray; import org.json.JSONObject; //jsonData的数据格式:[{ "id": "27JpL~jd99w9nM01c000qc", "version": "abc" },{ "id": "