最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

北郵計算機考研復試題的C語言解答精選

 更新時間:2015年08月16日 09:49:12   作者:低調小一  
這篇文章主要介紹了北郵計算機考研復試題目的C語言解答精選,選自2012年的一些基礎的上機題目,需要的朋友可以參考下

二進制數(shù)
題目

    題目描述: 
      大家都知道,數(shù)據(jù)在計算機里中存儲是以二進制的形式存儲的。 
      有一天,小明學了C語言之后,他想知道一個類型為unsigned int 類型的數(shù)字,存儲在計算機中的二進制串是什么樣子的。 
      你能幫幫小明嗎?并且,小明不想要二進制串中前面的沒有意義的0串,即要去掉前導0。 
    輸入: 
    第一行,一個數(shù)字T(T<=1000),表示下面要求的數(shù)字的個數(shù)。 
    接下來有T行,每行有一個數(shù)字n(0<=n<=10^8),表示要求的二進制串。 
    輸出: 
    輸出共T行。每行輸出求得的二進制串。 
    樣例輸入: 
    5 
    23 
    535 
    2624 
    56275 
    989835 
    樣例輸出: 
    10111 
    1000010111 
    101001000000 
    1101101111010011 
    11110001101010001011 


ac代碼
沒什么可說的,簡單的機制轉換,連大數(shù)除法都沒考察!

  #include <stdio.h> 
  #include <string.h> 
  #include <stdlib.h> 
    
  struct stack 
  { 
    int top; 
    int data[100]; 
  }; 
    
  void convert_to_binary(struct stack *s, unsigned long int d) 
  { 
    s->top = 0; 
    
    while (d) { 
      s->data[s->top ++] = d % 2; 
      d /= 2; 
    } 
    
    while (s->top) { 
      printf("%d", s->data[-- s->top]); 
    } 
    printf("\n"); 
  } 
    
  int main() 
  { 
    int i, n; 
    unsigned long int d; 
    struct stack *s = (struct stack*)malloc(sizeof(struct stack)); 
    
    while (scanf("%d", &n) != EOF) { 
      for (i = 0; i < n; i ++) { 
        scanf("%ld", &d); 
        if (d != 0) { 
          convert_to_binary(s, d); 
        }else { 
          printf("0\n"); 
        } 
      } 
    } 
    
    return 0; 
  } 

    /**************************************************************
        Problem: 1473
        User: wangzhengyi
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:904 kb
    ****************************************************************/ 

二叉排序樹
題目

    題目描述: 
            二叉排序樹,也稱為二叉查找樹??梢允且活w空樹,也可以是一顆具有如下特性的非空二叉樹: 
     
            1. 若左子樹非空,則左子樹上所有節(jié)點關鍵字值均不大于根節(jié)點的關鍵字值; 
            2. 若右子樹非空,則右子樹上所有節(jié)點關鍵字值均不小于根節(jié)點的關鍵字值; 
            3. 左、右子樹本身也是一顆二叉排序樹。 
     
      現(xiàn)在給你N個關鍵字值各不相同的節(jié)點,要求你按順序插入一個初始為空樹的二叉排序樹中,每次插入后成功后,求相應的父親節(jié)點的關鍵字值,如果沒有父親節(jié)點,則輸出-1。 
    輸入: 
    輸入包含多組測試數(shù)據(jù),每組測試數(shù)據(jù)兩行。 
    第一行,一個數(shù)字N(N<=100),表示待插入的節(jié)點數(shù)。 
    第二行,N個互不相同的正整數(shù),表示要順序插入節(jié)點的關鍵字值,這些值不超過10^8。 
    輸出: 
    輸出共N行,每次插入節(jié)點后,該節(jié)點對應的父親節(jié)點的關鍵字值。 
    樣例輸入: 
    5 
    2 5 1 3 4 
    樣例輸出: 
    -1 
    2 
    2 
    5 
    3 


