华为历年机试题型总结系列(七)

来源:互联网 发布:淘宝模特收费 编辑:程序博客网 时间:2024/05/17 01:42

18.身高排序

输入一组身高在170到190之间(5个身高),比较身高差,选出身高差最小的两个身高;若身高差相同,选平均身高高的那两个身高;从小到大输出:

如输入:170 181 173 186 190 输出:170 173

#include<stdio.h>int main(void){     int pInputStr[5]={0};     int pOutputStr[2]={0};     int height_diverse[4]={0};     int i,j,temp,min_diverse=100;       printf("Input 5 heights:\n");     for(i=0;i<5;++i)         scanf("%d",&pInputStr[i]);          for(i=0;i<4;++i)     {           for(j=0;j<4-i;++j)           {                if(pInputStr[j]>pInputStr[j+1])   //冒泡升序排列                {                        temp=pInputStr[j];                        pInputStr[j]=pInputStr[j+1];                        pInputStr[j+1]=temp;                 }            }     }     for(i=0;i<4;++i)         height_diverse[i]=pInputStr[i+1]-pInputStr[i]; //升序排列,相邻之间的差为最小差     for(i=0;i<4;++i)         min_diverse=(min_diverse<height_diverse[i])?min_diverse:height_diverse[i]; //最小身高差          for(i=0;i<4;++i)      {           if(height_diverse[i]==min_diverse)  //因为升序排列,当出现相同身高差时,平均身高大的会覆盖平均身高小的           {                 pOutputStr[0]=pInputStr[i];                 pOutputStr[1]=pInputStr[i+1];           }      }      printf("The minist diverse height: %d,%d",pOutputStr[0],pOutputStr[1]);      return 0;}

19.数字大小

输入一串字符,只包含“0-10”和‘,’找出其中最大和最小数字(可能不止一个),输出最后剩余数字。如输入:3,3,4,5,6,77 输出:4,5,6 输入:2,5,4,10,5,2 输出:5,4,5

#include<stdio.h>#include<string.h>void DeleteMinMax(char *pInputStr, int StrLength, int *pOutputStr){     int i,j=0,k=0,max_number=0,min_number=50;     int pOutputStr_Int[50]={0};     for(i=0;i<StrLength;)     {         if(pInputStr[i]==',')                  ++i;         else if(pInputStr[i+1]=='0')  //10的情况         {                 pOutputStr_Int[j++]=10;                 i+=2;         }                      else         //0-9的情况                 pOutputStr_Int[j++]=pInputStr[i++]-48; //0-9字符转换成对应的数字     }      for(i=0;i<j;++i)      {            max_number=(max_number>pOutputStr_Int[i])?max_number:pOutputStr_Int[i];            min_number=(min_number<pOutputStr_Int[i])?min_number:pOutputStr_Int[i];      }      for(i=0;i<j;)      {             if(pOutputStr_Int[i]==max_number||pOutputStr_Int[i]==min_number)                   ++i;             else    //输出除了最大最小值之外的数字                  pOutputStr[k++]=pOutputStr_Int[i++];      }      for(i=0;i<k;++i)      printf("%d,"pOutputStr[i]);}int main(void){    char pInputStr[50];    int pOutputStr[50]={0};    int StrLength,i;    printf("Input the numbers and use ',' to seperate each other:\n");    gets(pInputStr);    StrLength=strlen(pInputStr);    DeleteMinMax(pInputStr,StrLength,pOutputStr);        return 0;}


0 0
原创粉丝点击