当前位置:网站首页>倒置字符串
倒置字符串
2022-08-08 18:06:00 【随风的浪】
题目要求
将一句话的单词进行倒置,标点不倒置。比如:I Iike beijing. 经过函数后变为 beijing. like l
输入描述:
输入一个仅包含小写字母、空格、‘.’ 的字符串,长度不超过100。
‘.’ 只出现在最后一个单词的末尾。
输出描述:
依次输出倒置之后的字符串,以空格分割。
思路
首先,这道题与字符串逆序打印不同,它相当于以空格为挡板,将空格隔开的几个整体逆序。
如果一个单词逆序两次,那么它将不变。由此,我们可以先将 I Iike beijing. 变为 l ekil .gnijieb ,再将其整体逆序就变为 beijing. like l
实现
首先,我们看要求,输入含空格,那么 scanf 便不能用了(scanf 不能读取空格),我们用 gets 来实现输入。
gets(arr);从标准输入读取字符,并将其作为 C 字符串存储到 arr 中,直到到达换行符或文件末尾。
我们先写 main 函数:
int main()
{
char arr[101] = {
0 }; //初识化数组为0
gets(arr);
char* m = arr;
while (*m) //判断地址为 m 的元素是否为0
{
char* n = m; //定义一个指针 n 等于 m
while (*n != ' '&&*n!='\0')
{
//找出下一个空格,并把其地址赋给 n
n++;
}
ni_xu(m, n - 1); // n-1 是找出空格前一位字符的地址
//然后将需要逆序的首元素和最后一个元素的地址传入逆序函数。
if (*n != '\n') //判断是否到了字符串末尾
m = n + 1; //将空格后的一个元素改为首元素地址
else
m = n;
}
int len = strlen(arr); //求出字符串长度
ni_xu(arr,arr+len-1 ); //整体逆序
printf("%s\n", arr);
return 0;
}
当 * n 是 ‘\n’ 时,进入 else ,将首元素地址改为 n ,然后再走一遍循环,你会发现 *m 变为了0,退出循环。
接下来就是逆序字符串函数:
void ni_xu(char* a, char* b)
{
//假设最左边的地址为a,最右边的为b
while (a < b)
{
char tmp = *a;
*a = *b;
*b = tmp;
a++;
b--;
}
}
将两个函数放一起:
#include<stdio.h>
#include<string.h> //使用了 strlen 需包含头文件
void ni_xu(char* a, char* b)
{
while (a < b)
{
char tmp = *a;
*a = *b;
*b = tmp;
a++;
b--;
}
}
int main()
{
char arr[101] = {
0 };
gets(arr);
char* m = arr;
while (*m)
{
char* n = m;
while (*n != ' '&&*n!='\0')
{
n++;
}
ni_xu(m, n - 1);
if (*n != '\n')
m = n + 1;
else
m = n;
}
int len = strlen(arr);
ni_xu(arr,arr+len-1 );
printf("%s\n", arr);
return 0;
}
好了,以上便是本题的全部内容,若对您有所帮助还请多多支持哦,若讲解有误还请批评指正,我们下期见~
边栏推荐
猜你喜欢
随机推荐
2 prerequisites for successful "digital transformation" of enterprises!
How banner displays drawable images
【wpf】Bingding的方向和触发的时机
【目标检测】小脚本:根据xml批量复制jpg图片
Codeforces Round #699 (Div. 2)
无需精子卵子子宫体外培育胚胎,Cell论文作者这番话让网友们炸了
slam测评工具evo的安装与使用
比较器是否可以当做运放使用?
如何让您的wiki内容更高级?
【AI玩家养成记 • 第3期】AI开发者必备!史上最适合新手的昇腾AI环境搭建教程!!
瑞利衰落条件下扩频通信系统误码率仿真
元宇宙三巨头Animoca Brands、Yuga Labs、Gala多维度对比,谁才是未来?
IP分配——DHCP(讲解+配置)
水印图像读取与制作,三通道图转为4通道,制作透明图
Neo4j: 1. CQL statement
AtCoder Regular Contest 145
21天学习第三天--常用运算符
ccdV01_20220808
js温度计插件自定义数值
PX4模块设计之十九:Replay模块