ac代碼
沒什么思路,最簡單的構建二叉排序樹而已

   

 #include <stdio.h> 
  #include <stdlib.h> 
  #include <string.h> 
    
  struct btree 
  { 
    struct btree *lchild, *rchild; 
    unsigned long int data; 
  }; 
    
  struct btree* create_btree(struct btree *t, unsigned long int d, unsigned long int parent); 
    
  int main() 
  { 
    int i, n; 
    unsigned long int d; 
    struct btree *t; 
    
    while (scanf("%d", &n) != EOF) { 
      t = NULL; 
      for (i = 0; i < n; i ++) { 
        scanf("%ld", &d); 
        t = create_btree(t, d, -1); 
      } 
    } 
    
    return 0; 
  } 
    
  struct btree* create_btree(struct btree *t, unsigned long int d, unsigned long int parent) 
  { 
    if (t == NULL) { 
      t = (struct btree *)malloc(sizeof(struct btree)); 
      t->data = d; 
      t->lchild = NULL; 
      t->rchild = NULL; 
      printf("%ld\n", parent);     
    }else if(t->data > d) { 
      t->lchild = create_btree(t->lchild, d, t->data); 
    }else if(t->data < d) { 
      t->rchild = create_btree(t->rchild, d, t->data); 
    }else { 
      exit(EXIT_FAILURE); 
    } 
    
    return t; 
  } 

       
    /**************************************************************
        Problem: 1467
        User: wangzhengyi
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:904 kb
    ****************************************************************/ 


矩陣冪
題目

    題目描述: 
    給定一個n*n的矩陣,求該矩陣的k次冪,即P^k。 
    輸入: 
    輸入包含多組測試數(shù)據(jù)。 
    數(shù)據(jù)的第一行為一個整數(shù)T(0<T<=10),表示要求矩陣的個數(shù)。 
    接下來有T組測試數(shù)據(jù),每組數(shù)據(jù)格式如下:  
    第一行:兩個整數(shù)n(2<=n<=10)、k(1<=k<=5),兩個數(shù)字之間用一個空格隔開,含義如上所示。 
    接下來有n行,每行n個正整數(shù),其中,第i行第j個整數(shù)表示矩陣中第i行第j列的矩陣元素Pij且(0<=Pij<=10)。另外,數(shù)據(jù)保證最后結果不會超過10^8。 
    輸出: 
    對于每組測試數(shù)據(jù),輸出其結果。格式為: 
    n行n列個整數(shù),每行數(shù)之間用空格隔開,注意,每行最后一個數(shù)后面不應該有多余的空格。 
    樣例輸入: 
    3 
    2 2 
    9 8 
    9 3 
    3 3 
    4 8 4 
    9 3 0 
    3 5 7 
    5 2 
    4 0 3 0 1 
    0 0 5 8 5 
    8 9 8 5 3 
    9 6 1 7 8 
    7 2 5 7 3 
    樣例輸出: 
    153 96 
    108 81 
    1216 1248 708 
    1089 927 504 
    1161 1151 739 
    47 29 41 22 16 
    147 103 73 116 94 
    162 108 153 168 126 
    163 67 112 158 122 
    152 93 93 111 97 

ac代碼
這個也是挺簡單的,就是個矩陣乘法,三個for循環(huán)即可

 

  #include <stdio.h> 
  #include <stdlib.h> 
  #include <string.h> 
    
  #define LEN 15 
    
  int a[LEN][LEN], b[LEN][LEN], c[LEN][LEN]; 
    
  void multiplay_matrix(); 
    
    
  int main() 
  { 
    int t, n, k, i, j, d; 
    
    scanf("%d", &t); 
    while (t --) { 
      // 接收矩陣 
      scanf("%d %d", &n, &k); 
      for (i = 0; i < n; i ++) { 
        for (j = 0; j < n; j ++) { 
          scanf("%d", &d); 
          a[i][j] = d; 
          b[i][j] = d; 
          c[i][j] = d; 
        } 
      } 
    
      // 矩陣的冪 
      if (k != 1) { 
        multiplay_matrix(k, n); 
      } 
    
      for (i = 0; i < n; i ++) { 
        for (j = 0; j < n; j ++) { 
          if (j == n - 1) { 
            printf("%d\n", c[i][j]); 
          }else { 
            printf("%d ", c[i][j]); 
          } 
        } 
      } 
    } 
    
    return 0; 
  } 
    
  void multiplay_matrix(int k, int n) 
  { 
    int i, j, h, data; 
    k --; 
    while (k --) { 
      for (i = 0; i < n; i ++) { 
        for (j = 0; j < n; j ++) { 
          for (h = data = 0; h < n; h ++) { 
            data += b[i][h] * a[h][j]; 
          } 
          c[i][j] = data; 
        } 
      } 
      for (i = 0; i < n; i ++) { 
        for (j = 0; j < n; j ++) { 
          b[i][j] = c[i][j]; 
        } 
      } 
    } 
  } 

    /**************************************************************
        Problem: 1474
        User: wangzhengyi
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:912 kb
    ****************************************************************/ 


IP數(shù)據(jù)包解析
題目

