国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

北郵考研復試C語言上機題目精選

2020-05-23 14:15:51
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了北郵考研復試C語言上機題目精選,摘自2010年北郵CS的復試,需要的朋友可以參考下

查找

題目描述:

輸入數組長度 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循環實現即可

 

 
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3.  
  4. int main()  
  5. {  
  6. int a[101], b[101];  
  7. int n, m, i, j, flag;  
  8.  
  9. while(scanf("%d", &n) != EOF)  
  10. {  
  11. //接收輸入數組  
  12. for(i = 0; i < n; i ++)  
  13. {  
  14. scanf("%d", a + i);  
  15. }  
  16. //接收查找數組  
  17. scanf("%d", &m);  
  18. for(j = 0; j < m; j ++)  
  19. {  
  20. scanf("%d", b + j);  
  21. }  
  22. //判斷查找存在  
  23. for(j = 0; j < m; j ++)  
  24. {  
  25. flag = 0;  
  26. for(i = 0; i < n; i ++)  
  27. {  
  28. if(b[j] == a[i])  
  29. {  
  30. flag = 1;  
  31. break;  
  32. }  
  33. }  
  34. if(flag)  
  35. {  
  36. printf("YES/n");  
  37. }else 
  38. {  
  39. printf("NO/n");  
  40. }  
  41. }  
  42. }  
  43. return 0;  
  44. }  

如果現在,我絕對會利用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代碼

 

 
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3.  
  4. int partition(int *A, int left, int right);  
  5. void quicksort(int *A, int begin, int end);  
  6.  
  7. int main()  
  8. {  
  9. int i, j, n, k;  
  10. int a[1001];  
  11.  
  12. while(scanf("%d",&n) != EOF)  
  13. {  
  14. //接受stdin輸入數據  
  15. for(i = 0; i < n; i ++)  
  16. {  
  17. scanf("%d",a + i);  
  18. }  
  19. scanf("%d",&k);  
  20.  
  21. //快速排序  
  22. quicksort(a, 0, n - 1);  
  23.  
  24. //輸出第k小的數  
  25. for(i = 0, j = 0; i < n && j < k; i ++)  
  26. {  
  27. if(a[i] != a[i + 1])  
  28. {  
  29. if(j == k - 1)  
  30. {  
  31. printf("%d/n",a[i]);  
  32. break;  
  33. }else 
  34. {  
  35. j ++;  
  36. }  
  37. }  
  38. }  
  39. }  
  40.  
  41. return 0;  
  42. }  
  43.  
  44. void quicksort(int *A, int begin, int end)  
  45. {  
  46. int pivot;  
  47.  
  48. if(begin < end)  
  49. {  
  50. pivot = partition(A, begin, end);  
  51. quicksort(A, begin, pivot - 1);  
  52. quicksort(A, pivot + 1, end);  
  53. }  
  54. }  
  55.  
  56. int partition(int *A, int left, int right)  
  57. {  
  58. int stand = A[left];  
  59.  
  60. while(left < right)  
  61. {  
  62. while(left < right && A[right] >= stand)  
  63. {  
  64. right --;  
  65. }  
  66. if(left < right)  
  67. {  
  68. A[left ++] = A[right];  
  69. }  
  70. while(left < right && A[left] <= stand)  
  71. {  
  72. left ++;  
  73. }  
  74. if(left < right)  
  75. {  
  76. A[right --] = A[left];  
  77. }  
  78. }  
  79. A[left] = stand;  
  80.  
  81. return left;  
  82. }  

打牌

題目要求:

題目描述:

牌只有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代碼:

 

 
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4.  
  5. int main()  
  6. {  
  7. char a[101];  
  8. char b[101];  
  9. char ch, key;  
  10. int i, lena, lenb, flag;  
  11. int count[11];  
  12.  
  13.  
  14. while(scanf("%s",a) != EOF)  
  15. {  
  16. //接收回車符  
  17. ch = getchar();  
  18. //接收出牌  
  19. scanf("%s",b);  
  20. ch = getchar();  
  21. //長度  
  22. lena = strlen(a);  
  23. lenb = strlen(b);  
  24. //初始化  
  25. memset(count,0,sizeof(count));  
  26. //遍歷手牌  
  27. for(i = 0; i < lena; i ++)  
  28. {  
  29. count[a[i] - '0'] ++;  
  30. }  
  31. //檢測對方出牌  
  32. switch(lenb)  
  33. {  
  34. case 1:  
  35. case 2:  
  36. case 3:  
  37. case 4:  
  38. flag = 0;  
  39. for(key = b[0] - '0' + 1; key <= 9; key ++)  
  40. {  
  41. if(count[key] >= lenb)  
  42. {  
  43. flag = 1;  
  44. break;  
  45. }  
  46. }  
  47. break;  
  48. case 5:  
  49. flag = 0;  
  50. for(key = b[0] - '0' + 1; key < 9; key ++)  
  51. {  
  52. if(count[key] > 0 && count[key + 1] > 0 && count[key + 2] > 0 && count[key + 3] > 0 && count[key + 4] > 0)  
  53. {  
  54. flag = 1;  
  55. break;  
  56. }  
  57. }  
  58. break;  
  59. }  
  60. //打印輸出  
  61. if(flag)  
  62. {  
  63. printf("YES/n");  
  64. }else 
  65. {  
  66. printf("NO/n");  
  67. }  
  68.  
  69. }  
  70. return 0;  
  71. }  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 政和县| 永胜县| 黄石市| 肥东县| 桃江县| 介休市| 将乐县| 饶阳县| 潼关县| 灵璧县| 镇安县| 平度市| 高碑店市| 山阴县| 宁远县| 容城县| 桂阳县| 永顺县| 株洲市| 南郑县| 高雄市| 新田县| 武清区| 肇东市| 江津市| 阳朔县| 武城县| 卓资县| 凯里市| 晋城| 彭山县| 环江| 双桥区| 乐昌市| 西和县| 灵山县| 鄯善县| 赫章县| 宁津县| 奎屯市| 星子县|