程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 北郵考研復試C說話上機標題精選

北郵考研復試C說話上機標題精選

編輯:關於C++

北郵考研復試C說話上機標題精選。本站提示廣大學習愛好者:(北郵考研復試C說話上機標題精選)文章只能為提供參考,不一定能成為您想要的結果。以下是北郵考研復試C說話上機標題精選正文


查找

    標題描寫: 
     
    輸出數組長度 n  
    輸出數組 a[1...n]  
    輸出查找個數m  
    輸出查找數字b[1...m]  
     
    輸入 YES or NO 查找有則YES 不然NO 。 
    輸出: 
     
    輸出有多組數據。 
    每組輸出n,然後輸出n個整數,再輸出m,然後再輸出m個整數(1<=m<=n<=100)。 
    輸入: 
     
    假如在n個數組中輸入YES不然輸入NO。 
    樣例輸出: 
     
    5 
    1 5 2 4 3 
    3 
    2 5 6 
    樣例輸入: 
     
    YES 
    YES 
    NO 

AC代碼:
這道題沒任何難度,就是兩個for輪回完成便可

  #include <stdio.h> 
  #include <stdlib.h> 
   
  int main() 
  { 
    int a[101], b[101]; 
    int n, m, i, j, flag; 
   
    while(scanf("%d", &n) != EOF) 
    { 
      //吸收輸出數組 
      for(i = 0; i < n; i ++) 
      { 
        scanf("%d", a + i); 
      } 
      //吸收查找數組 
      scanf("%d", &m); 
      for(j = 0; j < m; j ++) 
      { 
        scanf("%d", b + j); 
      } 
      //斷定查找存在 
      for(j = 0; j < m; j ++) 
      { 
        flag = 0; 
        for(i = 0; i < n; i ++) 
        { 
          if(b[j] == a[i]) 
          { 
            flag = 1; 
            break; 
          } 
        } 
        if(flag) 
        { 
          printf("YES\n"); 
        }else 
        { 
          printf("NO\n"); 
        } 
      } 
    } 
    return 0; 
  } 


假如如今,我相對會應用Java的HashMap去做這道標題


查找第K小數

    標題描寫: 
     
    查找一個數組的第K小的數,留意異樣年夜小算一樣年夜。  
    如  2 1 3 4 5 2 第三小數為3。 
    輸出: 
     
    輸出有多組數據。 
    每組輸出n,然後輸出n個整數(1<=n<=1000),再輸出k。 
    輸入: 
     
    輸入第k小的整數。 
    樣例輸出: 
     
    6 
    2 1 3 5 2 2 
    3 
    樣例輸入: 
     
    3 

AC代碼:
考核的就是簡略的疾速排序,上我的AC代碼

  #include <stdio.h> 
  #include <stdlib.h> 
   
  int partition(int *A, int left, int right); 
  void quicksort(int *A, int begin, int end); 
   
  int main() 
  { 
    int i, j, n, k; 
    int a[1001]; 
   
    while(scanf("%d",&n) != EOF) 
    { 
      //接收stdin輸出數據 
      for(i = 0; i < n; i ++) 
      { 
        scanf("%d",a + i); 
      } 
      scanf("%d",&k); 
   
      //疾速排序 
      quicksort(a, 0, n - 1); 
   
      //輸入第k小的數 
      for(i = 0, j = 0; i < n && j < k; i ++) 
      { 
        if(a[i] != a[i + 1]) 
        { 
          if(j == k - 1) 
          { 
            printf("%d\n",a[i]); 
            break; 
          }else 
          { 
            j ++; 
          } 
        } 
      } 
    } 
   
    return 0; 
  } 
   
  void quicksort(int *A, int begin, int end) 
  { 
    int pivot; 
   
    if(begin < end) 
    { 
      pivot = partition(A, begin, end); 
      quicksort(A, begin, pivot - 1); 
      quicksort(A, pivot + 1, end); 
    } 
  } 
   
  int partition(int *A, int left, int right) 
  { 
    int stand = A[left]; 
   
    while(left < right) 
    { 
      while(left < right && A[right] >= stand) 
      { 
        right --; 
      } 
      if(left < right) 
      { 
        A[left ++] = A[right]; 
      } 
      while(left < right && A[left] <= stand) 
      { 
        left ++; 
      } 
      if(left < right) 
      { 
        A[right --] = A[left]; 
      } 
    } 
    A[left] = stand; 
   
    return left; 
  } 

打牌

標題請求:

標題描寫:

    牌只要1到9,手裡拿著曾經排好序的牌a,對方出牌b,用法式斷定手中牌能否可以或許壓過對方出牌。
    規矩:出牌牌型有5種  
    [1]一張 如4 則5...9可壓過
    [2]兩張 如44 則55,66,77,...,99可壓過
    [3]三張 如444 規矩如[2]
    [4]四張 如4444 規矩如[2]
    [5]五張 牌型只要12345 23456 34567 45678 56789五個,前面的比後面的均年夜。

輸出:

    輸出有多組數據。
    每組輸出兩個字符串(字符串年夜小不跨越100)a,b。a字符串代表手中牌,b字符串代表處的牌。

輸入:

    壓過輸入YES 不然NO。

樣例輸出:

    12233445566677
    33

樣例輸入:

    YES

留意事項:
開端提交了3次,都是wa,發明有一種測試用例我沒法經由過程,也是上個代碼毛病的處所,測試用例以下:
樣例輸出:1122335566778899(不持續)12345
樣例輸入:yes
AC代碼:

  #include <stdio.h> 
  #include <stdlib.h> 
  #include <string.h> 
   
  int main() 
  { 
    char a[101]; 
    char b[101]; 
    char ch, key; 
    int i, lena, lenb, flag; 
    int count[11]; 
   
   
    while(scanf("%s",a) != EOF) 
    { 
      //吸收回車符 
      ch = getchar(); 
      //吸收出牌 
      scanf("%s",b); 
      ch = getchar(); 
      //長度 
      lena = strlen(a); 
      lenb = strlen(b); 
      //初始化 
      memset(count,0,sizeof(count)); 
      //遍歷手牌 
      for(i = 0; i < lena; i ++) 
      { 
        count[a[i] - '0'] ++; 
      }   
      //檢測對方出牌 
      switch(lenb) 
      { 
        case 1: 
        case 2: 
        case 3: 
        case 4: 
          flag = 0; 
          for(key = b[0] - '0' + 1; key <= 9; key ++) 
          { 
            if(count[key] >= lenb) 
            { 
              flag = 1; 
              break; 
            }         
          } 
          break; 
        case 5: 
          flag = 0; 
          for(key = b[0] - '0' + 1; key < 9; key ++) 
          { 
            if(count[key] > 0 && count[key + 1] > 0 && count[key + 2] > 0 && count[key + 3] > 0 && count[key + 4] > 0) 
            { 
              flag = 1; 
              break; 
            }   
          } 
          break; 
      } 
      //打印輸入 
      if(flag) 
      { 
        printf("YES\n"); 
      }else 
      { 
        printf("NO\n"); 
      } 
   
    } 
    return 0; 
  } 

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