请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
#define Compare(a,b) ((a)-(b)) != abs((a)-(b)) ? b : a
有A、B、C、D四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内这四个人都过桥?
答案参考:http://blog.sina.com.cn/s/blog_5dc7bbf80100v77b.html
//在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。
//例如:"abcd12345ed125ss12345678
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int continumax(char *outputstr,const char *inputstr)
{
}
int main()
{
}
//利用指针的方法,来对调显示字符串
#include<stdio.h>
#include<string.h>
int main()
{
}
//有一个数组a[1000]存放0-1000;要求每隔两个数删掉一个数,到末尾时循环至开头继续进行
//求最后一个被删除的原始下标位置;
//现使用链表的形式进行操作
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
};
Node* CreateNode(int n)
{
}
int Del(Node* h)
{
}
void main()
{
}
//指出下列代码的错误
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10; i++)
{
str1[i] = 'a';
}
strcpy( string, str1 );
}
解答:对试题2,如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpy(string, str1)调用使得从str1内存起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10分;
str1不能在数组内结束:因为str1的存储为:{a,a,a,a,a,a,a,a,a,a},没有'\0'(字符串结束符),所以不能结束
strcpy( char *s1,char *s2)他的工作原理是,扫描s2指向的内存,逐个字符付到s1所指向的内存,直到碰到'\0',因为str1结尾没有'\0',所以具有不确定性。
//重写strcmp函数
int strcmp(char* str1,char* str2)
{
}
//子串的定位
char* FindSubstr(char* mainstr,char* substr)
{
}
虚函数和纯虚函数的作用和区别
虚函数为了重载和多态的需要,在基类中定义的,即便定义是空,所以子类中可以重写也可以不重写基类中的函数。
纯虚函数在基类中没有定义,必须在基类中加以实现。纯虚函数相当于接口,不能直接实例化,需要派生类来实现函数定义。
虚函数的定义:
纯虚函数的定义:
带有纯虚函数的类叫虚基类,这种基类不能直接生成对象,而只有被继承,并重写其虚函数后,才能使用。这样的类叫做抽象类。
栈和堆的区别
栈在内存中分配的是一块连续的内存区域,可获得的区域较小;
堆在内存中分配的是一块不连续的内存区域,可获得较大的区域。
栈由系统自动分配,速度较快,但程序员是无法控制的;
堆是需要动态申请,一般速度比较慢,并且容易产生内存碎片,不过方便
栈所用的内存空间可以自动收回
堆所用的内存空间需要手工释放。