C++實驗10

一、複製字符串

#include<iostream>
#include<string.h>
using namespace std;
void main()
{
    char a[10],b[10];
    cout<<"請輸入第一個字符串:\n";
    cin.getline(a,10);
    cout<<"請輸入第二個字符串:\n";
    cin.getline(b,10);
    cout<<"1號字符串:"<<a<<'\n';
    cout<<"2號字符串:"<<b<<'\n';
    int i;
    for(i=0;b[i];)
        a[i]=b[i++];
    a[i]=b[i]; //補結束符
    // 上述字符串從b賦值到a也可用strcpy(a,b);
    cout<<"1號字符串:"<<a<<'\n';
    cout<<"2號字符串:"<<b<<'\n';
}

二、連接字符串

#include<iostream>
using namespace std;
#include<string.h>
void getchar(char a[])
{
    static int n=1;
    cout<<"請輸入第"<<n<<"個字符串:\n";
    cin.getline(a,13); 
    //13爲CR的ASCII碼,實際默認的也是ENTER
    n++;
}
void main()
{
    char a[20],b[10];
    getchar(a);
    getchar(b);
    cout<<"a:"<<a<<'\n';
    cout<<"b:"<<b<<'\n';
    strcat(a,b);
    /*或者
    int i=0,j=0;
    while(a[i++]); //獲得a的字符串結束符位置。
    i--;           //此時i已到結束符的後一位,故i--
    while(b[j])
        a[i++]=b[j++];
    a[i]=0;
    */
    cout<<"拼接後a:"<<a<<endl;
}

三、相同字符串刪除

#include<iostream>
using namespace std;
#include<string.h>
int del_samechar(char []);
void main()
{
    char a[20];
    cout<<"請輸入需要輸出的數組:\n";
    cin.getline(a,20);
    cout<<"刪除了相同的"<<del_samechar(a)<<"個字符\n";
    cout<<a;
}
int del_samechar(char a[])
{
    int len,n=0;

        len=strlen(a);
        //這個bug找了好久,前面輸出對,後面出現問題,一定是字符邊界有問題。
        for(int i=0;i<len-1;i++)
        {
            for(int j=i+1;j<len;j++)
            {
                if(a[i]==a[j])
                {
                    for(int k=j;k<=len;k++)
                        a[k]=a[k+1];
                    len=strlen(a);
                    i=-1;  //讓循環回到初始狀態的方法
                    n++;
                    break;
                }
            }
        }

    return n;
}

  以上方法較爲麻煩,可使用string類來處理字符串

#include<iostream>
using namespace std;
#include<string>
int delete_same(string s)
{
    int n=0;
    int len=s.size();
    for(int i=0;i<len-1;i++)
    {
        for(int j=i+1;j<len;j++)
            if(s[i]==s[j])
            {
                s.erase(j,1);
                n++;
                i=-1;
                len=s.size();
                break;   //忘掉,i=-1,字符數組越界
            }
    }
        cout<<s<<endl;
    return n;
}
void main()
{
    string s;
    cout<<"請輸如需要檢查的字符:\n";
    cin>>s;
    cout<<"刪除了"<<delete_same(s)<<"個字符\n";
    cout<<s;
    //需要注意的是,此時由string定義的s應理解爲一變量,需要引用傳遞,不是字符數組。
}
發佈了45 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章