C语言倒置字符串练习题(三步翻转法)

这篇具有很好参考价值的文章主要介绍了C语言倒置字符串练习题(三步翻转法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述:

将一句话的单词进行倒置,标点不倒置。比如 I like beijing.,经过函数后变为:beijing. like I

代码(含注解):

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

//将一句话的单词进行倒置,标点不倒置。比如 I like beijing.,经过函数后变为:beijing.like I

void reverse(char* left,char* right) {  //逆置字符串函数
	while (left<right)
	{
		char temp = *left;
		*left = *right;
		*right = temp;
		left++;
		right--;
	}

}
int main() {
	char arr[100] = { 0 };
	gets(arr);
	//三步翻转法
	//1.逆置字符串
	int len = strlen(arr);
	reverse(arr,arr+len-1);

	//2.逆置每个单词
	char* start = arr;
	while (*start)      //当*start没访问到\0时
	{
		char* end = start;   //创立一个尾指针访问某个单词的末尾
		while (*end!=' '&&*end!='\0')   //当访问到空格时或者\0时代表到达一个单词的末尾
		{
			end++;
		}
		reverse(start, end - 1);  //逆置现在访问完的单词
		if (*end==' ')                //访问到的是空格
		{
			start = end + 1;          //准备访问下个单词
		}
		else if(*end=='\0')     //访问到字符串的末尾
		{
			start = end;        //使start=\0,从而退出最外层的while循环
		}
	}

	printf("%s", arr);         //打印字符串

	return 0;
}

运行结果:

C语言倒置字符串练习题(三步翻转法),C语言基础知识贴,c语言,算法,开发语言,数据结构文章来源地址https://www.toymoban.com/news/detail-798053.html

到了这里,关于C语言倒置字符串练习题(三步翻转法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 倒置字符串、猜名次、猜凶手、杨辉三角

    目录   例一:倒置字符串 例二:猜名次 例三:猜凶手 例四:杨辉三角 方法一  方法二    首先我们先来看一下题目具体要求 再来看一下我们所需要的效果  这里呢,博主给出两种思路,一种是先将整个字符串逆序,再将单个单词逆序;另一种是先将单个单词厉旭,再将整

    2024年02月06日
    浏览(37)
  • 【C语言练习】字符串旋转你会嘛?

    实现一个函数,可以左旋字符串中的k个字符。例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB  要左旋 k 个字符,我们首先应该考虑左旋 1 1 1 个字符怎么做。左旋一个字符分为以下的三步: 取出字符串中最左边的一个字符 将字符串中剩下的字符按从左到右的顺序

    2024年02月10日
    浏览(34)
  • c语言练习41:深入理解字符串函数strlen strcpy strcat

    模拟实现:”strlen   strcpy   strcat strlen   strcat:

    2024年02月09日
    浏览(47)
  • 汇编语言(Assembly Language)习题:键盘输入一个字符串,试将其中的小写字母转换为大写字母,其它字符保持不变。

    前置知识:汇编语言常用系统功能调用(如果懂直接跳过看题目详解) 格式: 功能:从键盘输入字符的ASCII码送入寄存器AL中,并送显示器显示。 格式: 功能:将DL寄存器中的字符送显示器显示,如果DL中为〈CTRL〉+〈BREAK〉的ASCII码,则退出。 格式: 功能:将DL寄存器中的字

    2024年02月03日
    浏览(73)
  • C语言之练习题

    欢迎来到我的: 世界 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 这期文章由:两题问答题+四道编程题;小孩在文章中写有详细解题思路,感谢大家支持支持。 思路: 首先我们要知道 x=x(x-1) 的含义; 假设x=3;也就是 011 ; 而x-1=2;是 010 ;

    2024年02月10日
    浏览(54)
  • C 语言练习题更新

    目录(先不要看答案,首先自己做才能更好的领悟,做不来没关系) 题目一:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是 1、2、3、4,组成所有的排列后再去掉不满足条件的排列。 题目

    2024年02月14日
    浏览(43)
  • 习题练习 C语言

    首先我们要了解什么是offsetof宏: . 此具有函数形式的宏返回数据结构或联合类型中成员成员的偏移值(以字节为单位)。 . 返回的值是size_t类型的无符号整数值,其字节数位于指定成员与其结构开头之间。 什么意思呢,可以看到下面这张图片: 下面我们来看到这一习题:

    2024年02月14日
    浏览(49)
  • 习题练习 C语言(暑期)

    今天为大家分享我暑假期间所练习的一些小题目! 相信大家看完之后都会有所提升的! 加油! 以下不正确的定义语句是( ) A: double x[5] = {2.0, 4.0, 6.0, 8.0, 10.0}; B: char c2[] = {‘x10’, ‘xa’, ‘8’}; C: char c1[] = {‘1’,‘2’,‘3’,‘4’,‘5’}; D: int y[5+3]={0, 1, 3, 5, 7, 9}; 题目解

    2024年02月10日
    浏览(50)
  • C语言习题练习

    首先我们要了解什么是offsetof宏: . 此具有函数形式的宏返回数据结构或联合类型中成员成员的偏移值(以字节为单位)。 . 返回的值是size_t类型的无符号整数值,其字节数位于指定成员与其结构开头之间。 什么意思呢,可以看到下面这张图片: 下面我们来看到这一习题:

    2024年02月15日
    浏览(49)
  • C语言之数组练习题

    第1关:数组插入元素 300 任务要求 参考答案 评论106 任务描述 相关知识 数组 数组元素的表示方法 编程要求 测试说明 任务描述 本关需要你将一个数插入到一组已经排好序的数组并输出。 相关知识 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包