您的位置:首页 > 其它

华为机试再回忆--第二题

2015-08-24 17:30 232 查看
题目如下:

题目:选定数组最大最小元素位置并输出

描述:输入一组10个整数的数组(数组元素之间用逗号分隔),最大的与最后一个元素交换,最小的与第一个元素交换,输出交换前与交换后的数组

例如:输入:56,23,45,0,122,26,53,100,2,32

输出:56,23,45,0,122,26,53,100,2,32;0,23,45,56,32,26,53,100,2,122

说明:1.数组元素之间用逗号,数组交换前后两项用分号分隔

2.当输入的数组中的元素不是整数时,则输出:input error,当输入数组元素个数不是10时则输出:input error

本题比较简单:需要的注意的是把输入的字符串转换为整型数组以及边界条件的判断

代码如下:

#include <iostream>
#include <string>
using namespace std;

#define ArraySize 10

int main()
{
string s;
cin>>s;
for(int i=0;i<s.length();i++)
{
if(s[i]=='.')
{
cout<<"input error"<<endl;
return 0;
}
}

int *InputArray=new int[ArraySize];
for(i=0;i<ArraySize;i++)
{
InputArray[i]=0;
}
int count=0;
int sum=0;
i=0;
int temp;
while(true)
{
if(s[i+1]!=','&&(i+1)!=s.length())
{
sum=sum*10+(s[i]-'0')*10;
}
else
{
sum=sum+(s[i]-'0');
temp=sum;
InputArray[count++]=sum;
if(i==s.length()-1)
{
break;
}

sum=0;
i=i+2;
continue;
}
i++;

}

if(count!=10)
{
cout<<"input error"<<endl;
return 0;
}

for(i=0;i<ArraySize;i++)
{
if(i!=(ArraySize-1))
cout<<InputArray[i]<<",";
else
cout<<InputArray[ArraySize-1]<<";";
}

int MaxIndex=0;
int MinIndex=0;

for(i=1;i<ArraySize;i++)
{
if(InputArray[i]>=InputArray[MaxIndex])
{
MaxIndex=i;
}

if(InputArray[i]<=InputArray[MinIndex])
{
MinIndex=i;
}

}

int temp1,temp2;
temp1=InputArray[MinIndex];
InputArray[MinIndex]=InputArray[0];
InputArray[0]=temp1;

temp2=InputArray[MaxIndex];
InputArray[MaxIndex]=InputArray[ArraySize-1];
InputArray[ArraySize-1]=temp2;

for(i=0;i<ArraySize;i++)
{
if(i!=(ArraySize-1))
cout<<InputArray[i]<<",";
else
cout<<InputArray[ArraySize-1];
}
cout<<endl;

delete[] InputArray;
InputArray=NULL;
return 0;
}


运行截图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: