c語言練習題【數據類型、遞歸、雙向鏈表快速排序】

練習1:數據類型

請寫出以下幾個數據的數據類型

整數 a
a 的地址
存放a的數組 b
存放a的地址的數組
b的地址
c的地址
指向 printf 函數的指針 d
存放 d的數組

  1. 整數 a 的類型
    數據類型是 int

  2. a 的地址
    數據類型是 int*(指向 int 類型的指針)

  3. 存放 a 的數組 b
    數據類型是 int[](整型數組)

  4. 存放 a 的地址的數組 c
    數據類型是 int*[](指針數組,每個元素是指向 int 的指針)
    c的數據類型是指針數組類型,可以表示為:int * c[ ]?= {&a};

  5. b 的地址
    指向整型數組的指針
    b的數據類型是 int(*)[](數組指針),b 的地址可以表示為: b, &b, &b[0]

  6. c 的地址
    數據類型是 int*(*)[](指向指針數組的指針)

  7. 指向 printf 函數的指針 d
    printf 函數的類型是 int(*)(const char*, ...)d 的數據類型是 int(*)(const char*, ...)

  8. 存放 d 的數組
    數據類型是 int(*[])(const char*, ...)(函數指針數組,每個元素是指向 printf 函數的指針)。

    #include <stdio.h>int main() {// 打印 "Hello, World!" 到控制臺printf("Hello, World!\n");// 定義一個整型變量 a,并初始化為 10int a = 10;// 打印變量 a 的地址printf("a的地址是:%p\n", &a);// 定義一個整型數組 b,并將 a 的值存入數組中int b[] = {a};// 定義一個整型指針 c,并將 a 的地址賦值給它int * c[] = {&a};// 下面的注釋是對 b 和 c 的說明// b, &b, &b[0]; // b 是數組名,&b 是數組的地址,&b[0] 是數組第一個元素的地址// c, &c, &c[0]; // c 是指針,&c 是指針的地址,&c[0] 是指針指向的第一個元素的地址// 定義一個指向 printf 函數的指針 funcs_dint (*funcs_d)(const char*, ...) = printf; // 指向printf函數的指針// 定義一個數組 d,存放指向 printf 函數的指針int (*d[])(const char*, ...) = {printf}; // 存放指向printf函數的指針的數組return 0; // 返回 0,表示程序正常結束
    }

?練習2:遞歸

請用遞歸實現計算:1+1/3-1/5+1/7-1/9+…. 1/n 的值,n通過鍵盤輸入

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;double  rec_add(int n)
{double sum=0;if (n==1){return 1;}else{double sum=1.0/n;if ((n/2)%2==0){return sum+rec_add(n-2);}else{return -sum+rec_add(n-2);	}}return sum;
}int main(int argc, const char *argv[])
{int n=0;printf("輸入n(奇數):");scanf("%d",&n);if (n<=0 ||n%2==0){printf("重新輸入一個正奇數\n");return 1;}double  result=rec_add(n);printf("result=%f\n",result);return 0;
}

練習3:寫一個雙向鏈表的快速排序函數

#include <stdio.h>
#include <stdlib.h>// 雙向鏈表節點結構體
typedef struct Node {int data;struct Node *prev;struct Node *next;
} Node;// 創建新的節點
Node* create_node(int data) {Node *new_node = (Node*)malloc(sizeof(Node));new_node->data = data;new_node->prev = new_node->next = NULL;return new_node;
}// 在鏈表尾部插入節點
void append(Node **head, int data) {Node *new_node = create_node(data);if (*head == NULL) {*head = new_node;} else {Node *temp = *head;while (temp->next != NULL) {temp = temp->next;}temp->next = new_node;new_node->prev = temp;}
}// 打印鏈表
void print_list(Node *head) {Node *temp = head;while (temp != NULL) {printf("%d ", temp->data);temp = temp->next;}printf("\n");
}// 切分鏈表并返回基準節點
Node* partition(Node *low, Node *high) {int pivot = high->data;Node *i = low->prev;Node *j = low;while (j != high) {if (j->data <= pivot) {i = (i == NULL) ? low : i->next;int temp = i->data;i->data = j->data;j->data = temp;}j = j->next;}i = (i == NULL) ? low : i->next;int temp = i->data;i->data = high->data;high->data = temp;return i;
}// 快速排序遞歸函數
void quick_sort(Node *low, Node *high) {if (low != NULL && high != NULL && low != high && low != high->next) {Node *p = partition(low, high);quick_sort(low, p->prev);quick_sort(p->next, high);}
}// 獲取鏈表的最后一個節點
Node* get_tail(Node *head) {while (head != NULL && head->next != NULL) {head = head->next;}return head;
}int main() {Node *head = NULL;// 插入一些數據到鏈表append(&head, 5);append(&head, 3);append(&head, 8);append(&head, 4);append(&head, 1);append(&head, 7);printf("Original list: ");print_list(head);Node *tail = get_tail(head);// 執行快速排序quick_sort(head, tail);printf("Sorted list: ");print_list(head);return 0;
}

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

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

