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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM