C++学习笔记序列之面试题目
2011-08-03 16:14
357 查看
题目:
编写一个函数,输入一个string型参数,返回该string的逆序字符串。
比如:传入 "abcde",函数返回"edcba"
以下提供自己想的一种方法,欢迎各位有好的方法提出来:
编写一个函数,输入一个string型参数,返回该string的逆序字符串。
比如:传入 "abcde",函数返回"edcba"
以下提供自己想的一种方法,欢迎各位有好的方法提出来:
#include<iostream.h> #include<malloc.h> #include<string.h> #include<assert.h> char* reverStr(char *p); int main() { char* result=NULL; char str[]="abcde"; result=reverStr(str); cout<<result<<endl; free(result); //注意释放掉动态分配的内存空间 return 0; } char* reverStr(char *p) { assert(p); char* q=NULL; int len=strlen(p)+1; int i=0; q=(char*)malloc(sizeof(char)*len); while((len--)>0) { *(q+i)=*(p+len-1); i++; } *(q+i-1)='\0'; return q; } 2.请问下面的程序输出结果是什么呢?(华为面试题目) int main(void) { unsigned int a=0Xfffffff7; char *b = (char*)&a; printf("%08x",*b); } 分析:这个问题主要是考虑计算机大端小端存储的问题,a存储的就是0xfffffff7这个值,虽然这个值是地址,如果计算机是大端存储的话,那么b指针存储的内容就是f7,那么答应出来的就是f7ffffff;如果是小端存储,那么b存储的内容就是ff,那么答应出来的就是fffffff7。 3.不用局部变量和全局变量实现strlen; 分析:用递归来实现实在是一种不错的方法,但是在很长的字符串,效率会相对较慢,其他的方法暂时也没想到,有的对大家可以补充啊。。。 int myStrLen(const char *str) { if(*str=='\0') return 0; else return myStrLen(++str)+1; } 4.有2数据,写一个交换数据的宏; 分析:有两种方法 方法一、 #define SWAPP(A,B) (A)=(A)+(B);(B)=(A)-(B);(A)=(A)-(B); 这种方法的宏定义会导致溢出,溢出的情况是:当A是int行,而B是short型,而A的值又大于256,就会产生溢出,但是这种方法能实现小数的交换,但是会产生精度缺失。 方法二、 #define SWAPP2(A,B) (A)^=(B)^=(A)^=(B) 这种方法也能实现两个变量值的相互交换,但是这种方法有个缺点:不能实现小数的交换,这种方法如果在非小数的情况下,倒是一种不错的选择。 |
相关文章推荐
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(3) 最大子序列和问题
- C++学习笔记序列之对象和类
- C语言学习序列之面试题目-计算两个字符串中出现的相同英文字符
- 学习笔记-C/C++-结构体与sizeof,内存对齐的题目怎么做
- 学习笔记-C/C++-结构体与sizeof,内存对齐的题目怎么做
- C++学习笔记-----二分法之寻找非减序列第一个大于某个值的数或最后一个小于某个值的数
- [memory]C++中栈区 堆区 常量区(由一道面试题目而学习)
- c++学习笔记序列之经典处理程序汇总(不断更新中)
- c++学习笔记序列之错误码整理(不断更新中)
- C++学习序列笔记之内联函数
- 【C++】【学习笔记】kolakoski序列:小探纯自然数学序列
- C++学习序列笔记之函数原型和函数定义
- C++中栈区 堆区 常量区(由一道面试题目而学习)
- C++学习笔记序列之返回语句区别总结
- C/C++学习总结(可应对面试题目)
- 学习笔记---二叉树排序,面试经常考的题目
- C++学习序列笔记之数据处理(复合类型)
- C++学习笔记和面试备考(二, 转)
- 学习笔记---工作和面试中的Sql题目和处理方法
- c/c++学习_面试题目