首页 >> 知识 >> c语言编程题经典100例

c语言编程题经典100例

1,实现快速排序算法。

下面是用C语言实现快速排序算法的示例代码:

#include void swap(int* a, int* b) { int t = *a; *a = *b; *b = t; } int partition(int arr[], int low, int high) { int pivot = arr[high]; int i = (low - 1); for (int j = low; j next; } else { ptr1 = ptr1->next; } if(ptr2 != NULL && ptr2->data == y) { distance++; ptr2 = ptr2->next; } else { ptr2 = ptr2->next; } } return distance; }

        在上述代码中,草莓视频在线观看APP使用两个指针 ptr1 和 ptr2 来遍历链表。指针 ptr1 用于寻找节点 x,而指针 ptr2 用于寻找节点 y。如果在遍历过程中找到 x,则草莓视频在线观看APP将 ptr2 移动到下一个节点。如果在遍历过程中找到 y,则草莓视频在线观看APP增加距离并移动 ptr2 到下一个节点。否则,草莓视频在线观看APP继续移动 ptr1 和 ptr2 到下一个节点。当 ptr1 或 ptr2 到达链表的末尾时,草莓视频在线观看APP就停止遍历。最后,返回的距离就是两个节点之间的距离。

请注意,这个函数假设 x 和 y 是存在于链表中的实际值,并且它返回的是这两个值之间的最短距离。如果链表中不存在这些值,或者如果它们不存在于同一个链表中,那么函数将返回0。

4,实现循环队列。

以下是用C语言实现循环队列的示例代码:

#include #include #define MAX_SIZE 5 typedef struct { int data[MAX_SIZE]; int front; int rear; } Queue; void initQueue(Queue *q) { q->front = 0; q->rear = 0; } int isQueueEmpty(Queue *q) { return (q->front == q->rear); } int isQueueFull(Queue *q) { return ((q->rear + 1) % MAX_SIZE == q->front); } void enqueue(Queue *q, int x) { if (isQueueFull(q)) { printf("Queue is full. "); return; } q->data[q->rear] = x; q->rear = (q->rear + 1) % MAX_SIZE; } int dequeue(Queue *q) { int x; if (isQueueEmpty(q)) { printf("Queue is empty. "); exit(0); } x = q->data[q->front]; q->front = (q->front + 1) % MAX_SIZE; return x; } void printQueue(Queue *q) { if (isQueueEmpty(q)) { printf("Queue is empty. "); return; } printf("Queue elements: "); int i = q->front; while (i != q->rear) { printf("%d ", q->data[i]); i = (i + 1) % MAX_SIZE; } printf(" "); } int main() { Queue q; initQueue(&q); enqueue(&q, 10); enqueue(&q, 20); enqueue(&q, 30); printQueue(&q); printf("Dequeue element: %d ", dequeue(&q)); printQueue(&q); enqueue(&q, 40); enqueue(&q, 50); printQueue(&q); enqueue(&q, 60); printf("Dequeue element: %d ", dequeue(&q)); printf("Dequeue element: %d ", dequeue(&q)); printf("Dequeue element: %d ", dequeue(&q)); printf("Dequeue element: %d ", dequeue(&q)); printf("Dequeue element: %d ", dequeue(&q)); return 0; }

5,实现静态数组的排序算法(冒泡排序、插入排序等)。

这里是使用 C 语言实现静态数组排序算法(冒泡排序和插入排序)的示例代码。

冒泡排序:

#include void bubbleSort(int arr[], int n) { int i, j, temp; for (i = 0; i < n-1; i++) { for (j = 0; j < n-i-1; j++) { if (arr[j] > arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr)/sizeof(arr[0]); bubbleSort(arr, n); printf("Sorted array: "); for(int i=0; i < n; i++) { printf("%d ", arr[i]); } return 0; }

插入排序:

#include void insertionSort(int arr[], int n) { int i, key, j; for (i = 1; i < n; i++) { key = arr[i]; j = i - 1; while (j >= 0 && arr[j] > key) { arr[j+1] = arr[j]; j = j - 1; } arr[j+1] = key; } } int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr)/sizeof(arr[0]); insertionSort(arr, n); printf("Sorted array: "); for(int i=0; i < n; i++) { printf("%d ", arr[i]); } return 0; }

这两个算法都是对静态数组进行排序的基础算法。在 main 函数中,草莓视频在线观看APP定义了一个静态数组,并对其进行排序,然后输出排序后的数组。

网站地图