1.一些填空题
int funtest(int &a,char *b)
{
b[a++]=++a;
return strlen(b);
}
unsigned int a = 0x12345678;
printf("%x\n",*((unsigned char*)(&a)+1)+1);
//57
char str[]="abcdefghijklmn";
char *pchar = str;
int *pint = (int *)(str+4);
short int *pshort = (short int *)(str+3);
printf("%c%c%c\n",*(++pchar),*((char*)(++pint)),*((char*)(++pshort)));
//bif
int i=5,j=5;
cout<<(++i)--<<" "<<++(--j)<<endl;
//6,5
int as=1;
char ch[4]={0};
int c=funtest(as,ch);
cout<<dec<<as<<" "<<(int)ch[0]<<" "<<(int)ch[1]<<" "<<(int)ch[2]<<" "<<(int)ch[3]<<" "<<c<<endl;
//3 0 0 2 0 0
有些难度,大家好好想想!
int a[4][4] = {
{1,2,3,4},
{50,60,70,80},
{900,1000,1100,1200},
{13000,14000,15000,16000}
};
int (*p1)[4] = a; //p1为指向一维数组指针 所以a+1指向{50,60,70,80},减1则为4的地址
int (*p2)[4] = &a[0]; //同理p2也是,故p2 - 1,即向前移动4个,+16即向先后移动16个地址,故*(p2)+12
int *p3 = &a[0][0]; //p3就是单个元素的地址
cout<<*(*(a + 1) - 1)<<" "<<*(*(p1 + 3) - 2) + 1
<<" "<<*(*(p2 - 1) + 16) + 2<<" "
<<*(p3 + sizeof(p1) - 3)<<endl;
//结果为 4 1101 13002 2
double arr[2]={4,8},*p,*q;
p=&arr[0];
q=p+1;
cout<<q-p<<endl;
cout<<(int)q-(int)p<<endl;
//1 8
2、有四个人要在夜里穿过一条悬索桥回到宿营地。可是他们只有一支手电,电池只够再亮17分钟。过桥必须要有手电,否则太危险。桥最多只能承受两个人同时通过的重量。这四个人的过桥速度都不一样:一个需要1分钟,一个需要2分钟,一个需要5分钟,还有一个需要10分钟。他们如何才能在17分钟之内全部过桥?
答案:1和2一起过(2分钟);1返回(3分钟);5和10一起过(13分钟);2返回(15分钟);1和2一起过(17分钟)。全体安全过桥。
待续。。。