(1)王道-数组-字符串

数组

  1. 没有引用数组,但是数组可以被引用。eg:int &a[10];//错误
  2. c风格的字符串
    1)“acbd”//双引号括起来的字符串,因为末尾自动加了NULL,长度为5
    2){‘a’,‘b’,’\0’}//末尾有‘\0’的字符数组
  3. 逗号运算
int a[3][2]={(0,1),(2,3),(3,4)};
int b[3][2]={1,3,4};

数组a、b等价,元素都为 1,3,4,0,0,0
因为逗号运算只保留最后一个表达式的值(赋值运算优先级大于逗号运算
4. 二维数组a[x][y]=一位数组b[x*列数+y]
5. 二维数组动态声明

int **a=new int*[m];
for(int i=0;i<m;++i)
a[i]=new int[n];//a[m][n]

动态声明的数组任意的a[k]都是int 类型,是一个地址,只能使用a[i][j]或者((a+i)+j)访问,不能使用a[in+j]
释放

for(int i=0;i<m;++i)
delete []a[i];
delete []a;
  1. 数组指针与指针数组
    指针数组:int *a[10];数组中元素全为指针
    数组指针:int (*p)[10];p指向大小为10的数组
    *p 相当于指向一个一维数组
    (*p)[10]相当于指向二维数组,每个行里面有10个元素
    eg:
    int a[3][4];
    int (*p)[4]=w;

  2. 指针问题
    a=&a[0]
    &a为a整个数组 &a+1跳过a中所有元素
    (a+i)=a[i]
    ((a+i)+j)=
    (a[i]+j)=a[i][j]
    &相当于往上加一层指针
    *相当于解一层指针

  3. 数组中一个数字的出现次数超过了三分之一。(也可以计算等于二分之一,要求时间复杂度O(n),空间复杂度O(1))
    由出现次数超过二分之一演化而来。

#include <string>
#include<iostream>
using namespace std;
int f(int data[], int n)
{
	int num1=data[0];
	int num2=data[0];
	int cur1=0;
	int cur2=0;
	for (int i = 0; i < n; ++i)//取两个数记录次数
	//这两数其中一个肯定最后剩下的次数大于0
	//相当于把三个数一起比较,如果三个数都不一样减去次数
	{
		if (data[i] == num1)
			cur1++;
		else if (data[i] == num2)
			cur2++;
		else if (cur1 == 0)
		{
			num1 = data[i];
			cur1++;
		}
		else if (cur2 == 0)
		{
			num2 = data[i];
			cur2++;
		}
		else
		{
			cur1--; cur2--;
		}
	}
	cur1 = 0; cur2 = 0;
	for (int i = 0; i < n; i++)//比较这两数谁出现次数最大
	{
		if (data[i] == num1)
			cur1++;
		else if (data[i] == num2)
			cur2++;
	}
	if (cur1 > cur2)
		return num1;
	else
		return num2;
}
int main(){
	int data[] = { 0, 1, 2, 2, 2,1 };
	int ans = f(data, 6);
	cout << ans << endl;
	return 0;
}

字符串

  1. C风格字符串
    c++通常使用char 或者const char操纵c风格字符串
    const char *cp=“some value”
    while(*cp){
    //do something to cp
    ++cp
    }
    此时
    cp指向‘\0’时意义同0,会跳出while
  2. 字符串处理函数
    strlen(s)//计算长度,不包含‘\0’
    strcmp(s1,s2)//相等,返回=0,s1>s2返回正数,反之返回负数
    strcat(s1,s2)//s1+s2
    strcpy(s1,s2)s1=s2
    strncat(s1,s2,n)
    strncpys1,s2,n)
  3. 输入两个很大的正数(用C字符串表示),输出他们的乘积,将设不考虑非法输入。
#include<iostream>
#include<cassert>
void multiply(const char *a, const char *b)
{
	assert(a != NULL && b != NULL);
	int i, j, ca, cb, *s;
	ca = strlen(a);
	cb = strlen(b);
	s = (int *)malloc(sizeof(int)*(ca + cb));  //分配存储空间
	//两数乘积的长度不会超过两个数的长度之和
	for (i = 0; i<ca + cb; i++)
		s[i] = 0;                     //每个元素赋初值为0
	for (i = 0; i<ca; i++)
		for (j = 0; j<cb; j++)//按位乘运算
			s[i + j + 1] += (a[i] - '0')*(b[j] - '0');  //两个嵌套的for循环,将字符串中的数字通过-‘0’
	for (i = ca + cb - 1; i >= 0; i--)                   //转换为十进制数字
		if (s[i] >= 10)
		{
		s[i - 1] += s[i] / 10;
		s[i] %= 10;
		}
	char *c = (char *)malloc((ca + cb)*sizeof(char));
	i = 0;
	while (s[i] == 0)
		i++;
	for (j = 0; i<ca + cb; i++, j++)            //将十进制数字转换为字符,存储到字符数组中
		c[j] = s[i] + '0';
	c[j] = '\0';
	for (i = 0; i<ca + cb; i++)
		std::cout << c[i];
	std::cout << std::endl;
	free(s);
	free(c);
}

int main()
{
	const char *strnum1 = "123";
	const char *strnum2 = "456";
	multiply(strnum1, strnum2);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值