http://blog.csdn.net/xuzhilong2009/article/details/11751001
//华为2014年机试题1:输入1--50个数字,求出最小数和最大数的和
//输入以逗号隔开
#include<stdio.h>
#define N 50
void sort(int a[],int n);
int main(void)
{
char str[100];
int a[N]={0};
gets(str); //要点1:动态的输入1--50个整数,不能确定个数,只能用字符串输入,然后分离出来
int i=0;
int j=0;
int sign=1;
while(str[i]!='\0')
{
if(str[i]!=',') //输入时要在半角输入
{
if(str[i] == '-') //要点:2:有负整数的输入
{
// i++; //易错点1
sign=-1;
}
else if(str[i]!='\0') //不用else的话,负号也会减去‘0’
{
a[j]=a[j]*10 + str[i]-'0'; //要点3:输入的可以是多位数
}
}
i++;
if(str[i]==',' || str[i]=='\0') //这个判断是在i自加以后
{
a[j]=a[j]*sign; //易错点2
sign=1; 易错点3
j++; //j就是a数组的个数 范围0到j-1
}
}
sort(a,j);
printf("Max number + Min number = %d",a[0]+a[j-1]);
return 0;
}
void sort(int a[],int n) //选择排序
{
int i,j;
int k;
int temp;
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("");
}