C語言每日練習(xí)之字符串反轉(zhuǎn)
分析
在第18天:利用遞歸函數(shù)調(diào)用方式,將所輸入的字符以相反順序打印出來中,已經(jīng)用過遞歸實(shí)現(xiàn)字符順序輸入,逆序輸出,今天的題目是字符串反轉(zhuǎn),將以字符數(shù)組的形式來進(jìn)行操作。
代碼實(shí)現(xiàn)
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 50 //最大長度
char *String_Invertion(char *str);
int main()
{
char string[MAX_LENGTH];
printf("請輸入一個字符串\n");
scanf("%s", string);
String_Invertion(string);
printf("反轉(zhuǎn)后的字符串為%s\n", string);
return 0;
}
/**
* @brief 字符串反轉(zhuǎn)函數(shù)
* @param str 目標(biāo)字符串
* @return 反轉(zhuǎn)后的字符串(str)
*/
char *String_Invertion(char *str)
{
if(str == NULL)
return NULL;
int len = strlen(str);
int i = 0;
for(i = 0; i < len / 2; i++) //替換len/2次
{
/* (按位)異或交換法,其他交換法參考day27 */
str[i] = str[i] ^ str[len - 1 - i];
str[len - 1 - i] = str[i] ^ str[len - 1 - i];
str[i] = str[i] ^ str[len - 1 - i];
}
return str;
}
運(yùn)行結(jié)果

網(wǎng)上參考
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include <stdio.h>
void reverse(char* s)
{
// 獲取字符串長度
int len = 0;
char* p = s;
while (*p != 0)
{
len++;
p++;
}
// 交換 ...
int i = 0;
char c;
while (i <= len / 2 - 1)
{
c = *(s + i);
*(s + i) = *(s + len - 1 - i);
*(s + len - 1 - i) = c;
i++;
}
}
int main()
{
char s[] = "www.runoob.com";
printf("'%s' =>\n", s);
reverse(s); // 反轉(zhuǎn)字符串
printf("'%s'\n", s);
return 0;
}
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C語言棧的表示與實(shí)現(xiàn)實(shí)例詳解
這篇文章主要介紹了C語言棧的表示與實(shí)現(xiàn),對于數(shù)據(jù)結(jié)構(gòu)與算法的研究有一定的借鑒價(jià)值,需要的朋友可以參考下2014-07-07
C語言實(shí)現(xiàn)簡單航班管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
原碼, 反碼與補(bǔ)碼基礎(chǔ)知識詳細(xì)介紹
這篇文章講解了計(jì)算機(jī)的原碼, 反碼和補(bǔ)碼. 并且進(jìn)行了深入探求了為何要使用反碼和補(bǔ)碼, 以及更進(jìn)一步的論證了為何可以用反碼, 補(bǔ)碼的加法計(jì)算原碼的減法,需要的朋友可以參考下2016-12-12
Linux編程實(shí)現(xiàn)制作文件的ed2k鏈
這篇文章主要介紹了Linux編程實(shí)現(xiàn)制作文件的ed2k鏈的相關(guān)資料,需要的朋友可以參考下2015-03-03
C++使用適配器模式模擬實(shí)現(xiàn)棧和隊(duì)列
不論是C語言還是C++,我們都用其對應(yīng)的傳統(tǒng)寫法對棧和隊(duì)列進(jìn)行了模擬實(shí)現(xiàn),現(xiàn)在我們要用新的方法模擬實(shí)現(xiàn)棧和隊(duì)列,這個新方法就是適配器模式,文章通過代碼示例和圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-12-12
C語言菜鳥基礎(chǔ)教程之單精度浮點(diǎn)數(shù)與雙精度浮點(diǎn)數(shù)
在C語言中,單精度浮點(diǎn)數(shù)(float)和雙精度浮點(diǎn)數(shù)(double)類型都是用來儲存實(shí)數(shù)的,雙精度是用記憶較多,有效數(shù)字較多,數(shù)值范圍較大。2017-10-10

