当前位置: 首页 > news >正文

好的网站设计培训班网站制作怎么把网站交付

好的网站设计培训班,网站制作怎么把网站交付,环球新军事最新消息,百度搜索引擎营销如何实现题目描述#xff1a;单词倒排_牛客题霸_牛客网 (nowcoder.com) 对字符串中的所有单词进行倒排。 1、构成单词的字符只有26个大写或小写英文字母#xff1b; 2、非构成单词的字符均视为单词间隔符#xff1b; 3、要求倒排后的单词间隔符以一个空格表示#xff1b;如果原字符…题目描述单词倒排_牛客题霸_牛客网 (nowcoder.com) 对字符串中的所有单词进行倒排。 1、构成单词的字符只有26个大写或小写英文字母 2、非构成单词的字符均视为单词间隔符 3、要求倒排后的单词间隔符以一个空格表示如果原字符串中相邻单词间有多个间隔符时倒排转换后也只允许出现一个空格间隔符 4、每个单词最长20个字母 方法一 定义一个字符指针数组用于保存每个单词的起始字符地址接下来将非字母字符全部替换成为字符串结尾标志\0则单词字符字母遇到结尾就结束了相当于把一个字符串以非字母字符进行切割成为了多个字符串最终对字符指针数组进行逆序打印每个单词即可。   创建一个字符数组来存储输入字符串并用一个指针指向字符串的开头创建一个字符指针数组用于保存每个单词的起始字符地址创建一个循环遍历输入字符串中的每个字符在循环中检查当前字符是否为字母大小写字母你可以使用C标准库中的isalpha()函数来进行检查 如果是字母标记单词的起始位置然后移动指针知道跳过这个单词但指针指向的不是字母字符时就跳过了一个单词如果遇到非字母字符即不构成单词的字符将该字符替换成为字符串结尾标志\0向后移动指针下标由大到小地打印字符指针数组的内容。 代码 #include stdio.h #include ctype.h int main() {char arr[10001] {0};char* dst[10001] {NULL};gets(arr);char* move arr;int count 0;while(*move ! \0){// 当遇到字母字符时if(isalpha(*move)){//记录单词的起始地址dst[count] move;// 跳过这个单词找到非字母字符while(*move ! \0 isalpha(*move)){move;}continue;}// 当遇到非字母字符时*move \0;move;}// 逆序打印for(int i count-1;i0;i--){printf(%s , dst[i]);}return 0; } 注 在跳过一个单词的循环时如果只是下面这种形式可能会造成越界访问。例如字符串为 “I am a student\0”。 while(isalpha(*move))move; 在跳过最后一个单词 student 时指针会指向 ’\0‘跳出循环进行下一步*move ’\0‘ move即 ’\0‘  ’\0‘ move。这时move会指向字符串 ’\0‘ 后面一个位置然后再一次进行外循环判断条件 *move ! \0对move进行解引用此时就发生了越界访问。 所以正确的写法如下 if(isalpha(*move)) {//记录单词的起始地址dst[count] move;// 跳过这个单词找到非字母字符while(*move ! \0 isalpha(*move)){move;}continue; } 这样在跳过最后一个单词 student 时指针指向 ’\0‘跳出循环执行continue使下一步*move ’\0‘ move不被执行然后再一次进行循环判断 *move ! \0\0 ! \0条件为假结束循环。 而且添加 continue 不会影响普通情况例如当跳过单词 am 时move指向空格执行continue进行外循环判断条件  *move ! \0 ’ ‘ ! \0条件为真进入循环判断空格是否为字母字符--不是字母字符执行 *move \0; move;  方法二 因为之前做过 单词逆置 这个题目整体逆置再逆置每一个单词所以我用了这种思路不过这种方法比较暴力。如果你想要了解 单词逆置 的话可以看一下http://t.csdn.cn/pwNTt这篇博客。 步骤 整体逆置再逆置每一个单词此时的字符串只需要再将单词之间的非字母字符一个或多个变成空格即可创建一个新的字符数组用一个指针指向逆置后字符串的开头进行判断 如果指针指向的是字母字符就将指针指向的内容添加到新的字符数组中如果指针指向的不是字母字符就将空格添加到新的字符数组中最后打印新的字符数组。 因为单词之间只有一个空格所以并不能 “ 遇到一个非字母字符时就将空格添加到新的字符数组中” 我们发现指针指向的非字母字符是字母字符后面一个非字母字符时才添加空格所以这里可以用一个变量来作为添加空格的条件 当指针指向的是字母字符时flag 1 当指针指向的是非字母字符时判断条件如果flag等于1时添加空格并将flag0如果flag不等于1就不添加。 所以步骤就变成这样 整体逆置再逆置每一个单词此时的字符串只需要再将单词之间的非字母字符一个或多个变成空格即可创建一个新的字符数组用一个指针指向逆置后字符串的开头进行判断 如果指针指向的是字母字符就将指针指向的内容添加到新的字符数组中flag赋值为1如果指针指向的不是字母字符如果flag等于1时就将空格添加到新的字符数组中如果flag不等于1就不添加flag赋值为0最后打印新的字符数组。 代码 #include stdio.h #include string.h #include ctype.h void reverse(char* left, char* right) {while (left right){char temp *left;*left *right;*right temp;left;right--;} } int main() {char arr[10000] { 0 };gets(arr);int len strlen(arr);reverse(arr, arr (len - 1));//逆置整体char answer[30] { 0 };int flag 0;char* dst answer, * move arr;// 逆置单词char* start arr;char* end start;while (*start ! \0)//当*start等于\0时停止逆序{while (isalpha(*end) *end ! \0)//注意最后一个单词的后面不是空格{end;}reverse(start, end - 1);if (*end ! \0)//如果最后一个单词在向后移动时会导致start跳过\0从而导致死循环end;start end;}// 将字符添加到新的字符数组中while (*move ! \0){if (isalpha(*move)){*dst *move;dst;flag 0;}else{if (flag 0){*dst ;dst;flag 1;}}move;}*dst \0;puts(answer);return 0; } 今天的分享就到这里了如果你感觉这篇博客对你有帮助的话就点个赞吧感谢感谢……
http://www.pierceye.com/news/103981/

