//華為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]!=',') //輸入時要在半角輸入 { 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;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(""); }
//華為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(""); }