- 到现在学习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的用法,后来找了资料;把声明和定义弄混了,声明是语句后面要加分号。觉得这道题看起来简单但是自己写总是很多问题,指向空值要用指针。