在编程的世界里,C语言以其简洁、高效和接近硬件的特点,一直被广大程序员所喜爱。对于初学者来说,学习C语言是一个打好基础的过程,而对于进阶者来说,通过实战习题来巩固和提升自己的技能则尤为重要。下面,我将为你介绍一系列实战习题,帮助你掌握C语言,迈向更高层次。
一、基础题
1. 数据类型和变量
题目描述: 编写一个程序,声明整型、浮点型、字符型变量,并初始化它们。
#include <stdio.h>
int main() {
int a = 10;
float b = 3.14;
char c = 'A';
printf("整型变量:%d\n", a);
printf("浮点型变量:%f\n", b);
printf("字符型变量:%c\n", c);
return 0;
}
2. 运算符
题目描述: 编写一个程序,计算两个整数的和、差、积、商。
#include <stdio.h>
int main() {
int x = 5, y = 3;
printf("和:%d\n", x + y);
printf("差:%d\n", x - y);
printf("积:%d\n", x * y);
printf("商:%d\n", x / y);
return 0;
}
二、进阶题
1. 循环结构
题目描述: 编写一个程序,打印1到100的整数。
#include <stdio.h>
int main() {
for (int i = 1; i <= 100; i++) {
printf("%d ", i);
}
printf("\n");
return 0;
}
2. 函数
题目描述: 编写一个函数,计算两个整数的最大公约数。
#include <stdio.h>
int gcd(int a, int b) {
int temp;
while (b != 0) {
temp = a % b;
a = b;
b = temp;
}
return a;
}
int main() {
int x = 15, y = 20;
printf("最大公约数:%d\n", gcd(x, y));
return 0;
}
三、高级题
1. 链表
题目描述: 编写一个程序,实现链表的创建、插入、删除和遍历。
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
printf("内存分配失败\n");
exit(1);
}
newNode->data = data;
newNode->next = NULL;
return newNode;
}
void insertNode(Node** head, int data) {
Node* newNode = createNode(data);
newNode->next = *head;
*head = newNode;
}
void deleteNode(Node** head, int data) {
Node* temp = *head, *prev = NULL;
if (temp != NULL && temp->data == data) {
*head = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != data) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return;
prev->next = temp->next;
free(temp);
}
void traverseList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
Node* head = NULL;
insertNode(&head, 10);
insertNode(&head, 20);
insertNode(&head, 30);
traverseList(head);
deleteNode(&head, 20);
traverseList(head);
return 0;
}
2. 栈和队列
题目描述: 编写一个程序,实现栈和队列的基本操作。
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} Queue;
void initStack(Stack* s) {
s->top = -1;
}
void push(Stack* s, int data) {
if (s->top == MAX_SIZE - 1) {
printf("栈满\n");
return;
}
s->top++;
s->data[s->top] = data;
}
int pop(Stack* s) {
if (s->top == -1) {
printf("栈空\n");
return -1;
}
return s->data[s->top--];
}
void initQueue(Queue* q) {
q->front = q->rear = 0;
}
void enqueue(Queue* q, int data) {
if ((q->rear + 1) % MAX_SIZE == q->front) {
printf("队列满\n");
return;
}
q->data[q->rear] = data;
q->rear = (q->rear + 1) % MAX_SIZE;
}
int dequeue(Queue* q) {
if (q->front == q->rear) {
printf("队列空\n");
return -1;
}
int data = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return data;
}
int main() {
Stack s;
initStack(&s);
push(&s, 10);
push(&s, 20);
printf("栈顶元素:%d\n", pop(&s));
printf("栈顶元素:%d\n", pop(&s));
Queue q;
initQueue(&q);
enqueue(&q, 10);
enqueue(&q, 20);
printf("队列头部元素:%d\n", dequeue(&q));
printf("队列头部元素:%d\n", dequeue(&q));
return 0;
}
通过以上实战习题,相信你已经对C语言有了更深入的理解。不断练习,积累经验,你将能够熟练运用C语言解决实际问题。祝你学习进步!
