定制型网站建设服务天津平台网站建设费用
web/
2025/9/27 17:45:34/
文章来源:
定制型网站建设服务,天津平台网站建设费用,百度抓取网站频率,磁力猫题目描述#xff1a;将一句话的单词进行倒置#xff0c;标点不倒置。比如 “I like beijing.”#xff0c;经过处理后变为#xff1a;“beijing. like I”。 文章目录 原题目题目描述#xff1a;输入描述#xff1a;输出描述#xff1a;题目链接#xff1a; 整体思路分… 题目描述将一句话的单词进行倒置标点不倒置。比如 “I like beijing.”经过处理后变为“beijing. like I”。 文章目录 原题目题目描述输入描述输出描述题目链接 整体思路分步实现1. 输入字符串2. 逆序功能3. 整句话逆序4. 单词逆序5. 整体代码和oj结果 写在最后 原题目
题目描述
将一句话的单词进行倒置标点不倒置。比如 “I like beijing.”经过处理后变为“beijing. like I”。 字符串长度不超过100。
输入描述
输入一个仅包含小写字母、空格、‘.’ 的字符串长度不超过100。 ‘.’ 只出现在最后一个单词的末尾。
输出描述
依次输出倒置之后的字符串以空格分割。
题目链接
https://www.nowcoder.com/questionTerminal/8869d99cf1264e60a6d9eff4295e5bab
整体思路
先将整句话逆序处理然后再将每个单词进行逆序这样一来整句话的顺序虽然颠倒了但是单词因为逆序了两次还是正常顺序。
分步实现
1. 输入字符串
利用gets函数输入获取整句话的字符串。
#include stdio.h
int main()
{char arr[100];gets(arr);//和scanf函数类似获取键盘输入的字符printf(%s, arr);//测试是否获取到了return 0;
}编译结果
2. 逆序功能
自定义写一个reverse函数利用指针来逆序字符串的内容之所以写成函数是因为这个功能需要复用。 利用数组在栈区中存放时下标由小到大地址由低到高存放的原理判断其首元素地址和末位元素的地址如果左边的地址小于右边使用指针进行元素交换并且左边指针右边指针–重新进行循环判断直到左边大于等于右边则跳出循环这样就可以完成字符串的逆序操作。
#includestring.h
void reverse(char* left, char* right)
{char tmp;while (left right){tmp *left;*left *right;*right tmp;left;right--;}
}3. 整句话逆序
利用strlen函数求得字符串长度就可以利用reverse函数将首元素地址和首元素地址加字符串长度减一将整句话逆序。
#include stdio.h
int main()
{char arr[100];gets(arr);int len strlen(arr);reverse(arr, arr len - 1);//传入首元素地址和末位元素地址printf(%s\n, arr);//测试用return 0;
}编译结果
4. 单词逆序
利用指针来判断是否遇到了空格或者\0没有遇到的话指针向前走如果遇到了就将之前的内容逆序一次直到指针走到\0跳出循环。
int main()
{char arr[100];gets(arr);int len strlen(arr);reverse(arr, arr len - 1);char* cur arr;//cur作为光标遍历整个字符串并进行判断char* start arr;//start作为每个单词的第一个元素地址指针用while (*cur){while (*cur ! *cur ! \0){cur;//不是空格或者\0指针就向前走}reverse(start, cur - 1);//将这个单词的开头和末位地址传入reverse进行逆序start cur 1;//start去指向新单词的开头if (*cur ! \0)//直到*cur数组元素等于\0时cur指针停止并且在while循环处跳出循环因为\0就是0为假{cur;}}printf(%s\n, arr);//打印字符串return 0;
}编译结果
5. 整体代码和oj结果
#include stdio.h
#includestring.hvoid reverse(char* left, char* right)
{char tmp;while (left right){tmp *left;*left *right;*right tmp;left;right--;}
}int main()
{char arr[100];gets(arr);int len strlen(arr);reverse(arr, arr len - 1);char* cur arr;char* start arr;while (*cur){while (*cur ! *cur ! \0){cur;}reverse(start, cur - 1);start cur 1;if (*cur ! \0){cur;}}printf(%s\n, arr);return 0;
}写在最后
如果本文对您有帮助可不可以给我一个小小的点赞呀❤~您的支持是我最大的动力。
博主小白一枚才疏学浅难免有所纰漏欢迎大家讨论和提出问题博主一定第一时间改正。
谢谢观看嘿嘿(๑•̀ㅂ•́)و✧~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82889.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!