字符串數據類型的基本運算

任務描述
本關任務:從后臺輸入任意三個字符串,求最大的字符串。

相關知識
字符串本身是存放在一塊連續的內存空間中,并以’\0’作為字符串的結束標記。

字符指針變量本身是一個變量,用于存放字符串的第 1 個字符的地址。

字符數組是由若干個數組元素組成的,它可用來存放字符串的所有字符。

字符串類型的數據不能像數值型數據一樣進行加減乘除等運算。常見的字符串類型數據的運算有求字符串的長度、字符串的復制、比較兩個字符串的大小、字符串的連接等。

字符串的運算比數值型數據的運算復雜,為減輕編程的負擔,提高效率,C 語言提供了豐富的字符串處理函數來實現字符串的運算,對字符串進行整體操作。

使用字符串處理函數應包含頭文件"string.h",幾種常見運算有:

求字符串長度函數:strlen( )
字符串拷貝函數:strcpy( )
字符串連接函數:strcat( )
字符串比較函數:strcmp( )
求一個字符串的長度
字符串的長度是字符串中所包含的字符個數。例如:"CHINA"的長度是 5,"C program"的長度是 9。

#include<stdio.h>
#include<string.h>
int main()
{
char str[20];
printf(“input string:\n”);
gets(str);
printf(“output string:\n”);
puts(str);
printf(“數組大小=%d\n”,sizeof(str));
printf(“字符串長度=%d\n”,strlen(str));
return 0;
}
運行結果:

input string:
Hubei Huangshi
output string:
Hubei Huangshi
數組大小=20
字符串長度=14

注意區分字符數組的長度和字符串的長度,長度為20的字符數組可以存放長度小于等于19的字符串。

字符串的拷貝
對字符數組只能在定義的同時初始化,不能先定義字符數組,再使用賦值語句為一個字符數組賦值。

char s[15];
s = “C Program”; //編譯錯誤
要將字符串"C Program"存入到數組s中,可以通過調用字符串拷貝函數strcpy()函數來實現。請看示例,從鍵盤輸入兩個字符串,交換后輸出這兩個字符串的值。

#include<stdio.h>
#include<string.h>
int main()
{
char st1[15],st2[15],t[15];
printf(“Please input 2 string:\n”);
gets(st1);
gets(st2);
strcpy(t, st1); //把字符數組st1中的字符串拷貝到t中,串結束標志’\0’也一同拷貝
strcpy(st1,st2); //把字符數組st2中的字符串拷貝到st1
strcpy(st2,t); //把字符數組t中的字符串拷貝到st2
printf(“Now string is:\n”);
puts(st1);
puts(st2);
return 0;
}
運行結果:

Please input 2 string:
Hubei Huangshi
Hubei Wuhan
Now string is:
Hubei Wuhan
Hubei Huangshi

字符串的連接
字符串這種類型的數據經常需要將兩個字符串連接起來,把一個字符串接到另一個字符串的后面,得到一個新字符串。例如:將"Hubei"和"Huangshi"連接,可以得到"HubeiHuangshi"這個新字符串。

請看示例,從鍵盤輸入自己的籍貫和名字,試將它們連接在一起成為一個字符串。

#include<stdio.h>
#include<string.h>
int main( )
{
char str1[30],str2[10];
printf(“Please input 2 string:\n”);
gets(str1);
gets(str2);
strcat(str1,str2);// 把str2中的字符串連接到str1中字符串的后面,新串最后加’\0’
printf(“%s\n”,str1);
return 0;
}
運行結果:
Please input 2 string:
Hubei Huangshi
Zhang San
Hubei HuangshiZhang San

說明:str1必須足夠大,否則不能全部裝入被連接的字符串。

比較兩個字符串的大小
字符串在計算機中是可以比較大小的,字符串比較的規則:就是將兩個字符串自左至右逐個比較對應位置上字符的ASCII碼值,直到出現不同的字符或者達到某個字符串的結尾為止,若全部字符相同,則認為兩個字符串相等;若出現不相同的字符,則以第一對不相同的字符的比較結果為準。

例如: "AC"與"B"比較,因為A的ASCII碼值比B小,那么后面的字符就不再比較了 ,字符串"AC"比字符串"B"小;"computer"與"Computer"比較,因為小寫c的ASCII碼值比大寫C大,所以"computer "比"Computer " 大。

庫函數strcmp(字符串1,字符串2)的功能:按從左向右順序逐個比較兩串字符的ASCII碼,直到遇到不同字符或’\0’為止,函數返回值為int型整數,規則如下:

若字符串1==字符串2,返回零;
若字符串1>字符串2,返回正整數;
若字符串1<字符串2,返回負整數。
注意:對兩個字符串比較,不能用以下形式:

if( str1==str2) printf(“yes”);
而只能用以下語句:

