文章分类 - 【007】面试题收集
摘要:给定字符串 abcdefgh,长度为n,循环左移i位。reverse函数的作用将数组反转。如,将abcd,变为dcba。reverse(0,i-1) /* cbaedfgh 这里i为3*/reverse(i-1,n-1) /* cbahgfde */reverse(0,n-1) /* edfghabc */
阅读全文
摘要:原文:http://www.cnblogs.com/whzh/archive/2009/07/29/1533572.html使用位逻辑运算来实现位向量,指的是实现位向量的设置、清零、探测三个操作。代码如下:private const int bitsPerWord = 32;private const int shift = 5;private const int mask = 0x1F;private const int n = 10000000;private static readonly int[] a = new int[1 + n / bitSperWord];void set(i
阅读全文
摘要:版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://dalu.blogbus.com/logs/37977984.html 由于一个合数总是可以分解成若干个质数的乘积,那么如果把质数(最初只知道2是质数)的倍数都去掉,那么剩下的就是质数了。 例如要查找100以内的质数,首先2是质数,把2的倍数去掉;此时3没有被去掉,可认为是质数,所以把3的倍数去掉;再到5,再到7,7之后呢,因为8,9,10刚才都被去掉了,而100以内的任意合数肯定都有一个因子小于10(100的开方),所以,去掉,2,3,5,7的倍数后剩下的都是质数了。 用程序可以这样解决,引入布尔类型数...
阅读全文
摘要:1 #include<stdio.h>2 3 int i=1;4 int main()5 {6 int i=i;7 printf("%d\n",i);8 return 0;9 }结果:
阅读全文
摘要:1、子字串查找,返回找到的地址,否为返回NULL 1 char *strstr(const char *s1, const char *s2) 2 { 3 size_t l1, l2; 4 5 l2 = strlen(s2); 6 if (!l2) 7 return (char *)s1; 8 l1 = strlen(s1); 9 while (l1 >= l2) 10 {11 l1--;12 if (!memcmp(s1, s2, l2))13 return (char ...
阅读全文
摘要:原文:http://blog.csdn.net/welcome_ck/article/details/2279641、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3、cons有什么主要的作用?(1)可以定义const常量,具有不可变性。例如: const int Max=100; int Array[Max]; (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如:.
阅读全文
摘要:一、函数的声明 只是函数头,放在主函数前面二、函数体 函数头,函数体,可以放在主函数前面,也可以是后面,但是不能放在主函数体内。函数的定义不能嵌套
阅读全文
摘要:一、static1、函数中,修饰变量,表示静态变量;2、源文件中修饰函数、变量,表示该函数、变量不被此文件以外的地方引用;3、类成员中,修饰函数、变量,表示类的方法、变量,不用创建实例通过类名便可使用;二、const1、定义常量2、const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
阅读全文
摘要:题目1: 1 char a[3] ,b[]="china";2 a=b;3 printf("%s\n",a);输出结果为:A、运行后输出china B、运行后输出ch C、运行后输出chi D、编译出错题目2:已知宏定义1 #define N 32 #define Y(n) ((N+1)*n)执行语句z = 2*(N+Y(5+1));后,变量z的值为:解释:#define宏定义,在编译期间,由编译器进行替换,不会运算。因而执行语句在编译后为z= 2*(3+((3+1)*5+1));结果为:48
阅读全文
摘要:有时候,用C语言写程序时需要知道是大端模式还是小端模式。 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中; 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。为什么会有大小端模式之分呢? 这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多...
阅读全文
摘要:1.gets()函数问:请找出下面代码里的问题:#include<stdio.h>intmain(void){charbuff[10];memset(buff,0,sizeof(buff));gets(buff);printf("\nThebufferenteredis[%s]\n",buff);return0;}答:上面代码里的问题在于函数gets()的使用,这个函数从stdin接收一个字符串而不检查它所复制的缓存的容积,这可能会导致缓存溢出。这里推荐使用标准函数fgets()代替。2.strcpy()函数问:下面是一个简单的密码保护功能,你能在不知道密码的情
阅读全文
摘要:第1题:不用if、?、switch、或其他判断语句,找出两个数中间比较大的方案一:1 int max = ((a+b) + abs(a-b)) / 2;方案二:1 int c = a-b;2 char *strs[2] = {"a Large ","b Large "};3 c = unsigned(c) >> (sizeof(int) * 8 - 1);(第二种不明白啊........)第2题:将a、b的值进行交换,并且不实用中间变量;方案一:1 a = a+b;2 b = a-b;3 a = a-b;注:本方案有个缺点,如果a、b都是比较
阅读全文
摘要:&:逻辑与操作,都为1时,才为1,通常用0,将某一位变为0;|:逻辑或操作,都为0时,才为0,通常用1,将某一位变为1;^:逻辑异或操作,相同为0,不同为1;第1题:1 int f(int x,int y)2 {3 return (x&y)+((x^y)>>1)4 }解析:x&y取相同部位,x^y取不同部位,x&y + x^y = x+y; >>运算符是所有运算符中等级最低的,最后进行.因而是求(x+y)/2;答案:(x+y)/2
阅读全文
摘要:题目:用一个表达式,判断一个数X是否是2^N次方(2,4,8,16,......),不可用循环语句。解析:2、4、8、16.....的二进制形式是:10、100、1000、10000.如果X减1后与X做与运算,答案若为0,则X是2^N次方。答案:!(X&(X-1))注:^为异或操作符.
阅读全文
摘要:第一题:#include <iostream>int main(int argc,char **argv){ int a,x; for (a=0,x=0; a<=1 && !x++ ; a++) { a++; } std::cout<<a<<" "<<x<<std::endl; return 0 ;} 结果为:2,1反汇编主要代码如下: for (a=0,x=0; a<=1 && !x++ ; a++)00401588 mov dword ptr [ebp-4],0 ;
阅读全文