当前位置:首页 > 杭电计算机历年复试真题2006-2014 - 图文
2006---2009年杭电计算机历年研究生复试---笔试编程
分类: C/C++ 数据结构2011-08-07 15:52 5483人阅读 评论(0) 收藏 举报 杭电计算机复试 1、输入一个十进制的数,把它转成八进制。类似的把十进制转成16进制,把十六进制转变为十进制等。
[cpp] view plaincopy
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
转载请标明出处,原文地址:
http://blog.csdn.net/hackbuteer1/article/details/6667026
#include
int main(void) {
int num, a[100], i, j; i = 0;
scanf(\ , &num); while(num != 0) {
a[i++] = num % 8; num /= 8; }
if(i == 0) printf(\); else {
for(j = i - 1; j >= 0; --j) printf(\, a[j]); printf(\); } return 0; }
2、输入两个非常大的整数(完全超出了int、long的表示范围),这
个整数的长度可能超过100位,计算并输出这两个数相加的结果。(HDU acm 1002 用string处理比较好)
[cpp] view plaincopy
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
转载请标明出处,原文地址:
http://blog.csdn.net/hackbuteer1/article/details/6667026
#include
int main(void) {
int temp, i, j, k, len1, len2, m, sum[1010]; char a[1010], b[1010], c[1010];
scanf(\, a, b); len1 = strlen(a); len2 = strlen(b);
if(len1 < len2) //交换两个字符串,确保第一个字符串的长度不小于第二个字符串 {
strcpy(c, b); strcpy(b, a); strcpy(a, c);
m = len2, len2 = len1, len1 = m; }
k = m = 0;
//从两个数的低位开始,手工模拟加法,逐位相加
for(i = len1 - 1, j = len2 - 1; i >= 0; --i, --j) {
if(j >= 0)
temp = a[i] - '0' + b[j] - '0' + m; else
temp = a[i] - '0' + m; sum[k++] = temp % 10; m = temp / 10; //进位 } if(m > 0)
printf(\, m); for(i = k - 1; i >= 0; --i) printf(\, sum[i]); printf(\); return 0;
37.
}
3、“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。
[cpp] view plaincopy
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
转载请标明出处,原文地址:
http://blog.csdn.net/hackbuteer1/article/details/6667026
#include
int main(void) {
char str[100]; int len, i, j;
scanf(\, &str); len = strlen(str);
for(i = 0, j = len - 1; i < len && j >= i; ++i, --j) {
if(str[i] != str[j]) break; } if(j < i)
printf(\这个字符串是回文串!\\n\); else
printf(\这个字符串不是回文串!\\n\); return 0; }
4、输入n个数,按从小到大进行排序并输出。
[cpp] view plaincopy
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
转载请标明出处,原文地址:
http://blog.csdn.net/hackbuteer1/article/details/6667026
#include
int main(void) {
int n, i;
scanf(\, &n); int *p = new int[n]; for(i = 0; i < n; ++i) scanf(\, &p[i]); sort(p, p + n); for(i = 0; i < n; ++i) printf(\, p[i]); printf(\); return 0; }
5、输入一个长整型的数,从低位起取出奇数位组成一个新的数输出。
[cpp] view plaincopy
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
转载请标明出处,原文地址:
http://blog.csdn.net/hackbuteer1/article/details/6667026
#include
int main(void) {
long n, k, i, j, newnum; i = j = newnum = 0;
scanf(\, &n); while(n) {
k = n % 10;
for(j = 0; j < i; ++j) k *= 10; newnum += k; n /= 100;
共分享92篇相关文档