华中科技大学cpp_Mooc第六章第一题

  • 题目:运用指针技术实现,将输入的两个字符串中第二个字符串插入到第一个字符串中指定输入数字位置字符的后面。(10分)

    image-20240130091018033

代码如下:

#include<iostream>
using namespace std;
int main(){
    char str1[100];
    char str2[100];
    char c[200];
    int i;
    int n;
    cout<<"输入插入的位置"<<endl;
    cin>>n;
    cin.ignore();
    cin.getline(str1,100);
    cin.getline(str2,100);
    char *p1=str1;
    char*p2=str2;
    char*p=c;
    for(i=0;i<n;i++){
        *p++=*p1++;
    }//将前n个插入
    while (*p2)
    {
        *p++=*p2++;
    }//将p2插入
    while(*p1){
        *p++=*p1++;
    }
    *p=0;//确保字符串最后以0结尾
    for(i=0;c[i]!=0;i++){
        cout<<c[i];
    }
    return 0;
​
}
关于指针的赋值

初学者容易错误将指针赋值:

char *p1;
*p1 = str1;
  • 第一行相当于定义了一个指针变量但是没有初始化,将会随机被分配给任何一个地址这是非常危险的。而第二行代码,*p相当于随机地址中的第一个字符,将一个指针变量赋值给一个字符变量,是不正确的。

  1. 区别p = p1*p=*p1

    前者是改变p1指针的指向,使得两个指针指向同一个地址,后者是把p1指向的值赋值给p

  2. 代码中 *p++=*p1++;,是常用的指针与数组结合的操作,实际上分为三步:

    *p=*p1 //把p1指向的值赋值给p指向的值
    p++;
    p1++;//两者的指向都往后移动

  3. *p=0;//确保字符串最后以0结尾

     如果没用这句话,最后输出c数组末尾会出现乱码

  4. 这是常见的字符数组赋值循环

    while(*p1){
            *p++=*p1++;
        }

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
华中科技大学MOOC主要涉及到计算机科学与技术领域,其中数据结构是该课程重要的一部分。在课程中,学生将学习到各种不同的数据结构和相应的算法。 数据结构是计算机科学中对数据组织、存储和管理的一门科学。它涉及到各种数据类型的定义,以及在这些数据上进行的各种操作。准确地掌握数据结构是计算机科学与技术专业学生必备的基本知识。 在MOOC中,学生将学习到常见的数据结构,包括数组、链表、栈、队列、堆、树和图等。课程将介绍每种数据结构的定义、特点和操作,并对其基本的算法进行讲解。 此外,MOOC还通过讲解案例和实例,帮助学生了解如何在实际场景中应用数据结构。学生将通过编程实践掌握数据结构的实现和应用,提高自己的编程能力和问解决能力。 在学习过程中,MOOC会提供答案供学生参考。学生可以通过查看课程资料、阅读教材和参考答案来巩固对数据结构的理解。MOOC还会定期组织考试和作业,检验学生对数据结构的掌握程度。 通过学习数据结构,学生将能够更加深入地理解和分析计算机程序的性能。同时,学生还能够将所学知识应用到实际的软件开发中,提高自己的编程效率和代码质量。 总之,华中科技大学MOOC提供了详细的数据结构课程,通过学习该课程,学生可以获得全面的数据结构知识,并掌握其在实际应用中的技巧和方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值