相關文章

聯想拯救者Y9000P IRX8 2023 (82WK) 原廠Win11 家庭中文版系統 帶一鍵還原功能 安裝教程

安裝完重建winre一鍵還原功能&#xff0c;和電腦出廠時的系統狀態一模一樣。自動機型專用軟件&#xff0c;全部驅動&#xff0c;主題壁紙&#xff0c;自動激活&#xff0c;oem信息等。將電腦系統完全恢復到出廠時狀態。 支持機型 (MTM) : 82WK 系統版本&#xff1a;Windows 1…

搜索與圖論復習2最短路

單源最短路---所有邊權是正數(Dijkstra算法O(n^2)--稠密圖(鄰接矩陣)和堆優化的Dijkstra算法O(mlogn)--稀疏圖(鄰接表)) 或存在負邊權(Bellman-ford貝爾曼福特算法O(nm)和SPFA一般O(m) 最壞O(nm) ) 多源最短路---Floyd算法O(n^3) 一、迪杰斯特拉算法(Dijkstra)&#xff1a;1…

Unity GetLocalizedString()失效問題

問題&#xff1a; 在一個自定義類中調用GetLocalizedString()的方法&#xff0c;是無效的&#xff08;創建這個自定義類的腳本沒掛載到場景中&#xff09;。 解決方法: 將自定義類的GetLocalizedString()方法換個地方&#xff0c;換到在場景中掛載的一個腳本實例&#xff08;…

【建站】專欄目錄

建站專欄的想法有很多&#xff0c;想寫窮鬼如何快速低成本部署前后端項目讓用戶能訪問到&#xff0c;如何將網站收錄到百度&#xff0c;bing&#xff0c;google并優化seo讓搜索引擎搜索到網站&#xff0c;想寫如何把網站加入google廣告或者接入stripe信用卡首款平臺收款&#x…

深入解析“legit”的地道用法——從俚語到正式表達:Sam Altman用來形容DeepSeek: legit invigorating(真的令人振奮)

深入解析“legit”的地道用法——從俚語到正式表達 一、引言 在社交媒體、科技圈甚至日常對話中&#xff0c;我們經常會看到或聽到“legit”這個詞。比如最近 Sam Altman 在 X&#xff08;原 Twitter&#xff09;上發的一條帖子中寫道&#xff1a; we will obviously deliver …

Vue 圖片引用方式詳解:靜態資源與動態路徑訪問

目錄 前言1. 引用 public/ 目錄2. assets/ 目錄3. 遠程服務器4. Vue Router 動態訪問5. 總結6. 擴展&#xff08;圖片不顯示&#xff09; 前言 &#x1f91f; 找工作&#xff0c;來萬碼優才&#xff1a;&#x1f449; #小程序://萬碼優才/r6rqmzDaXpYkJZF 在 Vue 開發中&#x…

DeepSeek-R1 本地部署教程(超簡版)

文章目錄 一、DeepSeek相關網站二、DeepSeek-R1硬件要求三、本地部署DeepSeek-R11. 安裝Ollama1.1 Windows1.2 Linux1.3 macOS 2. 下載和運行DeepSeek模型3. 列出本地已下載的模型 四、Ollama命令大全五、常見問題解決附&#xff1a;DeepSeek模型資源 一、DeepSeek相關網站 官…

JVM運行時數據區域-附面試題

Java虛擬機在執行Java程序的過程中會把它所管理的內存劃分為若干個不同的數據區域。這些區域 有各自的用途&#xff0c;以及創建和銷毀的時間&#xff0c;有的區域隨著虛擬機進程的啟動而一直存在&#xff0c;有些區域則是 依賴用戶線程的啟動和結束而建立和銷毀。 1. 程序計…

什么是LPU?會打破全球算力市場格局嗎?

在生成式AI向垂直領域縱深發展的關鍵節點&#xff0c;一場靜默的芯片革命正在改寫算力規則。Groq研發的LPU&#xff08;Language Processing Unit&#xff09;憑借其顛覆性架構&#xff0c;不僅突破了傳統GPU的性能天花板&#xff0c;更通過與DeepSeek等國產大模型的深度協同&a…

