华为2014年机试题1

2014-11-23 22:26:03 · 作者: · 浏览: 4
//华为2014年机试题1:输入1--50个数字,求出最小数和最大数的和
//输入以逗号隔开
#include
#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]!=',')  //输入时要在半角输入
        {
            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]);


    return 0;
}
void sort(int a[],int n)  //选择排序
{
    int i,j;
    int k;
    int temp;
    for(i=0;ia[j])
                k=j;
        }
        if(i!=k)
        {
            temp = a[k];
            a[k] = a[i];
            a[i] = temp;
        }
    }
    for(i=0;i 
 
//华为2014年机试题1:输入1--50个数字,求出最小数和最大数的和
//输入以逗号隔开
#include
#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;ia[j]) k=j; } if(i!=k) { temp = a[k]; a[k] = a[i]; a[i] = temp; } } for(i=0;i