(完整版)杭电计算机历年复试真题2006-2014
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2006---2009年杭电计算机历年研究生复试---笔试编程
分类:C/C++数据结构2011-08-07 15:52 5483人阅读评论(0) 收藏举报杭电计算机复试
1、输入一个十进制的数,把它转成八进制。类似的把十进制转成16
进制,把十六进制转变为十进制等。
[cpp]view plaincopy
1.转载请标明出处,原文地址:
/hackbuteer1/article/details/6667026
2.#include
3.
4.int main(void)
5.{
6.int num, a[100], i, j;
7. i = 0;
8. scanf("%d" , &num);
9.while(num != 0)
10. {
11. a[i++] = num % 8;
12. num /= 8;
13. }
14.if(i == 0)
15. printf("0\n");
16.else
17. {
18.for(j = i - 1; j >= 0; --j)
19. printf("%d", a[j]);
20. printf("\n");
21. }
22.return 0;
23.}
2、输入两个非常大的整数(完全超出了int、long的表示范围),这
个整数的长度可能超过100位,计算并输出这两个数相加的结果。
(HDU acm 1002 用string处理比较好)
[cpp]view plaincopy
1.转载请标明出处,原文地址:
/hackbuteer1/article/details/6667026
2.#include
3.#include
4.
5.int main(void)
6.{
7.int temp, i, j, k, len1, len2, m, sum[1010];
8.char a[1010], b[1010], c[1010];
9.
10. scanf("%s %s", a, b);
11. len1 = strlen(a);
12. len2 = strlen(b);
13.if(len1 < len2) //交换两个字符串,确保第一个字符串的长度不小于第二个字符串
14. {
15. strcpy(c, b);
16. strcpy(b, a);
17. strcpy(a, c);
18. m = len2, len2 = len1, len1 = m;
19. }
20. k = m = 0;
21.//从两个数的低位开始,手工模拟加法,逐位相加
22.for(i = len1 - 1, j = len2 - 1; i >= 0; --i, --j)
23. {
24.if(j >= 0)
25. temp = a[i] - '0' + b[j] - '0' + m;
26.else
27. temp = a[i] - '0' + m;
28. sum[k++] = temp % 10;
29. m = temp / 10; //进位
30. }
31.if(m > 0)
32. printf("%d", m);
33.for(i = k - 1; i >= 0; --i)
34. printf("%d", sum[i]);
35. printf("\n");
36.return 0;
37.}
3、“回文串”是一个正读和反读都一样的字符串,比如“level”或者
“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。
[cpp]view plaincopy
1.转载请标明出处,原文地址:
/hackbuteer1/article/details/6667026
2.#include
3.#include
4.
5.int main(void)
6.{
7.char str[100];
8.int len, i, j;
9.
10. scanf("%s", &str);
11. len = strlen(str);
12.for(i = 0, j = len - 1; i < len && j >= i; ++i, --j)
13. {
14.if(str[i] != str[j])
15.break;
16. }
17.if(j < i)
18. printf("这个字符串是回文串!\n");
19.else
20. printf("这个字符串不是回文串!\n");
21.return 0;
22.}
4、输入n个数,按从小到大进行排序并输出。
[cpp]view plaincopy
1.转载请标明出处,原文地址:
/hackbuteer1/article/details/6667026
2.#include
3.#include
ing namespace std;
5.
6.int main(void)
7.{
8.int n, i;
9.
10. scanf("%d", &n);
11.int *p = new int[n];
12.for(i = 0; i < n; ++i)
13. scanf("%d", &p[i]);
14. sort(p, p + n);
15.for(i = 0; i < n; ++i)
16. printf("%d ", p[i]);
17. printf("\n");
18.return 0;
19.}
5、输入一个长整型的数,从低位起取出奇数位组成一个新的数输出。
[cpp]view plaincopy
1.转载请标明出处,原文地址:
/hackbuteer1/article/details/6667026
2.#include
3.
4.int main(void)
5.{
6.long n, k, i, j, newnum;
7. i = j = newnum = 0;
8.
9. scanf("%ld", &n);
10.while(n)
11. {
12. k = n % 10;
13.for(j = 0; j < i; ++j)
14. k *= 10;
15. newnum += k;
16. n /= 100;