C:有一个字符数组的内容为:"student a am I", 请你将数组的内容改为"I am a student"

思绪:

  1. 将数组内每个单词内的字符分别反转
  2. 将数组内的字符整体反转
  3. 打印数组

解法一:
不使用库函数

代码如下:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<stdlib.h>

//反转数组str[]内的字符
void reverse_part(char* str, int start, int end){
	int i, j, tmp;

	for (i = start, j = end; i < j; i++, j--){
		tmp = str[i];
		str[i] = str[j];
		str[j] = tmp;
	}
}

int main(){
	char src[] = "student a am I";
	int i;
	int start = 0, end;
	
	for (i = 0; src[i]; i++){
		if (src[i] == ' '){	//以' ' 为分界线,将每个单词分开
			end = i - 1;
			reverse_part(src, start, end);
			start = i + 1;
		}
	}
	reverse_part(src, start, i - 1);//用来反转最后一个单词
	reverse_part(src, 0, i - 1);	//将src数组整体反转,除了src[i] == ‘\0’。
	puts(src);	//打印字符数组

	system("pause");
	return 0;
}

代码生成图:
在这里插入图片描述

解法二:
完全使用库函数

代码如下:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void reverse(char* src){
	char* p;
	char tmp[256] = { 0 };

	//在 src数组中查找 ' '最后一次出现的位置
	while (p = strrchr(src, ' ')){
		strcat(tmp, p + 1); //p+1 是将' '后的一段字符串拼接到tmp中
		strcat(tmp, " ");	//给tmp数组再补一个‘ ’
		*p = 0;		//将的 ' '的位置设置为'\0'
	}
	strcat(tmp, src);//此时已没空格,将src数组中剩下的字符串拼接到tmp中
	strcpy(src, tmp);//将tmp数组覆盖回src数组中
}

int main(){
	char src[] = "student a am I";

	reverse(src);	//反转数组src[]
	puts(src);		//打印字符数组

	system("pause");
	return 0;
}

代码生成图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值