相关文章:

  • 一个空间2个网站网站 手机 app
  • 河北网站建设方案详细磁器口网站建设
  • 怎么做网站树洞wordpress edd 会员
  • 购物网站中加减数目的怎么做仿站违法吗
  • 代理ip访问网站局门户网站的建设
  • 建网站业务如何开展阳江房产信息网官网
  • 企业网站建设套餐费用网站开发完后期维护重要吗
  • 3营销型网站建设湖北短视频seo推荐
  • 鸿运通网站建设未成年怎么在网上卖东西
  • 郑州网站推广排名公司商会小程序开发一个多少钱啊
  • wordpress单页网站在本页跳转心理网站的建设与维护
  • 哪里可以做网站系统企业管理官网登录入口
  • iis7 网站404错误信息官网下载软件
  • 广州建设网站平台广东seo网站推广代运营
  • 网站 优化 关键字qq官网登录
  • 建设银行园区公积金管理中心网站地方门户网站推广
  • 桂林市网站设计wordpress远程数据库
  • 网站建设多钱怎么做网上卖菜网站
  • 响应式电商网站网站设计常见问题
  • 爱常德网凡科网站可以做seo优化
  • 建设银行手机银行官方网站小程序app公众号的区别
  • 彩票网站维护需要几天企业展示网站建设需要做什么
  • cms网站后台模版惠州网站设计哪家好
  • 海南智能网站建设设计湘潭学校网站建设 x磐石网络
  • 网站建设的入门书籍表格我做视频网站
  • 数据库跟网站内容青岛公司做网站的价格
  • 成都市金牛区建设和交通局网站营销专业网站
  • 免费的视频网站如何赚钱wordpress推广系统
  • 上海酒店团购网站建设网站建设风险分析
  • 做网站的抬头怎么做南昌app定制