如何構建ObjC語言編譯環境?構建無比簡潔的clang編譯ObjC環境?Windows搭建Swift語言編譯環境?

如何構建ObjC語言編譯環境? 除了在線ObjC編譯器&#xff0c;本地環境Windows/Mac/Linux均可以搭建ObjC編譯環境。 Mac自然不用多說&#xff0c;ObjC是親兒子。(WSL Ubuntu 22.04) Ubuntu可以安裝gobjc/gnustep和gnustep-devel構建編譯環境。 sudo apt-get install gobjc gnus…

2月3日星期一今日早報簡報微語報早讀

2月3日星期一&#xff0c;農歷正月初六&#xff0c;早報#微語早讀。 1、多個景區發布公告&#xff1a;售票數量已達上限&#xff0c;請游客合理安排行程&#xff1b; 2、2025春節檔總票房破70億&#xff0c;《哪吒之魔童鬧海》破31億&#xff1b; 3、美宣布對中國商品加征10…

DeepSeek 原理解析:與主流大模型的差異及低算力優勢

在人工智能大模型蓬勃發展的浪潮中&#xff0c;DeepSeek 以其獨特的技術路線和出色的性能表現脫穎而出。與主流大模型相比&#xff0c;DeepSeek 不僅在技術原理上有著顯著的差異&#xff0c;還展現出了在較低算力下達到 OpenAI API 水平的卓越能力。本文將深入剖析這些獨特之處…

C++ Primer 標準庫vector

歡迎閱讀我的 【CPrimer】專欄 專欄簡介&#xff1a;本專欄主要面向C初學者&#xff0c;解釋C的一些基本概念和基礎語言特性&#xff0c;涉及C標準庫的用法&#xff0c;面向對象特性&#xff0c;泛型特性高級用法。通過使用標準庫中定義的抽象設施&#xff0c;使你更加適應高級…

【Numpy核心編程攻略:Python數據處理、分析詳解與科學計算】2.6 廣播機制核心算法:維度擴展的數學建模

2.6 廣播機制核心算法&#xff1a;維度擴展的數學建模 目錄/提綱 #mermaid-svg-IfELXmhcsdH1tW69 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-IfELXmhcsdH1tW69 .error-icon{fill:#552222;}#mermaid-svg-IfELXm…

【Elasticsearch】硬件資源優化

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;精通Java編…

bootstrap.yml文件未自動加載問題解決方案

在添加bootstrap.yml文件后,程序未自動掃描到,即圖標是這樣的: 查了一些資料,是缺少bootstrap相關依賴,雖然已經添加了spring-cloud-context依賴,但是這個依賴并未引入bootstrap依賴,可能是版本問題,需要手動引入 <dependency><groupId>org.springframework.cloud&…

C++底層學習預備:模板初階

文章目錄 1.編程范式2.函數模板2.1 函數模板概念2.2 函數模板原理2.3 函數模板實例化2.3.1 隱式實例化2.3.2 顯式實例化 2.4 模板參數的匹配原則 3.類模板希望讀者們多多三連支持小編會繼續更新你們的鼓勵就是我前進的動力&#xff01; 進入STL庫學習之前我們要先了解有關模板的…

【玩轉 Postman 接口測試與開發2_015】第12章:模擬服務器(Mock servers)在 Postman 中的創建與用法(含完整實測效果圖)

《API Testing and Development with Postman》最新第二版封面 文章目錄 第十二章 模擬服務器&#xff08;Mock servers&#xff09;在 Postman 中的創建與用法1 模擬服務器的概念2 模擬服務器的創建2.1 開啟側邊欄2.2 模擬服務器的兩種創建方式2.3 私有模擬器的 API 秘鑰的用法…

【算法】回溯算法專題③ ——排列型回溯 python

目錄 前置小試牛刀回歸經典舉一反三總結 前置 【算法】回溯算法專題① ——子集型回溯 python 【算法】回溯算法專題② ——組合型回溯 剪枝 python 小試牛刀 全排列 https://leetcode.cn/problems/permutations/description/ 給定一個不含重復數字的數組 nums &#xff0c;返…

8.原型模式(Prototype)

動機 在軟件系統中&#xff0c;經常面臨著某些結構復雜的對象的創建工作&#xff1b;由于需求的變化&#xff0c;這些對象經常面臨著劇烈的變化&#xff0c;但是它們卻擁有比較穩定一致的接口。 之前的工廠方法和抽象工廠將抽象基類和具體的實現分開。原型模式也差不多&#…