牛客笔试整理 一

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;

int main1()
{
	int a = 1;
	int b = 32;

	printf("%d,%d\n",a<<b, 1<< 32);
	
	return 0;
}

int main2()
{
	int a[5] = {1,2,3,4,5};
	int *ptr = (int *)(&a + 1);

	printf("%d,%d\n",*(a + 1),*(ptr - 1));

	return 0;
}

#if 0
void foo(int *a,int *b)
{
	*a = *a + *b;
	*b = *a - *b;
	*a = *a - *b;
}
int main()
{
	int a = 1,b = 2,c = 3;
	foo(&a,&b);
	foo(&b,&c);
	foo(&c,&a);

	printf("%d,%d,%d\n",a,b,c);

	return 0;
}
#endif

int main3()
{
	int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

	printf("%d\n",a[1][1]);
	printf("%d\n",*(&a[0][0]+5)); //a[0][0] = 1,&a[0][0] + 5 = &a[1][1]  6
	printf("%d\n",*(*(a+1)+1));   //a+1下一行,*(a+1) = a[1] = a[1][0]
	printf("%d\n",*(a[1]+1));   //二维数组中a[1]表示a[1][0],数组是连续存储空间,所以a[1]+1 = a[1][1]
	return 0;
}

int func(int x)
{
	int count = 0;
	while(x)
	{
		count ++;
		x = x & (x - 1);
	}
	return count;
}
int main4()
{
	cout << func(9999)  << endl;
	return 0;
}

int main5()
{
	char array[12] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
	short *pshort = (short *)array;
	int *pint = (int *)array;
	//int64 *pint64 = (int64 *)array;

	printf("0x%x,0x%x,0x%llx",*pshort,*(pshort+2),*(pint+2));
	return 0;

}


class Parent
{
public:
	virtual void Intro()
	{
		printf("Parent\n");
		Hobby();
	}
	virtual void Hobby()
	{
		printf("football\n");
	}
};
class Child:public Parent
{
public:
	virtual void Intro()
	{
		printf("Child\n");
		Hobby();
	}
	virtual void Hobby()
	{
		printf("basketball\n");
	}
};
int main6()
{
	Child *pchild = new Child;

	Parent *parent = (Parent *)pchild;

	parent->Intro();

	return 0;
}


int main7()
{
	char str[1024];
	printf("input : \n");
	gets(str);
	int len = strlen(str);
	for(int i = 0;i < len;i++)
	{
		if(str[i] >= 'a' && str[i] <= 'z')
		{
			str[i] = str[i] - 32;
		}
		else if (str[i] >= 'A' && str[i] <= 'Z')
		{
			str[i] = str[i] + 32;
		}
	}

	printf("%s\n",str);
	return 0;
}

class Base
{
public:
	Base(char * p_szName):m_szName(p_szName)
	{
		cout << m_szName << ",";
	}
	virtual ~Base()
	{
		cout << "~"<<m_szName << ",";
	}
private:
	char* m_szName;
};
class DErivice:public Base
{
public:
	DErivice(char *p_szName):m_szName(p_szName),m_objA((char *)"A"),m_objB((char *)"B"),Base((char *)"C")
	{
		cout << m_szName << ",";
	}
	virtual ~DErivice()
	{
		cout << "~" << m_szName << ",";
	}
private:
	char *m_szName;
	Base m_objB;
	Base m_objA;

};
int main8()
{
	// 构造函数调用顺序:基类->对象->派生类
	//构造函数初始化列表初始化顺序是由成员变量声明顺序决定
	Base *p = new DErivice("D");
	delete p;
	return 0;
}

int main9()
{
	char str[] = "glad to test something";
	char *p = str;
	int *p1 = reinterpret_cast<int *>(p); // 指针间的转换
	p1++;
//	p = reinterpret_cast<char *>(p1);
	printf("%s\n",p1);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值