[CS@Nets]C语言进阶的一道编程题
来源:互联网 发布:smtp的默认端口是 编辑:程序博客网 时间:2024/05/19 08:01
最近重新开始了MOOC学习[1],这一次的目的更为明确而纯粹,Computer Science。为成为一名码农而奋斗。
目前已经完成了一门课的考试,C语言设计进阶,ZJU的翁恺老师讲授。关于这门课,我希望能够用三篇博客去总结,一篇是C语言私人备查,一篇是ACLGUI的代码解读(可能需要不止一篇),一篇即本篇,一道没有做完的编程习题——大数计算问题。
具体问题描述找不到了,简言之就是超出一般int表示的数之间的加法、减法和乘法运算。
解题思路:模仿人工计算的方法。
12345*234 = 12345*4+12345*3*10+12345*2*10*10
IDE: Code::Block
自己写了四个子函数
void inverse_sequence(const char *s, char *news);void seq_plus(const char *s, char *rs);void seq_times_bit(const char *s, const int t, char *rstmp);void seq_times_10x(char *s, int bits);
输入数据使用数组保存,加法和按位乘法都是对数组进行的操作,需要注意加乘法中的进位和数组初始化、界限问题。另,为方便计算机处理,首先要对输入的数据进行倒序处理(在考试的时候按照正序处理的,处理进位比较麻烦,当然就算当时倒序做的在一个小时内写出来也不太可能,目前的编程功力还是偏弱)。
10x这个乘法是模拟人工计算时的移位操作。
核心的处理段为
for(i = 0;i<lens;i++) { memset(sr,'\0',sizeof(sr)); ttmp = inv_s_short[i]-'0'; seq_times_bit(inv_s_long,ttmp,sr); seq_times_10x(sr,i); seq_plus(sr,srfinal); }
要注意注意数组初始化的问题。
整体处理算法非常普通,复杂度
0 0
- [CS@Nets]C语言进阶的一道编程题
- (C语言)搜狗的一道在线编程题
- C 语言的一道题~
- C语言 每天做一道编程题
- [CS@Nets][编译原理]一个栈式计算机的加法语言编译器
- 一道C语言题
- 曾经的一道C语言笔试题
- csdn一道C语言题的学习
- 一道很好的C语言题
- 一道很好的C语言题
- 一道简单的C语言题
- 一道C语言的指针笔试题
- 一道简单的C语言题
- 一道C语言编程比赛题(时钟追赶问题)
- 一道C语言的题目
- 一道C语言题(2)
- 一道C语言程序题
- 一道C语言笔试题
- 基类的纯虚析构函数一定要予以实现
- 5555555555555555555555555
- ARM之ARM公司
- c++ stack
- centos7环境下ceph安装部署
- [CS@Nets]C语言进阶的一道编程题
- ARM汇编指令集
- 两次内存断点法寻找OEP
- 计算机网络常见面试题总结
- 海纳百川,你我共建
- Applet基础知识
- Applet基础知识
- oracle时间
- 直接选择排序