C語言初嘗試——洛谷

一、C數組:

C 語言支持數組數據結構,它可以存儲一個固定大小的相同類型元素的順序集合。數組是用來存儲一系列數據,但它往往被認為是一系列相同類型的變量。

聲明數組

在 C 中要聲明一個數組,需要指定元素的類型和元素的數量,如下所示:

type arrayName [ arraySize ];

初始化數組

在 C 中,您可以逐個初始化數組,也可以使用一個初始化語句,如下所示:

double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

訪問數組元素

數組元素可以通過數組名稱加索引進行訪問。元素的索引是放在方括號內,跟在數組名稱的后邊。例如:

double salary = balance[9];

獲取數組長度

數組長度可以使用?sizeof?運算符來獲取數組的長度,例如:

int numbers[] = {1, 2, 3, 4, 5};
int length = sizeof(numbers) / sizeof(numbers[0]);

利用數組解決問題:

1.將數組逆序重存放:

#include <stdio.h>int main() {int n;int a[500];scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d", &a[i]);}for (int i = n; i >= 1; i--) {printf("%d ", a[i]);}return 0;
}

2.年齡與疾病:

#include <stdio.h>int main() {int a;scanf("%d", &a);int arr[100];float count18 = 0;float count35 = 0;float count60 = 0;float count61 = 0;for (int i = 0; i < a; i++) {scanf("%d", &arr[i]);int age = arr[i];for	(int i = 0; i < a; i++) {if ( age <= 18) {count18++;} else if ( age <= 35) {count35++;} else if (age <= 60) {count60++;} else {count61++;}}}printf("%.2f%%\n", count18 / a * 10 );printf("%.2f%%\n", count35 / a * 10 );printf("%.2f%%\n", count60 / a * 10 );printf("%.2f%%\n", count61 / a * 10 );}

3.向量點積計算:

#include <stdio.h>
int main() {int a;scanf("%d", &a);int arr[1000];int brr[1000];for (int i = 0; i < a; i++) {scanf("%d", &arr[i]);}for (int i = 0; i < a; i++) {scanf("%d", &brr[i]);}int num = 0;for (int i = 0; i < a; i++) {num += arr[i] * brr[i];}printf("%d\n", num);}

4.開關燈:

錯誤提交代碼:

#include <stdio.h>int main() {int N;scanf("%d", &N);int arr[5000];for (int i = 1; i * i <= N; i++) {printf("%d", i * i);}
}

錯誤原因:

僅尋找表層規律,認為只需要輸出樣例范圍內給出的平方數,不可能適用于所有條件,遺憾僅得10分。

改正代碼:

#include <stdio.h>
#include <stdbool.h>int main() {int N;scanf("%d", &N);// 初始化燈的狀態:true表示開,false表示關,初始全部為開bool light[N];for (int i = 1; i <= N; ++i) {light[i] = true;}for (int k = 1; k <= N; ++k) {for (int i = k; i <= N; i += k) {light[i] = !light[i];}}bool isFirst = true;for (int i = 1; i <= N; ++i) {if (!light[i]) {if (isFirst) {printf("%d", i);isFirst = false;} else {printf(" %d", i);}}}return 0;
}

二、字符串:

C?字符串

在 C 語言中,字符串實際上是使用空字符?\0?結尾的一維字符數組。因此,\0?是用于標記字符串的結束。

空字符(Null character)又稱結束符,縮寫?NUL,是一個數值為?0?的控制字符,\0?是轉義字符,意思是告訴編譯器,這不是字符?0,而是空字符。

下面的聲明和初始化創建了一個?RUNOOB?字符串。由于在數組的末尾存儲了空字符?\0,所以字符數組的大小比單詞?RUNOOB?的字符數多一個。

char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};

依據數組初始化規則,您可以把上面的語句寫成以下語句:

char site[] = "RUNOOB";

C 中有大量操作字符串的函數:

序號函數 & 目的
1strcpy(s1, s2);
復制字符串 s2 到字符串 s1。
2strcat(s1, s2);
連接字符串 s2 到字符串 s1 的末尾。
3strlen(s1);
返回字符串 s1 的長度。
4strcmp(s1, s2);
如果 s1 和 s2 是相同的,則返回 0;如果 s1<s2 則返回小于 0;如果 s1>s2 則返回大于 0。
5strchr(s1, ch);
返回一個指針,指向字符串 s1 中字符 ch 的第一次出現的位置。
6strstr(s1, s2);
返回一個指針,指向字符串 s1 中字符串 s2 的第一次出現的位置。

下面的實例使用了上述的一些函數:

實例

#include <stdio.h>
#include <string.h>int main ()
{char str1[14] = "runoob";char str2[14] = "google";char str3[14];int  len ;/* 復制 str1 到 str3 */strcpy(str3, str1);printf("strcpy( str3, str1) :  %s\n", str3 );/* 連接 str1 和 str2 */strcat( str1, str2);printf("strcat( str1, str2):   %s\n", str1 );/* 連接后,str1 的總長度 */len = strlen(str1);printf("strlen(str1) :  %d\n", len );return 0;
}

