使用c语言将字符串中的字符反向排列

目录

学习目标:

学习内容:

                条件:

                代码内容:

函数解法:

递归解法:

学习时间:

学习产出:

学习引用:


学习目标:

        了解递归和函数,以及指针的应用,并完成条件


学习内容:

                函数,递归,指针,以代码形式讲解

                条件:

        1.将字符串中的字符反向排列,不是一一打印

        2.不能使用库函数

        3.使用两种方法       

                代码内容:

函数解法:

#define _CRT_SECURE_NO_WARNINGS 1
//条件:将字符串中的字符反向排列,不是一一打印,不能使用库函数

#include<stdio.h>


int j_s(char* x)//自定义strlen
{
	int c = 0;
	while (*x++ != '\0')//字符串后自带\0
	{
		c++;
	}
	return c;
}

void f_x(char* ch)//取字符串地址
{
	int j = j_s(ch);//计算字符串长度
	int l = 0;//左边
	int r = j-1;//右边
	char f[20] = { 0 };//空数组
	while (l < r)
	{
		*f = ch[l];
		ch[l] = ch[r];
		ch[r] = *f;
		l++;
		r--;//下标计算交换
	}
	printf("%s\n", ch);//输出结果
}

int main(void)
{
	char ch[20] = { 0 };
	scanf("%s", ch);//输入

	f_x(ch);

	return 0;
}

递归解法:

#define _CRT_SECURE_NO_WARNINGS 1
//条件:将字符串中的字符反向排列,不是一一打印,不能使用库函数

#include<stdio.h>

int j_s(char* x)//自定义strlen
{
	if (*x != '\0')
	{
		return 1 + j_s(x + 1);//个数
	}
	else
	{
		return 0;
	}
}

void f_x(char* ch)//取字符串地址
{
	int j = j_s(ch);//计算字符串长度
	char f[20] = { 0 };//空数组
	*f = *ch;//赋值空地址
	*ch = ch[j - 1];//最后一位放第一
	ch[j - 1] = '\0';//字符串最后赋值
	if (j_s(ch + 1) >= 2)//地址加一位
	{
		f_x(ch + 1);//输出下一位
	}
	ch[j - 1] = *f;
}

int main(void)
{
	char ch[20] = { 0 };
	scanf("%s", ch);//输入

	f_x(ch);

	printf("%s\n", ch);
	return 0;
}

注意指针地址应用,递归的方法比函数的难理解一点


学习时间:

        大概1个小时左右

        注意思路和画图步骤


学习产出:

        了解递归和函数,以及指针的应用

        代码熟练学习

        在线云笔记重点修改


学习引用:

        根据以往学习内容,灵活应用改变

        使用自写(strlen)函数实现计算字符串长度

        函数的嵌套调用和链式访问

        给出一个数,要求将他翻转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值