C基礎寒假練習(3)

一、求數組中的第二大值

#include <stdio.h>
int main() 
{int arr[] = {12, 35, 1, 10, 34, 1};int size = sizeof(arr) / sizeof(arr[0]);if (size < 2) {printf("數組元素不足兩個\n");return 0;}int first = -2147483648, second = -2147483648; // 使用INT_MIN的替代值for (int i = 0; i < size; i++) {if (arr[i] > first) {second = first;first = arr[i];}else if (arr[i] > second && arr[i] != first) {second = arr[i];}}if (second == -2147483648) {printf("沒有第二大值\n");}else {printf("第二大值是: %d\n", second);}return 0;
}

以下是對代碼的詳細解釋:

  1. 初始化數組和計算大小:

    int arr[] = {12, 35, 1, 10, 34, 1};
    int size = sizeof(arr) / sizeof(arr[0]);
    
  • arr?是一個包含若干整數的數組。
  • size?計算數組的大小,即數組中元素的個數。
  1. 檢查數組大小是否足夠:

    if (size < 2) 
    {printf("數組元素不足兩個\n");return 0;
    }
    
  • 如果數組中的元素少于兩個,程序會輸出 "數組元素不足兩個" 并終止執行。

初始化變量:

int first = -2147483648, second = -2147483648; // 使用INT_MIN的替代值
  • first 和 second 分別用于存儲數組中的最大值和第二大值。初始值設為 -2147483648,這是 int 類型的最小值,相當于 INT_MIN。

遍歷數組尋找最大值和第二大值:

for (int i = 0; i < size; i++) 
{if (arr[i] > first) {second = first;first = arr[i];}else if (arr[i] > second && arr[i] != first) {second = arr[i];}
}
  • 遍歷數組中的每個元素。
  • ?如果當前元素大于 first,則更新 second 為 first,并將 first更新為當前元素。
  • ?如果當前元素小于 first 但大于 second,并且不等于 first,則更新 second 為當前元素。
  1. 檢查并輸出結果:

    if (second == -2147483648) 
    {printf("沒有第二大值\n");
    }
    else 
    {printf("第二大值是: %d\n", second);
    }
    
  • 如果?second?仍然是初始值?-2147483648,說明數組中沒有第二大的值,輸出 "沒有第二大值"。
  • 否則,輸出找到的第二大值。

總結來說,這段代碼通過一次遍歷數組來找到最大值和第二大值,時間復雜度為 O(n),其中 n 是數組的大小。

二、終端輸入帶空格的字符串,刪除字符中的空格

#include <stdio.h>// 計算字符串長度的函數
int my_strlen(const char* str) 
{int len = 0;while (str[len] != '\0') {len++;}return len;
}int main()
{char str[100];char result[100]; // 用于存儲沒有空格的結果字符串的數組int i, j = 0;printf("請輸入一個字符串: ");fgets(str, sizeof(str), stdin);// 如果存在換行符,則將其移除int len = my_strlen(str);if (len > 0 && str[len - 1] == '\n') {str[len - 1] = '\0';}// 處理字符串以刪除空格for (i = 0; i < len; i++){if (str[i] != ' ') {result[j++] = str[i];}}result[j] = '\0'; // 終止結果字符串printf("刪除空格后的字符串: %s\n", result);return 0;
}

以下是對代碼的詳細解釋:
1. 計算字符串長度的函數 my_strlen: ? ? ? ?
?

int my_strlen(const char* str) 
{int len = 0;while (str[len] != '\0') {len++;}return len;
}

? ? ? 這個函數用于計算字符串的長度。它通過遍歷字符串直到遇到空字符 '\0' 來計算長度。
2. 主函數 main: ? ? ? ?

int main()
{char str[100];char result[100]; // 用于存儲沒有空格的結果字符串的數組int i, j = 0;printf("請輸入一個字符串: ");fgets(str, sizeof(str), stdin);

? ??? 定義了兩個字符數組 str 和 result,分別用于存儲輸入的字符串和處理后的字符串。
? ? ? 使用 fgets 從標準輸入讀取字符串,并存儲在 str 中。
3. 移除換行符: ? ? ? ?
?

    // 如果存在換行符,則將其移除int len = my_strlen(str);if (len > 0 && str[len - 1] == '\n') {str[len - 1] = '\0';}

? ? ? 調用 my_strlen 計算字符串的長度。
? 如果字符串末尾有換行符(即 '\n'),則將其替換為空字符 '\0',以移除換行符。
4. 刪除空格: ? ? ? ?
?

    // 處理字符串以刪除空格for (i = 0; i < len; i++){if (str[i] != ' ') {result[j++] = str[i];}}result[j] = '\0'; // 終止結果字符串

? ? ? 遍歷輸入字符串 str,將非空格字符復制到 result 數組中。
? ? ? 使用變量 j 來跟蹤 result 數組的當前位置。
? ? ? 最后,在 result 數組的末尾添加空字符 '\0',以終止字符串。
5. 輸出結果: ? ? ? ?

    printf("刪除空格后的字符串: %s\n", result);return 0;
}


? ?? 返回 0,表示程序正常結束。
總結來說,這段代碼實現了一個簡單的字符串處理功能,能夠讀取用戶輸入的字符串,刪除其中的空格,并輸出處理后的結果。

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

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

相關文章

【linux三劍客】grep練習題

題目 進入/lianxi目錄&#xff0c;復制/etc/passwd到當前目錄下&#xff0c;然后對passwd進行操作查找出當前passwd文件中以ftp或者mail開頭的行&#xff0c;在屏幕上輸出。查找出當前passwd文件中有沒有以r、m、f開頭的行&#xff0c;在屏幕上輸出。查找出當前passwd文件中以…

C++,STL,【目錄篇】

文章目錄 一、簡介二、內容提綱第一部分&#xff1a;STL 概述第二部分&#xff1a;STL 容器第三部分&#xff1a;STL 迭代器第四部分&#xff1a;STL 算法第五部分&#xff1a;STL 函數對象第六部分&#xff1a;STL 高級主題第七部分&#xff1a;STL 實戰應用 三、寫作風格四、…

【Node.js】Koa2 整合接口文檔

部分學習來源&#xff1a;https://blog.csdn.net/qq_38734862/article/details/107715579 依賴 // koa2-swagger-ui UI視圖組件 swagger-jsdoc 識別寫的 /***/ 轉 json npm install koa2-swagger-ui swagger-jsdoc --save配置 config\swaggerConfig.js const Router requir…

Maven的單元測試

1. 單元測試的基本概念 單元測試&#xff08;Unit Testing&#xff09; 是一種軟件測試方法&#xff0c;專注于測試程序中的最小可測試單元——通常是單個類或方法。通過單元測試&#xff0c;可以確保每個模塊按預期工作&#xff0c;從而提高代碼的質量和可靠性。 2.安裝和配…

論文閱讀(八):結構方程模型用于研究數量遺傳學中的因果表型網絡

1.論文鏈接&#xff1a;Structural Equation Models for Studying Causal Phenotype Networks in Quantitative Genetics 摘要&#xff1a; 表型性狀可能在它們之間發揮因果作用。例如&#xff0c;農業物種的高產可能會增加某些疾病的易感性&#xff0c;相反&#xff0c;疾病的…

LeetCode | 不同路徑

一個機器人位于一個 m x n 網格的左上角 &#xff08;起始點在下圖中標記為 “Start” &#xff09;。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角&#xff08;在下圖中標記為 “Finish” &#xff09;。 問總共有多少條不同的路徑&#xff1f; 示例 1…

C++的類Class

文章目錄 一、C的struct和C的類的區別二、關于OOP三、舉例&#xff1a;一個商品類CGoods四、構造函數和析構函數1、定義一個順序棧2、用構造和析構代替s.init(5);和s.release();3、在不同內存區域構造對象4、深拷貝和淺拷貝5、構造函數和深拷貝的簡單應用6、構造函數的初始化列…

Excel 技巧21 - Excel中整理美化數據實例,Ctrl+T 超級表格(★★★)

本文講Excel中如何整理美化數據的實例&#xff0c;以及CtrlT 超級表格的常用功能。 目錄 1&#xff0c;Excel中整理美化數據 1-1&#xff0c;設置間隔行顏色 1-2&#xff0c;給總銷量列設置數據條 1-3&#xff0c;根據總銷量設置排序 1-4&#xff0c;加一個銷售趨勢列 2&…

Leetcode 131 分割回文串(純DFS)

131. 分割回文串https://leetcode.cn/problems/palindrome-partitioning/https://leetcode.cn/problems/palindrome-partitioning/ 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1&#xff1a…

電梯系統的UML文檔14

對于 HallButtonControl&#xff0c;我們有二個狀態: "門廳燈開 " 和 " 門廳燈關"。 從給出的初始信息&#xff0c;初始的狀態應該是"門廳燈關"。行為定義&#xff1a; " 當 HallCall[f&#xff0c;d]是真&#xff0c;則指令 HallLight[f&…

關于安卓greendao打包時報錯問題修復

背景 項目在使用greendao的時候&#xff0c;debug安裝沒有問題&#xff0c;一到打包簽名就報了。 環境 win10 jdk17 gradle8 項目依賴情況 博主的greendao是一個獨立的module項目&#xff0c;項目目前只適配了java&#xff0c;不支持Kotlin。然后被外部集成。greendao版本…

SQL server 數據庫使用整理

標題&#xff1a;SQL server 數據庫使用整理 1.字符串表名多次查詢 2.讀取SQL中Json字段中的值&#xff1a;JSON_VALUE&#xff08;最新版本支持&#xff0c;屬性名大小寫敏感&#xff09; 1.字符串表名多次查詢 SELECT ROW_NUMBER() OVER (ORDER BY value ASC) rowid,value…

一文講解Java中的BIO、NIO、AIO之間的區別

BIO、NIO、AIO是Java中常見的三種IO模型 BIO&#xff1a;采用阻塞式I/O模型&#xff0c;線程在執行I/O操作時被阻塞&#xff0c;無法處理其他任務&#xff0c;適用于連接數比較少的場景&#xff1b;NIO&#xff1a;采用非阻塞 I/O 模型&#xff0c;線程在等待 I/O 時可執行其…

分布式系統架構怎么搭建?

分布式系統架構 互聯網企業的業務飛速發展&#xff0c;促使系統架構不斷變化。總體來說&#xff0c;系統架構大致經歷了單體應用架構—垂直應用架構—分布式架構—SOA架構—微服務架構的演變&#xff0c;很多互聯網企業的系統架構已經向服務化網格&#xff08;Service Mesh&am…

Effective C++ 規則50:了解 new 和 delete 的合理替換時機

1、背景 在 C 中&#xff0c;new 和 delete 是動態分配內存的核心操作符。然而&#xff0c;直接使用它們有時會增加程序的復雜性&#xff0c;甚至導致內存泄漏和其他問題。因此&#xff0c;了解何時替換 new 和 delete 并選擇更適合的內存管理策略&#xff0c;是編寫高效、健壯…

Effective Python:(10)

Effective Python提供90條新穎的Python3編程技巧&#xff0c;可以讓我們寫程序更加靈活&#xff0c;代碼更加整潔而易于維護&#xff0c;這對于商業化系統代碼的重要性不言而喻。 前面兩條主要介紹切片的實用好玩的用法&#xff0c;這一條里反而建議不用切片&#xff0c;這是什…

高效學習方法分享

高效學習方法分享 引言 在信息高速發展的今天&#xff0c;學習已經成為每個人不可或缺的一部分。你是否曾感到學習的疲憊&#xff0c;信息的爆炸讓你無從下手&#xff1f;今天&#xff0c;我們將探討幾種高效的學習方法&#xff0c;幫助你從中找到適合自己的學習之道。關于學…

數據庫備份、主從、集群等配置

數據庫備份、主從、集群等配置 1 MySQL1.1 docker安裝MySQL1.2 主從復制1.2.1 主節點配置1.2.2 從節點配置1.2.3 創建用于主從同步的用戶1.2.4 開啟主從同步1.2.4 主從同步驗證 1.3 主從切換1.3.1 主節點設置只讀&#xff08;在192.168.1.151上操作&#xff09;1.3.2 檢查主從數…

代碼隨想錄_棧與隊列

棧與隊列 232.用棧實現隊列 232. 用棧實現隊列 使用棧實現隊列的下列操作&#xff1a; push(x) – 將一個元素放入隊列的尾部。 pop() – 從隊列首部移除元素。 peek() – 返回隊列首部的元素。 empty() – 返回隊列是否為空。 思路: 定義兩個棧: 入隊棧, 出隊棧, 控制出入…

AJAX綜合案例——圖書管理

黑馬程序員視頻地址&#xff1a; AJAX-Day02-10.案例_圖書管理AJAX-Day02-10.案例_圖書管理_總結_V1.0是黑馬程序員前端AJAX入門到實戰全套教程&#xff0c;包含學前端框架必會的&#xff08;ajaxnode.jswebpackgit&#xff09;&#xff0c;一套全覆蓋的第25集視頻&#xff0c…