201581695025979.png (521×497)

    頭部長度單位為4字節(jié)。 
      你的任務是,簡要分析輸入數(shù)據(jù)中的若干個TCP數(shù)據(jù)段的頭部。 詳細要求請見輸入輸出部分的說明。 
    輸入: 
    第一行為一個整數(shù)T,代表測試數(shù)據(jù)的組數(shù)。 
    以下有T行,每行都是一個TCP數(shù)據(jù)包的頭部分,字節(jié)用16進制表示,以空格隔開。數(shù)據(jù)保證字節(jié)之間僅有一個空格,且行首行尾沒有多余的空白字符。 
    保證輸入數(shù)據(jù)都是合法的。 
    輸出: 
    對于每個TCP數(shù)據(jù)包,輸出如下信息: 
    Case #x,x是當前測試數(shù)據(jù)的序號,從1開始。 
    Total length = L bytes,L是整個IP數(shù)據(jù)包的長度,單位是1字節(jié)。 
    Source = xxx.xxx.xxx.xxx,用點分十進制輸出源IP地址。輸入數(shù)據(jù)中不存在IPV6數(shù)據(jù)分組。 
    Destination = xxx.xxx.xxx.xxx,用點分十進制輸出源IP地址。輸入數(shù)據(jù)中不存在IPV6數(shù)據(jù)分組。 
    Source Port = sp,sp是源端口號。 
    Destination Port = dp,dp是目標端口號。 
    對于每個TCP數(shù)據(jù)包,最后輸出一個多余的空白行。 
    具體格式參見樣例。 
    請注意,輸出的信息中,所有的空格、大小寫、點符號、換行均要與樣例格式保持一致,并且不要在任何數(shù)字前輸出多余的前導0,也不要輸出任何不必要的空白字符。 
    樣例輸入: 
    2 
    45 00 00 34 7a 67 40 00 40 06 63 5a 0a cd 0a f4 7d 38 ca 09 cd f6 00 50 b4 d7 ae 1c 9b cf f2 40 80 10 ff 3d fd d0 00 00 01 01 08 0a 32 53 7d fb 5e 49 4e c8 
    45 00 00 c6 56 5a 40 00 34 06 e0 45 cb d0 2e 01 0a cd 0a f4 00 50 ce 61 e1 e9 b9 ee 47 c7 37 34 80 18 00 b5 81 8f 00 00 01 01 08 0a 88 24 fa c6 32 63 cd 8d 
    樣例輸出: 
    Case #1 
    Total length = 52 bytes 
    Source = 10.205.10.244 
    Destination = 125.56.202.9 
    Source Port = 52726 
    Destination Port = 80 
     
    Case #2 
    Total length = 198 bytes 
    Source = 203.208.46.1 
    Destination = 10.205.10.244 
    Source Port = 80 
    Destination Port = 52833 

ac代碼
注意取源端口號和目的端口號時需要注意ip頭部長度的判斷,IHL,其它就沒神馬難度了

  #include <stdio.h> 
  #include <stdlib.h> 
  #include <string.h> 
    
  #define LEN 1000 
    
  int change_tint(char *str, int begin, int num) 
  { 
    int i; 
    char *temp = (char *)malloc(sizeof(char) * (num + 1)); 
    
    for(i = 0; i < num; i ++) { 
      temp[i] = str[begin + i]; 
    } 
    temp[i] = '\0'; 
    
    return strtol(temp, NULL, 16); 
  } 
    
  void ip_field(char *str, int begin, int num) 
  { 
    int i, flag, ip; 
    for (i = 0, flag = 1; i < num; i += 2) { 
      ip = change_tint(str, begin + i, 2); 
      printf("%d", ip); 
      if (flag <= 3) { 
        printf("."); 
        flag ++; 
      } 
    } 
    printf("\n"); 
  } 
    
    
  int main() 
  { 
    int index, i, j, n, length, ihl; 
    char ipstr[LEN], temp[LEN]; 
    
    while (scanf("%d\n", &n) != EOF) { 
      if (n != 0) { 
        for (index = 1; index <= n; index ++) { 
          memset(ipstr, 0, sizeof(ipstr)); 
          memset(temp, 0, sizeof(temp));  
          gets(temp); 
          // 去除空格 
          for (i = j = 0, length = strlen(temp); i < length; i ++) { 
            if (temp[i] != ' ') { 
              ipstr[j ++] = temp[i]; 
            } 
          } 
          ipstr[j] = '\0'; 
    
          // 當前測試數(shù)據(jù)的序號 
          printf("Case #%d\n", index); 
    
          // 整個ip數(shù)據(jù)包的長度 
          length = change_tint(ipstr, 4, 4); 
          printf("Total length = %d bytes\n", length); 
    
          // 源ip地址和目的ip地址 
          printf("Source = "); 
          ip_field(ipstr, 24, 8); 
          printf("Destination = "); 
          ip_field(ipstr, 32, 8); 
    
          // 源端口號和目的端口號 
          ihl = change_tint(ipstr, 1, 1) * 4 * 2; 
          printf("Source Port = %d\n", change_tint(ipstr, ihl, 4)); 
          printf("Destination Port = %d\n", change_tint(ipstr, ihl + 4, 4)); 
          printf("\n"); 
        } 
      } 
    } 
    return 0; 
  } 

       
    /**************************************************************
        Problem: 1475
        User: wangzhengyi
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:908 kb
    ****************************************************************/ 

