程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 華為2014年機試題1

華為2014年機試題1

編輯:C++入門知識

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved