精品国产一级毛片大全,毛片一级在线,毛片免费观看的视频在线,午夜毛片福利

2016年華為上機(jī)筆試題

  1.輸入整型數(shù)組求數(shù)組的最小數(shù)和最大數(shù)之和,例如輸入1,2,3,4則輸出為5,當(dāng)輸入只有一個(gè)數(shù)的時(shí)候,則最小數(shù)和最大數(shù)都是該數(shù),例如只輸入1,則輸出為2;另外數(shù)組的長度不超過50

  參考代碼:

  #include

  main()

  {

  int num[50]={0};

  int i,n;

  printf(“請(qǐng)輸入整型數(shù)組的長度(1~50):”);

  scanf(“%d”,&n);

  printf(“請(qǐng)輸入整型數(shù)組的元素:”);

  for (i=0;i

  {

  scanf(“%d”,&num[i]);

  }

  int min_num=num[0];

  int max_num=num[0];

  for(int j=0;j

  {

  if(max_num

  max_num=num[j];

  else if(min_num>num[j])

  min_num=num[j];

  }

  int sum=min_num+max_num;

  printf(“數(shù)組中最大與最小值之和:%d\n”,sum);

  return 0;

  }

  2.求兩個(gè)長長整型的數(shù)據(jù)的和并輸出,例如輸入1233333333333333 。。。 3111111111111111111111111.。。。,則輸出。。。。

  #include

  #include

  #include

  main()

  {

  char *num1,*num2; //兩個(gè)長長整型數(shù)據(jù)

  char *sum;

  // int temp;

  int len_num1,len_num2; // 兩個(gè)長長整型數(shù)據(jù)的長度

  int len_max,len_min;

  num1=(char*)malloc(sizeof(char));

  num2=(char*)malloc(sizeof(char));

  printf(“輸入兩個(gè)長長整型數(shù)據(jù):”);

  scanf(“%s”,num1);

  printf(“輸入兩個(gè)長長整型數(shù)據(jù):”);

  scanf(“%s”,num2);

  len_num1=strlen(num1);

  len_num2=strlen(num2);

  len_max=(len_num1>=len_num2)? len_num1:len_num2;

  len_min=(len_num1<=len_num2)? len_num1:len_num2;

  int len_max1=len_max;

  sum=(char*)malloc(sizeof(char)*len_max);

  memset(sum,0×00,len_max+1);//切忌初始化

  for(;len_num1>0&&len_num2>0;len_num1–,len_num2–)

  {

  sum[len_max--]=((num1[len_num1-1]-’0′)+(num2[len_num2-1]-’0′));

  }

  if(len_num1>0)

  {

  sum[len_max--]=num1[len_num1 - 1 ]-’0′;

  len_num1–;

  }

  if(len_num2>0)

  {

  sum[len_max--]=num1[len_num2 - 1]-’0′;

  len_num2–;

  }

  for(int j=len_max1;j>=0;j–) //實(shí)現(xiàn)進(jìn)位操作

  {

  // temp=sum[j]-’0′;

  if(sum[j]>=10)

  {

  sum[j-1]+=sum[j]/10;

  sum[j]%=10;

  }

  }

  char *outsum=(char*)malloc(sizeof(char)*len_max1);

  j=0;

  while(sum[j]==0) //跳出頭部0元素

  j++;

  for(int m=0;m

  outsum[m]=sum[j]+’0′;

  outsum[m]=’\0′;

  printf(“輸出兩長長整型數(shù)據(jù)之和:%s\n”,outsum);

  return 0;

  }

  3.通過鍵盤輸入一串小寫字母(a~z)組成的字符串。請(qǐng)編寫一個(gè)字符串過濾程序,若字符串中出現(xiàn)多個(gè)相同的字符,將非首次出現(xiàn)的字符過濾掉。

  比如字符串”abacacde”過濾結(jié)果為”abcde”。

  要求實(shí)現(xiàn)函數(shù):

  void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);

  【輸入】 pInputStr:輸入字符串

  lInputLen:輸入字符串長度

  【輸出】 pOutputStr:輸出字符串,空間已經(jīng)開辟好,與輸入字符串等長;

  參考代碼:

  #include

  #include

  #include

  void stringFilter(const char *p_str, long len, char *p_outstr)

  {

  int array[256]={0};

  const char *tmp = p_str;

  for(int j=0;j

  {

  if(array[tmp[j]]==0)

  *p_outstr++= tmp[j];

  array[tmp[j]]++;

  }

  *p_outstr = ‘\0′;

  }

  void main()

  {

  char *str = “cccddecc”;

  int len = strlen(str);

  char * outstr = (char *)malloc(len*sizeof(char));

  stringFilter(str,len,outstr);

  printf(“%s\n”,outstr);

  free(outstr);

  outstr = NULL;

  }

  5.通過鍵盤輸入100以內(nèi)正整數(shù)的加、減運(yùn)算式,請(qǐng)編寫一個(gè)程序輸出運(yùn)算結(jié)果字符串。

  輸入字符串的格式為:”操作數(shù)1 運(yùn)算符 操作數(shù)2″,”操作數(shù)”與”運(yùn)算符”之間以一個(gè)空格隔開。

  補(bǔ)充說明:

  1. 操作數(shù)為正整數(shù),不需要考慮計(jì)算結(jié)果溢出的情況。

  2. 若輸入算式格式錯(cuò)誤,輸出結(jié)果為”0″。

  要求實(shí)現(xiàn)函數(shù):

  void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);

  【輸入】 pInputStr: 輸入字符串

  lInputLen: 輸入字符串長度

  【輸出】 pOutputStr: 輸出字符串,空間已經(jīng)開辟好,與輸入字符串等長;

  #include

  #include

  #include

  void arithmetic(const char *input, long len, char *output)

  {

  char s1[10];

  char s2[10];

  char s3[10];

  int cnt = 0;

  int len_input=strlen(input);

  for(int i=0;i

  {

  if(input[i]==’ ‘)

  cnt++;

  }

  if(cnt!=2)

  {

  *output++ = ’0′;

  *output = ‘\0′;

  return;

  }

  sscanf(input,”%s %s %s”,s1,s2,s3);

  if(strlen(s2)!=1||(s2[0]!=’+'&&s2[0]!=’-'))

  {

  *output++ = ’0′;

  *output = ‘\0′;

  return;

  }

  int len_s1=strlen(s1);

  for(i=0;i

  {

  if(s1[i]<’0′||s1[i]>’9′)

  {

  *output++ = ’0′;

  *output = ‘\0′;

  return;

  }

  }

  int len_s3=strlen(s3);

  for(i=0;i

  {

  if(s3[i]<’0′||s3[i]>’9′)

  {

  *output++ = ’0′;

  *output = ‘\0′;

  return;

  }

  }

  int x = atoi(s1);

  int y = atoi(s3);

  if(s2[0]==’+')

  {

  int result = x+y;

  itoa(result,output,10);

  }

  else if(s2[0]==’-')

  {

  int result = x-y;

  itoa(result,output,10);

  }

  else

  {

  *output++ = ’0′;

  *output = ‘\0′;

  return;

  }

  }

  void main()

  {

  char str[] = {“10 – 23″};

  char outstr[10];

  int len = strlen(str);

  arithmetic(str,len,outstr);

  printf(“%s\n”,str);

  printf(“%s\n”,outstr);

  }

  6.一組人(n個(gè)),圍成一圈,從某人開始數(shù)到第三個(gè)的人出列,再接著從下一個(gè)人開始數(shù),最終輸出最終出列的人

  (約瑟夫環(huán)是一個(gè)數(shù)學(xué)的應(yīng)用問題:已知n個(gè)人(以編號(hào)1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號(hào)為k的人開始報(bào)數(shù),數(shù)到m的那個(gè)人出列;他的下一個(gè)人又從1開始報(bào)數(shù),數(shù)到m的那個(gè)人又出列;依此規(guī)律重復(fù)下去,直到圓桌周圍的人全部出列。)

  #include

  #include

  #include

  #include

  typedef struct Node

  {

  int data;

  struct Node *next;

  }LinkList;

  LinkList *create(int n)

  {

  LinkList *p,*q,*head;

  int i=1;

  p=(LinkList*)malloc(sizeof(LinkList));

  p->data=i;

  head=p;

  for(i=1;i<=n;i++)

  {

  q=(LinkList*)malloc(sizeof(LinkList));

  q->data=i+1;

  p->next=q;

  p=q;

  }

  p->next=head; //使鏈表尾連接鏈表頭,形成循環(huán)鏈表

  return head;

  free(p);

  p=NULL;

  free(q);

  q=NULL;

  }

  void deletefun(LinkList *L,int m)

  {

  LinkList *p,*q,*temp;

  int i;

  p=L;

  while(p->next!=p)

  {

  for(i=1;i

  {

  q=p;

  p=p->next;

  }

  printf(“%5d”,p->data);

  temp=p;

  q->next=p->next;

  p=p->next;

  free(temp);

  }

  printf(“%5d\n”,p->data);

  }

  int main()

  {

  int n=7,m=3;

  LinkList *head1;

  head1=create(n);

  deletefun(head1,m);

  return 0;

  }

  7..輸入一串字符,只包含”0-10″和”,”找出其中最小的數(shù)字和最大的數(shù)字(可能不止一個(gè)),輸出最后剩余數(shù)字個(gè)數(shù)。如輸入 “3,3,4,5,6,7,7″

  #include

  #include

  #include

  void main()

  {

  char str[100];

  printf(“輸入一組字符串:\n”);

  scanf(“%s”,&str);

  int len=strlen(str);

  int array[100];

  int count=0;

  for(int i=0;i

  {

  if(str[i]>=’0′&&str[i]<=’9′)

  array[count++]=str[i]-’0′;

  }

  array[count]=’\0′;

  int result=count;

  int min=array[0];

  int max=array[0];

  for(int j=0;j

  {

  if(max

  max=array[j];

  else if(min>array[j])

  min=array[j];

  }

  for(int k=0;k

  {

  if(array[k]==min)

  result–;

  if(array[k]==max)

  result–;

  }

  printf(“%d\n”,result);

  }

本文已影響6827
上一篇:2015年精選java筆試題及答案 下一篇:2015中國電信筆試題(附答案)

相關(guān)文章推薦

|||||