//華為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("");
}
