第六章:数组和字符串

//练习题:
//1.例如:如果用户输入了字符串"Our house is at your disposal.",
//要查找的单纯是our,则得到的字符串应该是"***house is at your disposal."而不是"***house is at y*** disposal."
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
int main ()
{
    char ARR[100] ;     //ARR接受用户的输入
    char arr[100] = {'0'} ;         //那ARR中的字符转化成小写字符存储在arr中
    cout<<"输入一个字符串"<<endl;
    gets(ARR);
    cout<<"输入要替换的部分字符:"<<endl;
    string temp;            //接受目标字符
    cin>>temp;          
    int M = strlen (ARR);
    int m = temp.length ();
    for (int i = 0 ; i < M ; i++)           //全部转化成小写
    {
        if (ARR[i] >= 65 && ARR[i] <= 90)
            arr[i] = ARR[i] + 32;
        else
            arr[i] = ARR[i] ;
    }
    for (int i = 0 ; i < m ; i++)           //目标字符也转化成小写
    {
        if (temp[i] >= 65 && temp[i] <= 90)
            temp[i] = temp[i] + 32;
    }

    cout<<"替换后为:";
    for (int i = 0 ; i < M ; i++)
    {
        if (i == 0)
        {   
            int k = 0;  
            if (ARR[k + m] == ' ')  //判断匹配是否一个独立的单词
            {
                for ( k = 0 ; k < m ; k++)
                {
                    if (temp[k] != arr[k])  
                        break;
                }
                if (k == m)     //匹配后进行替换       
                {
                    for ( k = 0 ; k < m ; k++)
                    {
                        ARR[k] = '*' ;          
                    }
                }
            }
        }
        else
        {
            if (ARR[i - 1] == ' ' && (ARR[i + m] == ' ' || ARR[i + m] == 0))    //判断匹配是否一个独立的单词
            {
                int k =  i;int j = 0;
                for ( k = i ; k < i + m ; k++ , j++)
                {
                    if (temp[j] != arr[k])  
                        break;
                }
                if (k == ( i + m ) )        //判断是否匹配匹配后进行替换 
                {
                    for ( k = i ; k < i + m ; k++)
                    {
                        ARR[k] = '*' ;          
                    }
                }
            }
        }
    }
    cout<<ARR<<endl;

    system ("pause");

}
/////////////////////////////////////////////////////////////////////////////////////////////
//   2.编写一个程序,提示输入两个字符串,在测试它们,看看其中一个
//是否为另一个字符串颠倒字母顺序而得到的
/*
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
int main ()
{
    string arr1 ;
    string arr2 ;
    cout<<"输入第一个字符串:"<<endl;
    cin>>arr1;
    cout<<"输入第二个字符串:"<<endl;
    cin>>arr2;
    int i = arr1.length () - 1;
    int j = arr2.length () - 1;
    if (i == j)
    {
        int k = 0;
        for (k ; k <= j  ; k++ , i--)
        {
            if (arr1[i] != arr2[k])
                break;
        }
        if (i == -1)
            cout<<"第二次输入的是第一个字符串的逆序存放"<<endl;
        else
            cout<<"第二次输入的不是第一个字符串的逆序存放"<<endl;
    }
    else
        cout<<"第二次输入的不是第一个字符串的逆序存放"<<endl;

    system ("pause");

}
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值