输入:一组大于等于0的整数,不考虑非法输入,各个整数之间用“,”隔开,输入的字符总长度小于等于100.
输出:根据从大到小排列,如果中间有连续的,只输出最大和最小的值,输入的各个整都不相同,不用考虑相同的情况。各个整数之间用“,”隔开。
例:
输入:1,4,7,2,5,8,9,11
输出:11,9,7,5,4,2,1
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <iostream> 4 #include <math.h> 5 #include <vector> 6 int main() 7 { 8 char *input = (char*)malloc(100 * sizeof(char)); 9 memset(input,0,sizeof(input)); 10 scanf("%s", input); 11 std::vector<int>input_number; 12 while ((*input >= ‘0‘) && (*input <= ‘9‘)&&(*input!=‘\0‘)) 13 { 14 if (*input!=‘,‘) 15 { 16 char str[5] = "\0"; 17 int i = 0; 18 while( (*input != ‘,‘) && (*input!=‘\0‘)) 19 { 20 str[i++] = *input; 21 input++; 22 } 23 if (strlen(str)>1) 24 { 25 input_number.push_back(atoi(str)); 26 } 27 else 28 { 29 input_number.push_back((*(input-1) - ‘0‘)); 30 } 31 } 32 input++; 33 } 34 int count = 0; 35 for (std::vector<int>::iterator iter_out = input_number.begin(); iter_out != input_number.end(); iter_out++,count++) 36 { 37 for (std::vector<int>::iterator iter_in = input_number.begin(); iter_in != input_number.end()-1- count; iter_in++) 38 { 39 if ((*iter_in) < (*(iter_in+1))) 40 { 41 int tmp; 42 tmp=*iter_in; 43 *iter_in = *(iter_in + 1); 44 *(iter_in + 1) = tmp; 45 } 46 } 47 } 48 for (std::vector<int>::iterator iter = input_number.begin(); iter < input_number.end()-2;) 49 { 50 int flag = ((*iter)+*(iter+2))-2*(*(iter+1)); 51 if (!flag) 52 { 53 iter=input_number.erase(iter+1); 54 } 55 else 56 { 57 iter++; 58 } 59 } 60 for (std::vector<int>::iterator iter = input_number.begin(); iter != input_number.end()-1; iter++) 61 { 62 printf("%d,", *iter); 63 } 64 std::vector<int>::iterator iter = input_number.end() - 1; 65 printf("%d\n",*iter); 66 getchar(); 67 getchar(); 68 return 0; 69 }
时间: 2024-08-25 00:48:09