华为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("");}