if( strcmp(str1, str2) == 0) printf(“yes”);
編程要求
根據提示,在右側編輯器 Begin-End 區間補充代碼,從后臺獲取任意三個字符串,輸出最大的字符串。

提示:“從鍵盤輸入三個字符串,求最大的字符串”與“從鍵盤輸入三個整數,求最大的整數”兩者算法思想是一致的,只是處理的數據對象不是整數,而是字符串。

測試說明
平臺會對你編寫的代碼進行測試。

測試輸入:
Huangshi
Xiangyang
Wuhan
預期輸出:
Xiangyang

開始你的任務吧,祝你成功!

#include<stdio.h>
#include<string.h>
int main()
{ char st1[15],st2[15],st3[15],max[15];/*****輸入3個字符串*****//********** Begin **********/gets(st1);gets(st2);gets(st3);/********** End **********//*****求3個字符串中的最大字符串*****//********** Begin **********/strcpy(max,st1);if(strcmp(max,st2)<0)strcpy(max,st2);if(strcmp(max,st3)<0)strcpy(max,st3);puts(max);/********** End **********/return 0;
}

非常簡單。

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

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

相關文章

Ubuntu 22.04 一鍵部署openManus

openManus 前言 OpenManus-RL,這是一個專注于基于強化學習(RL,例如 GRPO)的方法來優化大語言模型(LLM)智能體的開源項目,由來自UIUC 和 OpenManus 的研究人員合作開發。 前提要求 安裝deepseek docker方式安裝 ,windows 方式安裝,Linux安裝方式

PDF 轉圖片,一行代碼搞定!批量支持已上線!

大家好&#xff0c;我是程序員晚楓。今天我要給大家帶來一個超實用的功能——popdf 現在支持 PDF 轉圖片了&#xff0c;而且還能批量操作&#xff01;是不是很激動&#xff1f;別急&#xff0c;我來手把手教你玩轉這個功能。 1. 一行代碼搞定單文件轉換 popdf 的核心就是簡單暴…

《比特城的機密郵件:加密、簽名與防篡改的守護之戰》

點擊下面圖片帶您領略全新的嵌入式學習路線 &#x1f525;爆款熱榜 88萬閱讀 1.6萬收藏 第一章&#xff1a;風暴前的密令 比特城的議會大廳內&#xff0c;首席長老艾德文握著一卷足有半人高的羊皮紙&#xff0c;眉頭緊鎖。紙上是即將頒布的《新紀元法典》——這份文件不僅內…

8.用戶管理專欄主頁面開發

用戶管理專欄主頁面開發 寫在前面用戶權限控制用戶列表接口設計主頁面開發前端account/Index.vuelangs/zh.jsstore.js 后端Paginator概述基本用法代碼示例屬性與方法 urls.pyviews.py 運行效果 總結 歡迎加入Gerapy二次開發教程專欄&#xff01; 本專欄專為新手開發者精心策劃了…

http://noi.openjudge.cn/_2.5基本算法之搜索_1804:小游戲

文章目錄 題目深搜代碼寬搜代碼深搜數據演示圖總結 題目 1804:小游戲 總時間限制: 1000ms 內存限制: 65536kB 描述 一天早上&#xff0c;你起床的時候想&#xff1a;“我編程序這么牛&#xff0c;為什么不能靠這個賺點小錢呢&#xff1f;”因此你決定編寫一個小游戲。 游戲在一…

發生梯度消失, 梯度爆炸問題的原因,怎么解決?

目錄 一、梯度消失的原因 二、梯度爆炸的原因 三、共同的結構性原因 四、解決辦法 五、補充知識 一、梯度消失的原因 梯度消失指的是在反向傳播過程中&#xff0c;梯度隨著層數的增加指數級減小&#xff08;趨近于0&#xff09;&#xff0c;導致淺層網絡的權重幾乎無法更新…

【USRP】srsRAN 開源 4G 軟件無線電套件

srsRAN 是SRS開發的開源 4G 軟件無線電套件。 srsRAN套件包括&#xff1a; srsUE - 具有原型 5G 功能的全棧 SDR 4G UE 應用程序srsENB - 全棧 SDR 4G eNodeB 應用程序srsEPC——具有 MME、HSS 和 S/P-GW 的輕量級 4G 核心網絡實現 安裝系統 Ubuntu 20.04 USRP B210 sudo …

ChatGPT 4:解鎖AI文案、繪畫與視頻創作新紀元

文章目錄 一、ChatGPT 4的技術革新二、AI文案創作&#xff1a;精準生成與個性化定制三、AI繪畫藝術&#xff1a;從文字到圖像的神奇轉化四、AI視頻制作&#xff1a;自動化剪輯與創意實現五、知識庫與ChatGPT 4的深度融合六、全新的變革和機遇《ChatGPT 4 應用詳解&#xff1a;A…

在js中數組相關用法講解

