读一组整数到 vector 对象,计算并输出每对相邻元素的和。如果读入元素个数为奇数,则提示用户最后一个元素没有求和,并输出其值。
然后修改程序:头尾元素两两配对(第一个和最后一个,第二个和倒数第二个,以此类推),计算每对元素的和,并输出
代码:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::string;
using std::vector;
using std::endl;
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> myvec;
int itemp;
while(cin>>itemp)
{
myvec.push_back(itemp);
}
itemp=0;
int ia=0;
int ib=0;
char s[50];
for(vector<int>::size_type ix=0;ix!=myvec.size();ix++)
{
if(ix%2==0)
{
if(ix!=0)
{
sprintf(s,"第%d个数和第%d个数的和是%d",ix-1,ix,itemp);
cout<<s<<endl;
}
itemp=myvec[ix];
}
else
{
itemp+=myvec[ix];
}
if(ix==myvec.size()-1)
{
if(ix%2==0)
{
sprintf(s,"第%d个数是%d",ix+1,itemp);
cout<<s<<endl;
}
else
{
sprintf(s,"第%d个数和第%d个数的和是%d",ix-1,ix,itemp);
cout<<s<<endl;
}
}
}
system("pause");
return 0;
}
代码:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::string;
using std::vector;
using std::endl;
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> myvec;
int itemp;
while(cin>>itemp)
{
myvec.push_back(itemp);
}
itemp=0;
int ia=0;
int ib=0;
char s[50];
for(vector<int>::size_type ix=0;ix!=myvec.size();ix++)
{
if(ix>myvec.size()-1-ix)
{
break;
}
if(ix==myvec.size()-1-ix)
{
sprintf(s,"第%d个数是%d",ix+1,myvec[ix]);
cout<<s<<endl;
}
else
{
sprintf(s,"第%d个数和第%d个数的和是%d",ix+1,myvec.size()-ix,myvec[ix]+myvec[myvec.size()-1-ix]);
cout<<s<<endl;
}
}
system("pause");
return 0;
}
标准答案明显好的多:
第一个
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::string;
using std::vector;
using std::endl;
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> myvec;
int itemp;
while(cin>>itemp)
myvec.push_back(itemp);
for(vector<int>::size_type ix=0;ix<myvec.size()-1;ix=ix+2)
{
cout<<myvec[ix]
<<"和"<<myvec[ix+1]<<"是"<<myvec[ix]+myvec[ix+1]<<" ";
}
if(myvec.size()%2!=0)
{
cout<<"单独的数是"<<myvec[myvec.size()-1];
}
system("pause");
return 0;
}
第二个:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::string;
using std::vector;
using std::endl;
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> myvec;
int itemp;
while(cin>>itemp)
myvec.push_back(itemp);
for(vector<int>::size_type first=0,last=myvec.size()-1;first<last;first++,last--)
{
cout<<myvec[first]<<"和"<<myvec[last]<<"是"<<myvec[first]+myvec[last]<<"\t";
}
if(myvec.size()%2!=0)
{
cout<<"中间的数是"<<myvec[(myvec.size()-1)/2];
}
system("pause");
return 0;
}