當上面的代碼被編譯和執行時,它會產生下列結果:

strcpy( str3, str1) :  runoob
strcat( str1, str2):   runoobgoogle
strlen(str1) :  12

利用字符串解決問題:

1.統計數字字符個數:

#include <stdio.h>
#include <string.h>int main() {char arr[500];scanf("%[^\n]", &arr);int len = strlen(arr);int count = 0;for (int i = 0; i < len; i++) {char c = arr[i];if (c >= '0' && c <= '9') {count++;}}printf("%d", count);return 0;
}

2.輸出親朋字符串:

#include <stdio.h>
#include <cstring>int main() {char s[1000];scanf("%s", s);int len = strlen(s);for (int i = 0; i < len; i++) {char c = s[i];// 獲取當前索引i對應的字符char n;// 定義變量n,用于存儲下一個字符// 判斷當前字符是否是字符串的最后一個字符if (i == len - 1) {n = s[0];// 如果是最后一個字符,下一個字符取第一個字符} else {n = s[i + 1];//否則下一個字符取當前字符的后一位字符}printf("%c", c + n);// 輸出當前字符c與下一個字符n的ASCII值相加后得到的新字符}return 0;
}

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

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

相關文章

C++八大排序

C排序算法一、概覽二、代碼實現1.冒泡排序2.插入排序3.希爾排序4.堆排序5.選擇排序6.快速排序7.歸并排序三、排序時間、空間復雜度總結排序&#xff0c;是C各大算法當中非常常見的一個步驟&#xff08;過程&#xff09;&#xff0c;通常我們使用便捷的algorithmalgorithmalgori…

每天五分鐘深度學習:深層神經網絡的優勢

本文重點 在人工智能領域,深層神經網絡(DNN)的崛起標志著技術范式的根本性轉變。相較于傳統淺層神經網絡(如單層感知機、線性回歸模型),深層網絡通過引入多層隱藏層,實現了對復雜數據模式的深度解析與高效建模。 深層神經網絡 神經網絡中輸入層表示神經網絡的第0層,…

相機幾何 空間點到像素平面轉換

一個空間中點到像素平面轉換&#xff0c;需要經過1. 空間坐標系轉換到相機坐標系2. 相機坐標系下3D點到相機平面轉換3. 相機平面到像素平面轉換相機三維空間到像素平面轉換1. 3D點到相機平面轉換2. 相機平面到像素平面轉換涉及到單位的轉換&#xff0c;和像素原點到相機平面原點…

webpack5 vue3同一倉庫,不同命令切換項目

技術方案&#xff1a;手動輸入不同的命令&#xff0c;啟動不同項目。實現這種能力本篇文章是通過不同路由劃分&#xff0c;進而實現不同項目的劃分。所以簡單來說就是通過輸入不同命令行在webpack中找到不同項目的路由&#xff0c;進而打不同項目的包&#xff0c;實現項目隔離。…

PowerBI實戰-制作帶有同比及趨勢線的雙柱狀圖

一、引言 今天的PowerBI報表的制作相對有一點復雜&#xff0c;我們直接根據最終展示圖來講解&#xff1a; 可以看到&#xff0c;我們今天要制作的圖像需要包括以下幾點&#xff1a;時間維度的趨勢、兩種不同維度的數據對比、不同數據標簽的展示、不同年份間環比的標簽展示以及…

物聯網智能網關配置教程:實現注塑機數據經基恩士PLC上傳至云平臺

一、項目背景隨著制造業向智能化、信息化方向快速發展&#xff0c;注塑車間作為塑料制品制造的核心環節&#xff0c;面臨著設備協議多樣、數據孤島嚴重、系統集成困難等問題。某大型注塑企業計劃對其老舊車間進行數字化改造&#xff0c;實現設備數據采集、遠程監控與MES系統對接…

【實戰】預警算法--噪聲添加機制

1. 背景 在多變量自聯想預測或異常檢測場景中&#xff0c;我們常使用帶噪自編碼器&#xff08;Denoising AutoEncoder&#xff0c;DAE&#xff09;來訓練模型&#xff0c;使模型能夠從帶噪輸入中重構原始數據。噪聲的添加方式對訓練效果、穩定性以及模型用途有顯著影響。 2. 兩…

ChromaDB探索

關于 ChromaDB、向量與 RAG 系統的核心知識問答總結 ??Q1: ChromaDB 是什么&#xff1f;它在數據庫領域中扮演什么角色&#xff1f;????A:?? ChromaDB 是一款開源的??向量數據庫??。它的核心角色是專門為 AI 應用&#xff08;如語義搜索、推薦系統、RAG&#xff09…

C# 基于halcon的視覺工作流-章33-矩狀測量

