请求解答C++编程题目,谢谢啊!!

设计一个函数模板Sum,实现对两个相同基本数据类型的数组内部元素逐一求和的功能(不要求两个数组长度一定相同)。(主函数测试以上设计。)

第1个回答  2011-09-07
#include <stdio.h>
#include <stdlib.h>

template <typename T>
void Sum(const T *t1, const T *t2, T *sum, int t1len, int t2len)
{
int i = 0;
int s = t1len<t2len?t1len:t2len;
while(i < s)
{
sum[i] = t1[i] + t2[i];
i++;
}

if(t1len > t2len)
{
while(i < t1len)
{
sum[i] = t1[i];
i++;
}
}
else
{
while(i < t2len)
{
sum[i] = t2[i];
i++;
}
}
}

int main()
{
int index = 0;
//int
int a[2] = {1,2};
int b[5] = {1,2,3,4,5};
int c[5] = {0};
Sum(a, b, c, 2, 5);
for(index = 0; index < 5; index++)
{
printf("sum[%d] =%d\n",index, c[index]);
}

//float
float fa[2] = {1.0,2.0};
float fb[5] = {1.0,2.0,3.0,4.0,5.0};
float fc[5] = {0.0};
Sum(fa, fb, fc, 2, 5);
for(index = 0; index < 5; index++)
{
printf("sum[%d] =%f\n",index, fc[index]);
}
return 0;
}
第2个回答  2011-09-07
//写了一个,经测试没有问题。

#include <iostream>

using namespace std;

template <typename elemType>
elemType sum(elemType* first, elemType* last)
{
elemType sum = 0;
for (; first != last; ++first)
{
sum += *first;
}
return sum;
}

int main()
{
int integerNum[] = {1,2,3,4,5};
int integerSum = sum(integerNum, integerNum + 5);
cout << "integersum is " << integerSum << endl;

double floatNum[] = {1.1,2.3,4.5};
double floatSum = sum(floatNum, floatNum + 3);
cout << "floatsum is " << floatSum << endl;

return 0;
}追问

那两个数组不应该是手输入么。。。继续求教。。。谢谢哈

追答

//呃……改了,改了main()那部分,sum函数没有改,你看一看吧。
//如果要求和的个数不够MAX的话,例如只需求5个数的和,那么输完5个数后,
//在新的一行输入ctrl+d(linux环境下),windows环境好像是ctrl+z就可以了。
#include

#define MAX 80
using namespace std;

template
elemType sum(elemType* first, elemType* last)
{
elemType sum = 0;
for (; first != last; ++first)
{
sum += *first;
}
return sum;
}

int main()
{

int integerNum[MAX];
int ix = 0;
while (cin >> integerNum[ix] && ix > floatNum[ix] && ix < MAX)
{
ix++;
}
double floatSum = sum(floatNum, floatNum + ix);
cout << "floatsum is " << floatSum << endl;

return 0;
}

本回答被提问者采纳
相似回答