博客园作业2

  1. 到现在学习c++接近3个月,但是感觉水平从数组之后就停滞了。有些点大致是能懂的,但是自己实际操作就会很无从下手,模糊的点太多,需要从许多细小的点开始学习。冒泡排序法还是不太能完整打出来,结构体也是,大体是知道,但是总是会有各种理解上的偏差,比如统计学生平均成绩和及格人数,总是有点搞不清它们的顺序。还有指针的应用例如字符串复制,需要再多看课本仔细看细节。之前还经常搞错声明和定义,现在懂了。
2.  题目如下:
6-1 字符串复制 (10 分)

本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。

函数接口定义:

void strmcpy( char *t, int m, char *s );

函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。

裁判测试程序样例:

#include <iostream>

#include <cstring>

using namespace std;

#define MAXN 20

 

void strmcpy( char *t, int m, char *s );

 

int main()

{

    char t[MAXN], s[MAXN];

    int m;

 

    cin>>m;

    cin.ignore();

    cin.getline(t,MAXN);

    strmcpy(t,m,s);

    cout<<s;

 

    return 0;

}

 

/* 你的代码将被嵌在这里 */

输入样例:

7

happy new year

输出样例:

new year

 

答案:

解题思路:

声明题中的函数,数一共几个字符,然后判断是否有意义。如果有意义,将t中第m个字符之后的复制至s,最后加入'\0';如果没意义返回空值,最后返回原函数。

代码思路:

设计两个指针分别指向不同的地址(两个数组),当输入的数n大于输入字符长度时,则返回空值,否则,从一个数组中第n个数开始拷贝至第二个数组。

 

核心技术总结:

复制寻找的过程。

问题及解决:

开始不懂getline的用法,后来找了资料;把声明和定义弄混了,声明是语句后面要加分号。觉得这道题看起来简单但是自己写总是很多问题,指向空值要用指针。

猜你喜欢

转载自www.cnblogs.com/z-j-y-20181003106-/p/10089575.html