1. 程式人生 > >部落格園作業2

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