相關文章

  • C語言形參與實參使用的差別講解

    C語言形參與實參使用的差別講解

    形參出現(xiàn)在函數(shù)定義中,在整個函數(shù)體內都可以使用, 離開該函數(shù)則不能使用。實參出現(xiàn)在主調函數(shù)中,進入被調函數(shù)后,實參變量也不能使用,形參和實參的功能是作數(shù)據(jù)傳送。發(fā)生函數(shù)調用時, 主調函數(shù)把實參的值傳送給被調函數(shù)的形參從而實現(xiàn)主調函數(shù)向被調函數(shù)的數(shù)據(jù)傳送
    2023-02-02
  • C語言實現(xiàn)數(shù)學表達式運算

    C語言實現(xiàn)數(shù)學表達式運算

    這篇文章主要為大家詳細介紹了c語言實現(xiàn)數(shù)學表達式運算,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C/C++ 原生API實現(xiàn)線程池的方法

    C/C++ 原生API實現(xiàn)線程池的方法

    線程池,簡單來說就是有一堆已經(jīng)創(chuàng)建好的線程,接下來通過本文給大家介紹C/C++ 原生API實現(xiàn)線程池的方法,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • C語言動態(tài)內存分配圖文講解

    C語言動態(tài)內存分配圖文講解

    給數(shù)組分配多大的空間?你是否和初學C時的我一樣,有過這樣的疑問。這一期就來聊一聊動態(tài)內存的分配,讀完這篇文章,你可能對內存的分配有一個更好的理解
    2023-01-01
  • C語言qsort()函數(shù)的使用方法詳解

    C語言qsort()函數(shù)的使用方法詳解

    qsort是一個庫函數(shù),基于快速排序算法實現(xiàn)的一個排序的函數(shù),下面這篇文章主要給大家介紹了關于C語言qsort()函數(shù)使用的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • C++構建函數(shù)使用介紹

    C++構建函數(shù)使用介紹

    構造函數(shù)主要作用在于創(chuàng)建對象時為對象的成員屬性賦值,構造函數(shù)由編譯器自動調用,無須手動調用;析構函數(shù)主要作用在于對象銷毀前系統(tǒng)自動調用,執(zhí)行一 些清理工作
    2022-08-08
  • C語言簡明講解歸并排序的應用

    C語言簡明講解歸并排序的應用

    這篇文章主要介紹了 c語言排序之歸并排序,歸并就是把兩個或多個序列合并,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • OpenCV實現(xiàn)馬賽克功能

    OpenCV實現(xiàn)馬賽克功能

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)馬賽克功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++實現(xiàn)編寫二維碼的示例代碼

    C++實現(xiàn)編寫二維碼的示例代碼

    這篇文章主要為大家詳細介紹如何基于C++實現(xiàn)編寫二維碼的功能,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下
    2023-06-06
  • C++容器算法示例詳解

    C++容器算法示例詳解

    在談到容器算法,我們大概率會用到謂詞predicate,謂詞返回的類型是布爾類型(bool)可以是lambda表達式、函數(shù)對象以及其它可調用的對象,這篇文章主要介紹了C++容器算法,需要的朋友可以參考下
    2024-08-08

最新評論

肃南| 衡水市| 五华县| 绿春县| 米脂县| 辛集市| 资源县| 九江市| 宣恩县| 济南市| 安远县| 安福县| 孟村| 临夏县| 深州市| 保德县| 读书| 根河市| 谢通门县| 富裕县| 玉门市| 苍溪县| 兴义市| 廉江市| 巴楚县| 静乐县| 安国市| 永泰县| 疏附县| 勐海县| 左贡县| 汉阴县| 乾安县| 龙游县| 阿坝| 黄大仙区| 大丰市| 新平| 甘谷县| 龙里县| 湛江市|