數組 uniqueArray 簡單數組去重 /*** 簡單數組去重* param arr* returns*/ export const uniqueArray <T>(arr: T[]) > [...new Set(arr)];const arr1 [1,1,1,1 2, 3];uniqueArray(arr); // [1,2,3]uniqueArrayByKey 根據 key 數組去重 /*** 根據key數組去重* …

RT-Thread ulog 日志組件深度分析

一、ulog 組件核心功能解析 輕量化與實時性 ? 資源占用&#xff1a;ulog 核心代碼僅需 ROM<1KB&#xff0c;RAM<0.2KB&#xff0c;支持在資源受限的MCU&#xff08;如STM32F103&#xff09;中運行。 ? 異步/同步模式&#xff1a;默認采用異步環形緩沖區&#xff08;rt_…

T113s3遠程部署Qt應用(dropbear)

T113-S3 是一款先進的應用處理器&#xff0c;專為汽車和工業控制市場而設計。 它集成了雙核CortexTM-A7 CPU和單核HiFi4 DSP&#xff0c;提供高效的計算能力。 T113-S3 支持 H.265、H.264、MPEG-1/2/4、JPEG、VC1 等全格式解碼。 獨立的硬件編碼器可以編碼為 JPEG 或 MJPEG。 集…

12.青龍面板自動化我的生活

安裝 docker方式 docker run -dit \ -v /root/ql:/ql/data \ -p 5700:5700 \ -e ENABLE_HANGUPtrue \ -e ENABLE_WEB_PANELtrue \ --name qinglong \ --hostname qinglong \ --restart always \ whyour/qinglongk8s方式 https://truecharts.org/charts/stable/qinglong/ he…

Maven 遠程倉庫推送方法

步驟 1&#xff1a;配置 pom.xml 中的遠程倉庫地址 在項目的 pom.xml 文件中添加 distributionManagement 配置&#xff0c;指定遠程倉庫的 URL。 xml 復制 <project>...<distributionManagement><!-- 快照版本倉庫 --><snapshotRepository><id…

Spring Boot 日志 配置 SLF4J 和 Logback

文章目錄 一、前言二、案例一&#xff1a;初識日志三、案例二&#xff1a;使用Lombok輸出日志四、案例三&#xff1a;配置Logback 一、前言 在開發 Java 應用時&#xff0c;日志記錄是不可或缺的一部分。日志可以記錄應用的運行狀態、錯誤信息和調試信息&#xff0c;幫助開發者…

JS API 事件監聽

焦點事件案例&#xff1a;搜索框激活下拉菜單 事件對象 事件對象存儲事件觸發時的相關信息 可以判斷用戶按鍵&#xff0c;點擊元素等內容 如何獲取 事件綁定的回調函數中的第一個形參就是事件對象 一般命名為e,event 事件對象常用屬性 type類型 click mouseenter client…

DDD與MVC擴展能力對比

一、架構設計理念的差異二、擴展性差異的具體表現三、DDD擴展性優勢的深層原因四、MVC擴展性不足的典型場景五、總結&#xff1a;架構的本質與選擇六、例子1&#xff09;場景描述2&#xff09;MVC實現示例&#xff08;三層架構&#xff09;3&#xff09;DDD實現示例&#xff08…

針對 SQL 查詢中 IN 子句性能優化 以及 等值 JOIN 和不等值 JOIN 對比 的詳細解決方案、代碼示例及表格總結

以下是針對 SQL 查詢中 IN 子句性能優化 以及 等值 JOIN 和不等值 JOIN 對比 的詳細解決方案、代碼示例及表格總結&#xff1a; 問題 1&#xff1a;IN 的候選值過多&#xff08;如超過 1000 個&#xff09; 問題描述 當 IN 列表中的值過多時&#xff0c;SQL 會逐個比較每個值…

手部穴位檢測技術:基于OpenCV和MediaPipe的實現

手部穴位檢測是醫學和健康管理領域的重要技術之一。通過準確識別手部的關鍵穴位,可以為中醫診斷、康復治療以及健康監測提供支持。本文將介紹一種基于OpenCV和MediaPipe的手部穴位檢測方法,展示如何利用計算機視覺技術實現手部關鍵點的檢測,并進一步標注手部的穴位位置。 技…

Day20 -自動化信息收集工具--ARL燈塔的部署

準備&#xff1a; 純凈的Docker環境 ARL的包 一、Docker的部署 00x1 更新系統包 sudo apt update 00x2 安裝必要的依賴包 sudo apt install -y apt-transport-https ca-certificates curl software-properties-common 00x3 下載docker和docker-compose apt-get install do…

sqlalchemy查詢json

第一種&#xff1a;字段op是json格式&#xff1a; {"uid": "cxb123456789","role": 2,"op_start_time": 1743513707504,"op_end_time": 1743513707504,"op_start_id": "op_001","op_end_id"…