案例一:简单的计算器
主题句:通过编写一个简单的计算器程序,你可以初步了解C语言的语法和基本数据类型。
代码示例:
#include <stdio.h>
int main() {
int num1, num2;
char operator;
printf("Enter an operator (+, -, *, /): ");
scanf("%c", &operator);
printf("Enter two operands: ");
scanf("%d %d", &num1, &num2);
switch (operator) {
case '+':
printf("%d + %d = %d", num1, num2, num1 + num2);
break;
case '-':
printf("%d - %d = %d", num1, num2, num1 - num2);
break;
case '*':
printf("%d * %d = %d", num1, num2, num1 * num2);
break;
case '/':
if (num2 != 0)
printf("%d / %d = %f", num1, num2, (float)num1 / num2);
else
printf("Division by zero is not allowed.");
break;
default:
printf("Invalid operator!");
}
return 0;
}
案例二:判断质数
主题句:通过编写一个判断质数的程序,你可以学习到循环和条件语句的使用。
代码示例:
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (isPrime(num))
printf("%d is a prime number.", num);
else
printf("%d is not a prime number.", num);
return 0;
}
案例三:打印星号图案
主题句:使用嵌套循环来创建不同的星号图案,是学习循环控制的一个好方法。
代码示例:
#include <stdio.h>
void printPattern(int size) {
for (int i = 0; i < size; i++) {
for (int j = 0; j <= i; j++)
printf("*");
printf("\n");
}
}
int main() {
int size;
printf("Enter the size of the pattern: ");
scanf("%d", &size);
printPattern(size);
return 0;
}
案例四:冒泡排序
主题句:了解排序算法是编程中的基本技能,冒泡排序是一个简单的开始。
代码示例:
#include <stdio.h>
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
int 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: \n");
for (int i=0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
案例五:斐波那契数列
主题句:斐波那契数列是一个经典的递归问题,通过解决这个问题,你可以学习到递归的概念。
代码示例:
#include <stdio.h>
int fibonacci(int n) {
if (n <= 1)
return n;
return fibonacci(n-1) + fibonacci(n-2);
}
int main() {
int n;
printf("Enter the number of terms: ");
scanf("%d", &n);
printf("Fibonacci Series: ");
for (int i = 0; i < n; i++)
printf("%d ", fibonacci(i));
printf("\n");
return 0;
}
案例六:文件操作
主题句:学习如何读取和写入文件是C语言编程中的重要部分。
代码示例:
#include <stdio.h>
int main() {
FILE *fp;
char ch;
fp = fopen("example.txt", "r");
if (fp == NULL) {
perror("Error opening file");
return -1;
}
printf("Reading characters from the file:\n");
while ((ch = fgetc(fp)) != EOF)
printf("%c", ch);
fclose(fp);
return 0;
}
案例七:动态内存分配
主题句:学习动态内存分配是C语言编程的高级技巧。
代码示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
int n, i;
printf("Enter number of elements: ");
scanf("%d", &n);
ptr = (int*)malloc(n * sizeof(int));
if (ptr == NULL) {
printf("Memory not allocated.\n");
exit(0);
}
printf("Enter %d integers:\n", n);
for (i = 0; i < n; i++)
scanf("%d", &ptr[i]);
printf("Elements in the array are: ");
for (i = 0; i < n; i++)
printf("%d ", ptr[i]);
free(ptr);
return 0;
}
案例八:结构体和指针
主题句:使用结构体和指针可以提高程序的可读性和灵活性。
代码示例:
#include <stdio.h>
struct Student {
char name[50];
int age;
float marks;
};
int main() {
struct Student s1 = {"John", 20, 89.5};
struct Student *ptr = &s1;
printf("Name: %s\n", ptr->name);
printf("Age: %d\n", ptr->age);
printf("Marks: %.2f\n", ptr->marks);
return 0;
}
案例九:链表操作
主题句:链表是一种常用的数据结构,通过操作链表,你可以学习到指针的高级用法。
代码示例:
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
void insert(struct Node** head_ref, int new_data) {
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
struct Node* last = *head_ref;
new_node->data = new_data;
new_node->next = NULL;
if (*head_ref == NULL) {
*head_ref = new_node;
return;
}
while (last->next != NULL)
last = last->next;
last->next = new_node;
return;
}
void printList(struct Node* node) {
while (node != NULL) {
printf(" %d", node->data);
node = node->next;
}
}
int main() {
struct Node* head = NULL;
insert(&head, 1);
insert(&head, 2);
insert(&head, 3);
insert(&head, 4);
printf("Created linked list: ");
printList(head);
printf("\n");
return 0;
}
案例十:多线程编程
主题句:多线程编程可以提高程序的执行效率,特别是在处理并发任务时。
代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void* threadFunction(void* arg) {
int id = *(int*)arg;
printf("Thread %d is running\n", id);
return NULL;
}
int main() {
pthread_t threads[5];
int ids[5];
for (int i = 0; i < 5; i++) {
ids[i] = i;
if (pthread_create(&threads[i], NULL, threadFunction, (void*)&ids[i]) != 0) {
perror("Failed to create thread");
return 1;
}
}
for (int i = 0; i < 5; i++) {
pthread_join(threads[i], NULL);
}
return 0;
}
通过以上10个实战案例,你可以逐步提升你的C语言编程技能。每个案例都有其独特的学习点,从基础到高级,这些案例将帮助你构建扎实的编程基础。记住,实践是提高编程技能的关键,不断练习和挑战自己,你会变得越来越熟练。
