当前位置:网站首页>编写一个函数 reverse_string(char * string)(两种方法实现)7.26
编写一个函数 reverse_string(char * string)(两种方法实现)7.26
2022-08-03 05:11:00 【tt142】
实现:将参数字符串中的字符反向排列,不是逆序打印。
要求:不能使用C函数库中的字符串操作函数。
char arr[] = "abcdef"; //最后输出fedcba
目录.
1. 循环方式
2. 递归方式
首先声明
这里需要用到库函数strlen,当然我们也可以自己写一个函数代替
int my_strlen(char* string)
{
if (*string != '\0')
return 1 + my_strlen(string+1);
else
return 0;
}其次,如果只是逆序打印只需
#include<stdio.h>
void reverse_string(char* arr)
{
if (*arr != '\0')
reverse_string(arr + 1);
printf("%c",arr[0]);
}
int main()
{
char string[]="abcd";
reverse_string(string);
return 0;
}
1. 循环
用循环的方式更合适整个题目的要求
1.创建两个指针,一个在字符串左侧,另一个在最后一个有效位置
2.交换两个指针位置的字符
3.左指针++,右指针--,重复2.(循环出现)
#include<stdio.h>
#include<string.h>
void reverse_string(char* arr)
{
char* left = arr;
char* right = arr + strlen(arr) - 1;
while (right - left > 0)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main()
{
char string[]="abcd"; //char string[50];
// scanf("%s", string);
reverse_string(string);
printf("%s ", string);
system("pause");
return 0;
}当然在这里我们也可以输入字符串,//后面就是
2.递归方式,第一种:依然采用上面的思路
#include<string.h>
#include<windows.h>
void reverse(char* arr, char* left, char* right)
{
if (right - left <= 0)
return;
char c = *left;
*left = *right;
*right = c;
reverse(arr, left + 1, right - 1);
}
int main()
{
char arr[50];
scanf("%s", arr);
int len =strlen(arr);
char* left = arr;
char* right = arr + len - 1;
reverse(arr, left, right);
printf("%s ", arr);
system("pause");
return 0;
}第二种
1. 交换第一个和最后一个有效元素
2.将最后一个元素放上\0,arr+1
void reverse_string(char* arr)
{
int len = strlen(arr );
char tmp = *arr;
*arr = *(arr + len - 1);
*(arr +len - 1) = '\0';
if(strlen(arr+1)>1)
reverse_string(arr + 1);
*(arr +len - 1) = tmp;
}
int main()
{
char string[]="abcdef";
//scanf("%s", string);
reverse_string(string);
printf("%s", string);
return 0;
}创作不易,感谢观看
边栏推荐
猜你喜欢
随机推荐
在树莓派上搭建属于自己的网页(1)
Install IIS services (Internet Information Services (Internet Information Services, abbreviated IIS, Internet Information Services)
传说中可“免费白拿”的无线路由器 - 斐讯 K2 最简单刷 breed 与第三方固件教程
求因子数量
lintcode2330 · 计算x秒后的时间
web安全-SSTI模板注入漏洞
-一尺之棰-
Redis常用命令
-完全数-
Response 重写设置返回值
VSO Downloader Ultimate 5.0.1.45 中文多语免费版 在线视频下载工具
13.< tag-动态规划和回文字串>lt.647. 回文子串 + lt.516.最长回文子序列
Kaggle(四)Scikit-learn
PotPlayer实现上班摸鱼电视自由
breed Web刷机升级详细教材修正编译器固件说明_itkeji.top
presto安装部署教程
2017-06-11 Padavan 完美适配newifi mini【adbyby+SS+KP ...】youku L1 /小米mini
1.ROS环境搭建与基础工作
idea使用@Autowired注解爆红原因及解决方法
-元素之和-








