廈門大學考研上機真題


廈門大學考研上機真題

 

來自於:王道論壇-2017廈大計算機專碩復試題

 

 

判斷回文數字

第一題判斷一個整數是否為回文數,例如123321

 1 #include <stdio.h>
 2 
 3 // 判斷是否為回文數列
 4 int main()
 5 {
 6     int num, huiwei, temp;
 7     while(scanf("%d", &num) != EOF)
 8     {
 9         temp = num;
10         huiwei = 0;
11         while(temp > 0)
12         {
13             huiwei = huiwei * 10 + (temp % 10);
14             temp = temp / 10;
15         }
16         if(huiwei == num)
17             printf("Yes\n");
18         else
19             printf("No\n");
20     }
21 }

第二題求a-b之間的非素數個數,用最小的代價。

 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 // a-b之間的非素數個數,用最小的代價
 5 
 6 int isPrime(int n)
 7 {
 8     int i;
 9     int flag = 1;
10     int m = (int)sqrt(n) + 1;
11     if(n < 2) flag = 0;
12     for(i = 2; i < m; i++)
13     {
14         if(n % i == 0)
15         {
16             flag = 0;
17             break;
18         }
19     }
20     return flag;
21 }
22 
23 
24 int main()
25 {
26     int a, b;
27     int i, count = 0;
28     while(scanf("%d %d", &a, &b) != EOF)
29     {
30         for(i = a; i <= b; i++)
31         {
32             if(isPrime(i) == 0) //not prime
33                 count++;
34         }
35         printf("%d", count);
36     }
37     return 0;
38 }

第三題16進制不進位的加法,輸入要考慮大小寫的不同,輸出只要大寫。

這個題不知道什么意思,暫時沒做

最大子串和.c

求一個整型數組,所有子串中元素和最大的子串,輸出和是多少,子串是什么。比如 {1,2,3,4,5,-1,-2}最大子串是{1,2,3,4,5},和是15。

這個題目好像是求最大子數列和問題。並給出最大數列

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int n, num[1001], i;
 6     int maxSum = 0, subSum = 0;
 7     int start, t, end;
 8     scanf("%d", &n);
 9     for(i = 0; i < n; i++)
10     {
11         scanf("%d", &num[i]);
12     }
13 
14     for(i = 0; i < n; i++)
15     {
16         subSum += num[i];
17         if(subSum < 0)
18         {
19             subSum = 0;
20             t = i + 1;
21         }
22         if(subSum > maxSum)
23         {
24             maxSum = subSum;
25             start = t; 
26             end = i;
27         }    
28     }
29     printf("%d\n", maxSum);
30     for(i = start; i <= end; i++)
31         printf("%d ", num[i]);
32     return 0;
33 }

 運行結果如下

第一行輸入 數列個數

第二行 輸入 數列

第三行 輸出最大子數列和

第四行 輸出最大和的數列

 

 

求出現的最多的次數

 1 #include <stdio.h>
 2 // 大概的思路就是定義兩個數組,一個用於存儲數字,另一個用於存該數字
 3 // 出現的次數
 4 
 5 int main()
 6 {
 7     int n[101], count[101] = {0};
 8     int num, i, j, max = 0, max_index;
 9     scanf("%d", &num);
10     for(i = 0; i < num; i++)
11     {
12         scanf("%d", &n[i]);
13         count[i] += 1;
14     }
15     
16     for(i = 0; i < num; i++)
17     {
18         for(j = i+1; j < num; j++)
19             if(n[i] == n[j])
20                 count[i] ++;
21     }
22     // find max
23     for(i = 0; i < num; i++)
24     {
25         if(count[i] > max)
26         {
27             max = count[i];
28             max_index = i;
29         }
30     }
31 
32     printf("%d\n", n[max_index]);
33     return 0;
34 }

運行結果

第一行輸入個數

第二行輸入數字

第三行輸出出現最多的數字

 

 

快速排序

快速排序主要是把樹上的代碼看了遍,自己理解了一下,然后自己默寫下來

 1 #include <stdio.h>
 2 
 3 int qk_pass(int n[], int low, int high)
 4 {
 5     int x = n[low];
 6     while(low < high)
 7     {
 8         while(low < high && x <= n[high]) //hign 從右往左找比x小的值
 9             high--;
10         if(low < high) // 找到了x > n[hight]的情況
11         {
12             n[low] = n[high];
13             low++;
14         }
15         while(low < high && x >= n[low])
16             low++;
17         if(low < high)
18         {
19             n[high] = n[low];
20             high --;
21         }
22     }
23     n[low] = x;
24     return low;
25 }
26 
27 void quick_sort(int n[], int low, int high)
28 {
29     int pos = 0;
30     if(low < high)
31     {
32         pos = qk_pass(n, low, high);
33         quick_sort(n, low, pos-1);
34         quick_sort(n, pos+1, high);
35     }
36 }
37 
38 int main()
39 {
40     int n[101], num, i;
41     scanf("%d", &num);
42     // input 
43     for(i = 0; i < num; i++)
44     {
45         scanf("%d", &n[i]);
46     }
47     // quick sort
48     quick_sort(n, 0, num-1);
49     // output
50     for(i = 0; i < num; i++)
51     {
52         printf("%d ", n[i]);
53     }
54     return 0;
55 }

運行結果如下:

第一行輸入元素的個數

第二行輸入數組元素

第三行輸入排序后的結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM