第十五周练习--两个字符串连接

本文介绍了一种使用C语言实现字符串连接的方法,通过定义函数来连接两个字符串,并提供了三种不同的实现方式,包括直接在主函数中操作及利用独立的函数进行处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



Description
写一函数,将两个字符串连接
Input
两行字符串
Output
链接后的字符串
Sample Input**
123
abc
Sample Output
123abc

代码:

/* 
 Copyright (c) 2016,烟台大学计算机与控制工程学院 
 All Rights Reserved. 
 文件名称:两个字符串连接 
 作    者:胡寅生 
 完成日期:2016年 
 版 本 号;v1.0 
*/  

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char str1[100],str2[100],str3[100];
    gets(str1);
    gets(str2);
    int i=0,j=0;
    while(str1[i]!='\0')
    {
    str3[i]=str1[i];
    i++;
    }
    while(str2[j]!='\0')
    {
        str3[i+j]=str2[j];
        j++;
    }
    str3[i+j]='\0';
    puts(str3);
    return 0;
}

运行结果:




老贺的其他代码:

#include<stdio.h>
void stringcat(char *s1, char *s2, char *s);
int main()
{
    char str1[100],str2[100],str3[100];
    gets(str1);
    gets(str2);
    stringcat(str1,str2,str3);
    puts(str3);
    return 0;
}

void stringcat(char *s1, char *s2, char *s)
{
    int i=0,j=0;
    while(s1[i]!='\0')
    {
        s[i]=s1[i];
        i++;
    }

    while(s2[j]!='\0')
    {
        s[i+j]=s2[j];
        j++;
    }
    s[i+j]='\0';
}



方法二:

#include<stdio.h>
char *stringcat(char *s1, char *s2);
int main()
{
    char str1[100],str2[100],*str3;
    gets(str1);
    gets(str2);
    str3=stringcat(str1,str2);
    puts(str3); //不用str3,直接输出str1也行,这个方案将连接结果放在str1中了
    return 0;
}

char *stringcat(char *s1, char *s2)
{
    int i=0,j=0;
    while(s1[i]!='\0')
    {
        i++;
    }

    while(s2[j]!='\0')
    {
        s1[i+j]=s2[j];
        j++;
    }
    s1[i+j]='\0';
    return s1;
}



### 蓝桥杯第十五届回文字符串题目解析 #### 回文字符串定义 回文字符串是指正读和反读都相同的字符序列。例如,“level” 和 “madam” 是回文字符串。 #### 题目描述 在第十五届蓝桥杯竞赛中,有一道关于回文字符串的典型题目:给定一个长度不超过 10^5 的字符串 s, 判断该字符串是否为回文串[^1]。如果是一个有效的回文,则返回 `true`;如果不是,则返回 `false`。 #### 解题思路 为了判断一个字符串是否为回文,可以采用双指针法来解决这个问题: - 初始化两个指针分别指向字符串的第一个位置 (left) 和最后一个位置 (right)[^1]。 - 进入循环直到两指针相遇,在每次迭代过程中做如下操作: - 如果左指针对应的字符不等于右指针对应的字符则立即返回 false; - 否则移动左右指针向中间靠拢继续比较下一组字符。 - 当所有对应位上的字符均相等时说明这是一个回文串,最终返回 true。 ```python def is_palindrome(s: str) -> bool: left = 0 right = len(s) - 1 while left < right: if s[left] != s[right]: return False left += 1 right -= 1 return True ``` 此算法的时间复杂度为 O(n),其中 n 表示输入字符串长度。空间复杂度为 O(1),因为只用了常数级别的额外存储空间[^1]。 #### 比赛信息 对于希望参加此类编程赛事的学生来说,建议提前关注官方发布的具体时间表以及报名方式。通常情况下,参赛者可以通过官方网站获取最新的通知并完成注册流程。此外,准备期间应该多加练习类似的经典算法问题以提高解题速度与准确性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值