蓝桥杯试题——字符串合并


写在前头:
       本人写的文章主要面向的是初学者,内容可能过于啰嗦,请见谅。
题目要求:
       输入两个字符串,将其合并为一个字符串后输出。

输入格式:
       输入两个字符串

输出格式:
       输出合并后的字符串

例子:

在这里插入图片描述


思路解析:
  1. 我们需要字符型数组存放字符串
  2. 我们需要gets()来获取字符串
  3. 我们需要一个方法来使两个字符串结合
    ps:gets()方法在《计蒜客——各个单词的长度》文章中有介绍

话不多说,直接上代码:
#include<iostream>
#include<cstring>
#include<stdio.h>
using namespace std;
int main()
{
      char s1[100],s2[100];
	  int k=0;
	  char *p=s1,*q=s2;
	  gets(s1);
	  gets(s2);
	  while(*p)
        p++;
	  while(*p++=*q++);
	  cout<<s1;
}

源码介绍:
while(*p++)==>(等价于)while(*(p++))

这句话的意思是先取出*p的值,然后让指针指向下一个数据。

在这里面*和++同一优先级,顺序从右往左,++是后置,需要先执行完语句才做自增
所以分成两条语句,必然是:

  1. *p;
  2. p++;

while(*p)
p++;

是指只要指针p指向的内容不为空,就执行p++操作,即指向下一内容


  while(*p++=*q++);

实现功能是把q指针指向地址单元的值赋给P指针指向的地址中,且每次完成赋值后,移动指针,进行下一次赋值,直到q指针指向字符串结束符时,退出while循环,功能为把q指向的字符串复制到p指向的地址中。

  1. 取q的值,再赋予给p,q到下一个(q+1),p到下一个(p+1),完成第一个while循环
  2. 取q+1的值,再赋予给p+1,q+1到下一个(q++2),p+1到下一个(p+2),完成第二个while循环

解引用介绍:
" * "的作用是引用指针指向的变量值,引用其实就是引用该变量的地址,“解”就是把该地址对应的东西解开,解出来,就像打开一个包裹一样,那就是该变量的值了,所以称为“解引用”。也就是说,解引用是返回内存地址中对应的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值