这个题目到底该如何解决呢(题目要求要用模板函数)??
/*C++:模板函数2(多个数的和)时间限制(普通/Java):1000MS/3000MS运行内存限制:65536KByte总提交:321测试通过:223描述定义模板函数...
/*C++:模板函数2(多个数的和)
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交:321 测试通过:223
描述
定义 模板函数sum() 求两个数的和。在main()中调用sum()求多个 整数 和多个 实数 的和。
注意必须使用模板函数。
输入
有 4 行。第1行是整数的个数 n(0<n<20) ,第2行是 n个 整数 ;第3是 实数 的个数 m (0<m<20) ,第4行是 m个实数。
输出
有2行。第1行 n个整数的和 ,第2行为 m个实数的和 (保留2位小数)。
样例输入
4
6 7 10 8
3
5.26 7.556 9.258
样例输出
31
22.07
题目来源
hnldyhy*/
#include<iostream>
using namespace std;template<typename T>
T sum()
{
cout<<s1<<endl<<s2<<endl;
}
int main()
{
int n,m,i,s1,a;
double b,s2;
s1=0;
s2=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a;
s1=s1+a;
}
cin>>m;
for(i=1;i<=m;i++)
{
cin>>b;
s2=s2+b;
}
sum();
return 0;
} 展开
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交:321 测试通过:223
描述
定义 模板函数sum() 求两个数的和。在main()中调用sum()求多个 整数 和多个 实数 的和。
注意必须使用模板函数。
输入
有 4 行。第1行是整数的个数 n(0<n<20) ,第2行是 n个 整数 ;第3是 实数 的个数 m (0<m<20) ,第4行是 m个实数。
输出
有2行。第1行 n个整数的和 ,第2行为 m个实数的和 (保留2位小数)。
样例输入
4
6 7 10 8
3
5.26 7.556 9.258
样例输出
31
22.07
题目来源
hnldyhy*/
#include<iostream>
using namespace std;template<typename T>
T sum()
{
cout<<s1<<endl<<s2<<endl;
}
int main()
{
int n,m,i,s1,a;
double b,s2;
s1=0;
s2=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a;
s1=s1+a;
}
cin>>m;
for(i=1;i<=m;i++)
{
cin>>b;
s2=s2+b;
}
sum();
return 0;
} 展开
2个回答
展开全部
你自己附上的代码是什么意思啊?是你自己写的程序,还是评测程序给出的框架?
我自己写了一个简单的
#include <iostream>
#include <iomanip>
using namespace std;
template<typename T>
T sum(T a,int num){
T sum=0;
for (int i=0;i<num;i++){
cin>>a;
sum+=a;
}
return sum;
};
int main(){
int i,n,m;
cin>>n;
cout<<sum(0,n)<<endl;
cin>>m;
cout<<setprecision(2)<<sum(0.0,m)<<endl;
return 0;
}
我不知道题目的意思是不是说第一次就一定是整数,第二次是小数
看你的代码意思是的, 所以sum的第一个参数我给的
0和0.0,只是为了把模板里的typename T设置为
相应的int型和double。
还有setprecision()是用来规定输出的数保留小数位数的。
我自己写了一个简单的
#include <iostream>
#include <iomanip>
using namespace std;
template<typename T>
T sum(T a,int num){
T sum=0;
for (int i=0;i<num;i++){
cin>>a;
sum+=a;
}
return sum;
};
int main(){
int i,n,m;
cin>>n;
cout<<sum(0,n)<<endl;
cin>>m;
cout<<setprecision(2)<<sum(0.0,m)<<endl;
return 0;
}
我不知道题目的意思是不是说第一次就一定是整数,第二次是小数
看你的代码意思是的, 所以sum的第一个参数我给的
0和0.0,只是为了把模板里的typename T设置为
相应的int型和double。
还有setprecision()是用来规定输出的数保留小数位数的。
展开全部
#include <iostream>
using namespace std;
template <typename T>
T sum(T num1,T num2)
{
return num1 + num2;
}
int main()
{
int n, num1,sum1;
double num2,sum2;
cin >> n;
sum1 = 0;
for(int i = 0; i < n; i++)
{
cin >> num1;
sum1 = sum(sum1,num1);
}
cin >> n;
sum2 = 0;
for(int i = 0; i < n; i++)
{
cin >> num2;
sum2 = sum(sum2,num2);
}
cout << sum1 << endl;
cout << sum2 << endl;
return 0;
}
using namespace std;
template <typename T>
T sum(T num1,T num2)
{
return num1 + num2;
}
int main()
{
int n, num1,sum1;
double num2,sum2;
cin >> n;
sum1 = 0;
for(int i = 0; i < n; i++)
{
cin >> num1;
sum1 = sum(sum1,num1);
}
cin >> n;
sum2 = 0;
for(int i = 0; i < n; i++)
{
cin >> num2;
sum2 = sum(sum2,num2);
}
cout << sum1 << endl;
cout << sum2 << endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询