栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言编程题-“i love china“按单词逆序输出

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言编程题-“i love china“按单词逆序输出

编程题目:

给定一个字符串“I love china”,编写程序完成以单词为单位的逆序,如“china love i”,并要求不允许使用第三方变量保存数据,但可以使用辅助指针变量等。


思路及程序编写 思路一

首先将字符串整体倒置:“anihc evol i”
然后再次遍历字符串,将每个单词倒置:“china love i”

程序如下:

#include 

void swapstr(char *head ,char *tail);

int main(int argc, const char *argv[])
{
	char str[] = "I love china";
	char *head = str, *tail = str;
    	
	puts(str);
    //先将尾指针定位到字符串尾部
	while(*tail != '')
	tail ++;
    //将整个字符串倒置
	swapstr(str, tail - 1);
    //主函数开始扫描遍历整个倒置后的字符串
	while(*head != '')
	{
        //查找单词头		
		while(*head == 32)   //32是空格
		head++;
		//找到头后将尾定位到头,开始找单词尾
		tail = head;
		while(*tail != 32 && *tail != '')
		tail++;
		//前两步找到头之后将单词倒置(因为循环结束后tail指向'',所以tail-1)
		swapstr(head,tail - 1);
		//单词倒置后将头指向尾,为下次找单词做准备
		head = tail;
		
	}
	puts(str);
	return 0;
}

//完成指定字符串倒置
void swapstr(char *head, char *tail)
{
	char temp = 0;
	while(head < tail)
	{
		temp = *head;
		*head = *tail;
		*tail = temp;
		head++;
		tail--;
	}
}

思路二

(这种思路是为了引出strtok函数和指针数组结合用法,可能不满足题目要求,但结果一致。)
首先使用strtok函数进行字符串分割(strtok函数用法可以百度)
然后定义一个指针数组,把分割后的字符串逐个存入指针数组(指针数组概念必须知道)
然后将这个指针数组内的多个字符串用strcat函数进行逆序连接

程序如下:

#include 
#include 

int main(int argc, char *argv[])
{
	char str[] = "i love china";
	char *p_arr[3] = {NULL,NULL,NULL};
	char arr[100] = {0};
	char *p = NULL;
	int i = 0;
	p = strtok(str," ");//获取第一个字符串
	while(p != NULL)  //继续获取其他字符串 直至检测不到字符串返回空指针
	{
		printf("%s ",p);	//打印信息,用于调试
		p_arr[i] = p;		//将获取到的字符串存入指针数组
		i++;
		p = strtok(NULL," ");   //获取下一个字符串
	}
	putchar('n');
	for(i = 0;i < 3;i++)
	{
		printf("%s ",p_arr[i]);   //打印调试信息
	}
	putchar('n');
	for(i = 2; i >= 0;i--)     //倒序
	{
		printf("%s ",p_arr[i]);  //打印调试信息
		strcat(arr,p_arr[i]);    //3个字符串倒着连接
		strcat(arr," ");
	}
	putchar('n');
	puts(arr);					//输出结果
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779763.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号