为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 输入三个字符串

输入三个字符串

2018-03-01 9页 doc 24KB 69阅读

用户头像

is_468343

暂无简介

举报
输入三个字符串输入三个字符串 例9-16 输入三个字符串,将字符串1中所有与字符串2相同的子串替换成字符串3。例如,输入的字符串1为"werLOOPouyio3o565p6 LOOPedd",字符串2为"LOOP",字符串3为"NEW",那么替换后,字符串1为"werNEWouyio3o565p6NEWedd"。 根据题意,写一个符合要求的函数头。函数有两个char型数组指针的输入参数,一个char型数组指针输出参数,没有返回值。可以定为void replace(char chString[],char chOldWord[],cha...
输入三个字符串
输入三个字符串 例9-16 输入三个字符串,将字符串1中所有与字符串2相同的子串替换成字符串3。例如,输入的字符串1为"werLOOPouyio3o565p6 LOOPedd",字符串2为"LOOP",字符串3为"NEW",那么替换后,字符串1为"werNEWouyio3o565p6NEWedd"。 根据题意,写一个符合要求的函数头。函数有两个char型数组指针的输入参数,一个char型数组指针输出参数,没有返回值。可以定为void replace(char chString[],char chOldWord[],char chNewWord[]),参数分别代字符串1,字符串2和字符串3。 数据要求 问题中的常量: #define MAXNUM 200 /*定义数组的最大长度*/ 问题的输入: char chStr /*字符串1,初始的字符串*/ char chOld /*字符串2,要寻找的旧的字符串/ char chNew /*字符串3,要替换的新的字符串/ 问题的输出: char str1 /*字符串1,最终输出的结果字符串,是替换后的字符串*/ 初始算法 1(定义三个字符串; 2(调用库函数初始化三个字符串; 3(调用函数replace得到最终的字符串; 4(输出结果字符串; 5(结束。 算法细化 算法的主要步骤是第三步,它完成了旧字符串的查找定位和新字符串的替换的功能,具体的步骤细化如下: 步骤3的细化 3(1 初始化临时变量 3(2 循环计算字符串2(也就是旧的字符串)的长度 3(3 循环计算字符串3(也就是新的字符串)的长度 3(4 循环查找字符串2是否在字符串1中,如果找到,用字符串3(chNew)替换 掉字符串2(chOld) 3(5 函数结束 对一次替换的算法,可以分解为3个步骤:查找、调整长度和替换。 查找:查找字符串1中是否有字符串2。利用循环可以得到字符串2的长度nLen2。从字符串1的第一个元素开始,比较后面的nLen2个元素是否和字符串2的nLen2个元素完全相同。如果完全相同,则进行步骤2;否则从字符串1的第二个元素开始,继续上述过程… …。如果搜索到字符串末尾也不能进行步骤2,则说明字符串1中没有字符串2。 调整长度:计算替换后的字符串1长度,调整字符串1。假设字符串1的位置nStartPos后的nLen2个元素与字符串2相同。如果字符串3的长度nLen3大于字符串2的长度nLen2,那么字符串1的位置nStartPos+nLen2后的所有元素向后移动nLen3–nLen2位;否则,向前移动nLen2–nLen3位。这样处理后,字符串1中不需要替换的部分已经调整完毕。 替换:利用循环,把字符串1的位置nStartPos后的nLen3个元素换成字符串3。替换字符串1中的所有字符串2,可以利用循环对上述算法作适当扩展即可。每次替换总是从新的nStartPos位置开始进行。但是一定要注意,每次替换后字符串1的长度可能发生变化, 版权所有:东北大学计算中心 nLen1每次要重新计算。 图 Replace函数 开始 初始化临 时变量 计算chOldWord 的长度 开始计算chNewWord的 长度 输入三个 字符串 N chString[nStartPos]!='\0',调用函数 replace Y 输出结果查找位置字符串 结束 替换字符串 nStartPos++ 结束 图5-17 程序执行 程序代码如下: #include “stdio.h” #define MAXNUM 200 void replace(char chString[],char chOldWord[],char chNewWord[]) 版权所有:东北大学计算中心 { int i,nStartPos=0,nLen1=0,nLen2=0,nLen3=0,nFound; /*计算旧词和新词的长度*/ while(chOldWord[nLen2++]!='\0'); nLen2--; while(chNewWord[nLen3++]!='\0'); nLen3--; /* chString中可能有多个旧词,均要替换为新词; 利用循环向前拨动查找位置,逐次进行比较和替换*/ while(chString[nStartPos]!='\0') { /*从nStartPos位置开始,Len2长度的字符串是否和旧词相同,*/ nFound=1; for(i=0;i=0)/*新词比旧词长,从后向前移动*/ { for(i=nLen1-1;i>=nStartPos;i--) chString[i+nLen3-nLen2]=chString[i]; } else/*新词比旧词短,从前向后移动*/ { for(i=nStartPos+nLen2;inLenOld) /*新词比旧词长,从后向前移动*/ { while(*pszPos++); while(pszPos>=pszString+nLenOld) { *(pszPos-nLenOld+nLenNew)=*pszPos; pszPos--; } } /*将新词复制到chString,替换原来的旧词*/ for(i=0;i
/
本文档为【输入三个字符串】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索