C# 基于halcon的視覺工作流-章33-矩狀測量 本章目標&#xff1a; 一、gen_measure_rectangle2準備提取垂直于矩形的直邊&#xff1b; 二、measure_pos 提取垂直于矩形或環形弧的直線邊緣&#xff1b; 三、measure_pairs提取垂直于矩形或環形弧長軸的直邊對&#xff1b; 四、匹配…

Day05_蒼穹外賣——Redis店鋪營業狀態設置

目錄1.1 Redis簡介1.2 Redis下載與安裝1.2.1 Redis下載1.2.2 Redis安裝1.3 Redis服務啟動與停止1.3.1 服務啟動命令1.3.2 客戶端連接命令1.3.3 修改Redis配置文件1.3.4 Redis客戶端圖形工具2. Redis數據類型2.1 五種常用數據類型介紹2.2 各種數據類型特點3. Redis常用命令3.1 字…

雙指針:字符串

題目&#xff1a;字符串 題目概述&#xff1a;找包含所有小寫字母的最短字符串。 重點思路&#xff1a; right是 < len-1字符 - ‘26’轉換成整形再判斷&#xff08;寫字符a也可以&#xff0c;更準確&#xff09;。 #include <iostream> #include <algorithm>…

HarmonyOS 應用開發深度實踐:精通 Stage 模型與 UIAbility 生命周期

好的&#xff0c;請看這篇關于 HarmonyOS Stage 模型與 UIAbility 深度實踐的技術文章。 HarmonyOS 應用開發深度實踐&#xff1a;精通 Stage 模型與 UIAbility 生命周期 引言 隨著 HarmonyOS 4、5 的廣泛部署和 HarmonyOS NEXT (API 12) 的發布&#xff0c;華為的分布式操作系…

DEDECMS 小程序插件簡介 2.0全新上線

網上有很多的dedecms的小程序插件&#xff0c;但是有的依賴他們第三方、有的需要一定php或sql基礎、有的插件免費但是小程序源碼價格昂貴&#xff0c;這也是促使我開發dedecms小程序插件的一大原因。2025年9月4日 dedecms小程序插件2.0版本正式上線&#xff0c;由于使用人數減少…

Flink 1.17.2 集群安裝部署

Flink集群的安裝 1. 集群規劃 Ip host Server Note 192.168.10.101 node01 jobManager、TaskManagerRunner 老大和小弟服務 192.168.10.102 node02 TaskManagerRunner 小弟 192.168.10.103 node03 TaskManagerRunner 小弟 注意&#xff1a;本次使用jdk-1.8.0…

[vue.js] 樹形結點多選框選擇

vue.js前端代碼&#xff1a; <template><div><el-tree:data"treeData"node-key"id"show-checkboxref"tree"check-change"handleCheckChange"/><el-button click"getSelectedNodes">獲取選中的節點&…

Web 服務器基本工作流程

這是一個關于 ??Web 服務器基本工作流程?? 的全面解釋。我們以最經典的 ??客戶端-服務器-后端?? 三層架構為例&#xff0c;并結合你之前遇到的 Nginx 場景進行說明。??核心角色????客戶端 (Client)??&#xff1a; 通常是 ??Web 瀏覽器?? (Chrome, Firefox)…

IDEA 連接MySQL數據庫

一、 連接數據庫1、打開連接2、建立連接3、輸入用戶名和密碼二、操作數據庫1、選擇數據庫2、New| Query Console 查詢控制臺3、寫查詢語句4、New| SQL Script| sql Generator 生成這個數據庫表的SQL結構New | SQL Script | Generate DDL to Query Console 在查詢控制臺生成…

江協科技STM32課程筆記(二)—外部中斷EXTI

二、外部中斷EXTI中斷&#xff1a;在主程序運行過程中&#xff0c;出現了特定的中斷觸發條件&#xff08;中斷源&#xff09;&#xff0c;使得CPU暫停當前正在運行的程序&#xff0c;轉而去處理中斷程序&#xff0c;處理完成后又返回原來被暫停的位置繼續運行。1、stm32中斷簡介…

Java常見排序算法實現

以下是Java中幾種常見排序算法的實現&#xff0c;包括冒泡排序、選擇排序、插入排序、快速排序和歸并排序。 各排序算法特點說明&#xff1a;冒泡排序&#xff1a; 原理&#xff1a;重復比較相鄰元素&#xff0c;將大的元素逐步"冒泡"到數組末尾特點&#xff1a;穩定…

Python爬蟲實戰:研究Pandas,構建地理信息數據采集和分析系統

1. 引言 1.1 研究背景 地理數據作為描述地球表面空間要素的數據,包含了豐富的空間位置、分布特征和屬性信息,在城市規劃、環境監測、商業分析等眾多領域發揮著不可替代的作用。隨著 "數字地球"、"智慧城市" 等概念的提出和發展,地理數據的重要性日益凸…