//华为2014年机试题1:输入1--50个数字,求出最小数和最大数的和//输入以逗号隔开#include<stdio.h>#define N 50void sort(inta[],intn);int main(void){ charstr[100]; inta[N]={0}; gets(str); //要点1:动态的输入1--50个整数,不能确定个数,只能用字符串输入,然后分离出来 inti=0; intj=0; intsign=1; while(str[i]!='\0') { if(str[i]!=',') //输入时要在半角输入 { sign=1; if(str[i] == '-') //要点:2:有负整数的输入 { i++; sign=-1; } a[j]=a[j]*10 + str[i]-'0';//要点3:输入的可以是多位数 a[j]*=sign; //【这里有BUG,如-12,会变成-10+2,应该对结果乘以符号,而不是每一位乘以符号】 } i++; if(str[i]==','|| str[i]=='\0') //这个判断是在i自加以后 j++; //j就是a数组的个数 范围0到j-1 } sort(a,j); printf("Max number + Min number = %d",a[0]+a[j-1]); return0;}void sort(inta[],intn) //选择排序{ inti,j; intk; inttemp; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(a[k]>a[j]) k=j; } if(i!=k) { temp = a[k]; a[k] = a[i]; a[i] = temp; } } for(i=0;i<n;i++) printf("%-5d",a[i]); puts("");}