华为2014年机试题1 (输入1--50个数字,求出最小数和最大数的和 )

来源:互联网 发布:淘宝优惠券转成淘口令 编辑:程序博客网 时间:2024/04/29 18:55
http://blog.csdn.net/xuzhilong2009/article/details/11751001
//华为2014年机试题1:输入1--50个数字,求出最小数和最大数的和//输入以逗号隔开#include<stdio.h>#define N 50void 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("");}

原创粉丝点击