部落格園作業2
阿新 • • 發佈:2018-12-08
- 到現在學習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的用法,後來找了資料;把宣告和定義弄混了,宣告是語句後面要加分號。覺得這道題看起來簡單但是自己寫總是很多問題,指向空值要用指標。