华为机试再回忆--第二题
题目如下:
题目:选定数组最大最小元素位置并输出
描述:输入一组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
本题比较简单:需要的注意的是把输入的字符串转换为整型数组以及边界条件的判断
代码如下:
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 #define ArraySize 10 6 7 int main() 8 { 9 string s; 10 cin>>s; 11 for(int i=0;i<s.length();i++) 12 { 13 if(s[i]=='.') 14 { 15 cout<<"input error"<<endl; 16 return 0; 17 } 18 } 19 20 int *InputArray=new int[ArraySize]; 21 for(i=0;i<ArraySize;i++) 22 { 23 InputArray[i]=0; 24 } 25 int count=0; 26 int sum=0; 27 i=0; 28 int temp; 29 while(true) 30 { 31 if(s[i+1]!=','&&(i+1)!=s.length()) 32 { 33 sum=sum*10+(s[i]-'0')*10; 34 } 35 else 36 { 37 sum=sum+(s[i]-'0'); 38 temp=sum; 39 InputArray[count++]=sum; 40 if(i==s.length()-1) 41 { 42 break; 43 } 44 45 sum=0; 46 i=i+2; 47 continue; 48 } 49 i++; 50 51 } 52 53 if(count!=10) 54 { 55 cout<<"input error"<<endl; 56 return 0; 57 } 58 59 for(i=0;i<ArraySize;i++) 60 { 61 if(i!=(ArraySize-1)) 62 cout<<InputArray[i]<<","; 63 else 64 cout<<InputArray[ArraySize-1]<<";"; 65 } 66 67 int MaxIndex=0; 68 int MinIndex=0; 69 70 for(i=1;i<ArraySize;i++) 71 { 72 if(InputArray[i]>=InputArray[MaxIndex]) 73 { 74 MaxIndex=i; 75 } 76 77 if(InputArray[i]<=InputArray[MinIndex]) 78 { 79 MinIndex=i; 80 } 81 82 } 83 84 int temp1,temp2; 85 temp1=InputArray[MinIndex]; 86 InputArray[MinIndex]=InputArray[0]; 87 InputArray[0]=temp1; 88 89 temp2=InputArray[MaxIndex]; 90 InputArray[MaxIndex]=InputArray[ArraySize-1]; 91 InputArray[ArraySize-1]=temp2; 92 93 for(i=0;i<ArraySize;i++) 94 { 95 if(i!=(ArraySize-1)) 96 cout<<InputArray[i]<<","; 97 else 98 cout<<InputArray[ArraySize-1]; 99 } 100 cout<<endl; 101 102 delete[] InputArray; 103 InputArray=NULL; 104 return 0; 105 }
运行截图:
作者:vpoet
出处:http://www.cnblogs.com/vpoet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/vpoet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。