return0;
}
【输入】:
5678940
【输出】:
五,实验小结:
本次试验第一,三,五题均使用递归算法,即程序自己调用自己的编程技巧。
在使用递归时,要有递归边界条件,递归前进段和递归返回段。
当边界条件不满足时,递归前进,当边界条件满足时,递归返回。
应该熟练掌握递归算法的用法。
第二题中,排序比较函数的具体方法是,判断参与比较的没两个字符串的长度是否相等,若不相等则按长度从小到大的顺序返回;若相等则以ASCII码值为排序标准,即按字符串从小到大排序。
第四题中,立方数表示为连续的奇数和。
n个连续的奇数,假设第一个奇数为x,那么第n个奇数就是x+(2n-2)。
n个连续奇数的和就等于x+(x+2)+...+(x+(2n-2))=(x+n-1)*n。
正整数n的立方可以表示为n个连续奇数的和
就可以变成n*n*n=(x+n-1)*n->n*n=x+n-1->x=n*n-n+1。
实验五、大数运算算法实验
一、实验目的
1、重视数学方法,提高数学推算和编程表的转换能力。
2、拓展编程表达的方法,熟练运用函数等手段进行计算模块的分离计算。
3、进一步学会使用c++标准库;
4、在保证编程程序正确的条件下,关注数据结构和算法,改进效率。
二、实验设备与环境
装有C++语言工具软件(Vs2008)的计算机。
三、实验内容
a),大数加;
b),大数和;
c),大数乘;
4、实验过程及结果
大数加
【基本描述】:
给定一些大数,把它们加起来。
【输入描述】:
输入数据中含有一些数据组(数量<=100),每组数据由一个整数n(n<=100)领衔,后跟n个大整数(0<=大数,大数位数<=200),若n=0则表示输入结束。
【输出描述】:
输出每组数据所计算的大数和,每个结果但独占一行。
【主要代码】:
#include
usingnamespacestd;
voidadd(string&a,conststring&s)
{
inttemp=0;
for(intai=0,si=()-1;si>=0||temp;++ai,--si)
{
temp+=a[ai]-'0'+(si>=0s[si]-'0':
0);
a[ai]=temp%10+'0';
temp=temp/10;
}
}
intmain()
{
constintbitnum=205;
for(intnum;cin>>num&#)
{
stringa(bitnum,'0');
for(strings;num--&&cin>>s;)
add(a,s);
reverse(),());
cout<<('0'))<<"\n";