先来复习一下小学数学

大家还记不记得小学算多位数的乘法是怎么算的?

卖个关子,大家一定要好好想想!

好了,别管到底还能不能想起来我们都要一块复习一下:

我们借助一下源自百度的图片 来复习下

相信大家都不陌生吧

好了,现在我们就开始办正事了

话不多说,我们直接看代码。具体解释会在注释中,如果有什么要补充的记得评论区留言

#include "stdio.h"
#include "string.h"
#define MAX 10000//结果最大位数,可以自行扩大·以扩大范围
int f[MAX];//定义存储各位的数组
void Arr_reset(int a[], int m, int n)//数组初始化函数
{
int i;
for (i = m; i <= m; i++)
{
a[i] = 0;
}
}
int main(void)
{
int i, j, n;
printf("Enter n:");
scanf("%d", &n);
Arr_reset(f, 0, (sizeof(f) / sizeof(int))); //对数组进行初始化
f[0] = 1;//初始化数组。可以理解为更改数组为1的阶乘
for (i = 2; i <= n; i++)
{
//乘以 i
int c = 0;
for (j = 0; j < MAX; j++) //最不易理解的
{
int s = f[j] * i + c;//可以理解为分离每一位,并继续往下计算下一位
f[j] = s % 10;//可以参考上面的图片,数的顺序是反过来的
c = s / 10;//方便 下面输出数 ,因为最右边的 一位 肯定是 大于 0的,而且 后面全为0
//算出的 s 是单位数时,会连续覆盖 f[0]
//否则一个多位数会倒过来存储,如 123,f[0]存 3,f[1]存 2,f[3]存 1
}
}
for (j = MAX - 1; j >= 0; j--)//查找 结果的开头 ,
if (f[j])
break;
for (i = j; i >= 0; i--)//直接输出即可
printf("%d", f[i]);
printf("\n");
return 0;
}
下面我们来看试运行结果

OK,今天就到这里

后期会持续更新,敬请期待

最新文章

  1. Qt - 读取GPS数据
  2. 软件工程--界面UI 的原型设计
  3. WebView 的使用----android 网络连接处理分析
  4. 12、c#中事务及回滚
  5. 斯坦福第四课:多变量线性回归(Linear Regression with Multiple Variables)
  6. lucene索引
  7. 更改EBS APPS 密码流程
  8. 适配iOS9遇到的一些问题_Scheme白名单_ Bitcode及解决办法
  9. Java笔记1 : 在生产者消费者模式中,线程通信与共享数据,死锁问题与解决办法
  10. css的存在形式以及优先级
  11. Ext JS学习第十天 Ext基础之动态加载JS文件(补充)
  12. Redmine管理项目2-邮件通知
  13. HTTP Request header
  14. HTML DOM innerHTML 属性及实现图片连续播放
  15. HTML DOM 属性
  16. 潭州课堂25班:Ph201805201 并发(进程,线程) 第十一课 (课堂笔记)
  17. xampp配置多个监听端口和不同的网站目录
  18. 模仿WIN32程序处理消息
  19. 201621123008 《Java程序设计》第四周学习总结
  20. ListView的另一种可读性更强的ViewHolder模式写法

热门文章

  1. IDEA常用的几个插件
  2. 【转】IEnumerable接口的一个简单示例
  3. 使用vim打开文件的16进制形式,编辑和全文替换
  4. Eclipse 连接 SQL Server 2012数据库 教程
  5. 爬虫学习笔记2requests库和beautifulsoup4库学习笔记
  6. smarty文章字符截取
  7. 缓存 - 数据缓存 - IndexedDB - Dexie.js
  8. The Softmax function and its derivative
  9. 【你不知道的javaScript 上卷 笔记4】javaScript 中闭包的一些运用
  10. linux - mysql 异常:ERROR 1820 (HY000): You must SET PASSWORD before executing this statement