C语言作为一种历史悠久的编程语言,因其高效性和可移植性在众多领域都占据着重要地位。无论是系统编程、嵌入式开发还是性能要求极高的应用,C语言都是不可或缺的工具。以下将为你展示50个实用的C语言编程实例,帮助你快速提升编程技能。
实例1:C语言的变量声明与赋值
#include <stdio.h>
int main() {
int age = 25;
float height = 1.75f;
char grade = 'A';
printf("Age: %d, Height: %.2f, Grade: %c\n", age, height, grade);
return 0;
}
实例2:使用printf函数格式化输出
#include <stdio.h>
int main() {
int num = 12345;
printf("The number in reverse order is: %d\n", num);
return 0;
}
实例3:输入输出函数scanf和printf的使用
#include <stdio.h>
int main() {
int num;
printf("Enter an integer: ");
scanf("%d", &num);
printf("You entered: %d\n", num);
return 0;
}
实例4:计算两个数的和、差、积、商
#include <stdio.h>
int main() {
int a, b, sum, difference, product, quotient;
printf("Enter two integers: ");
scanf("%d %d", &a, &b);
sum = a + b;
difference = a - b;
product = a * b;
quotient = a / b;
printf("Sum: %d, Difference: %d, Product: %d, Quotient: %d\n", sum, difference, product, quotient);
return 0;
}
实例5:判断一个数是否为素数
#include <stdio.h>
#include <stdbool.h>
bool is_prime(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 (is_prime(num)) {
printf("%d is a prime number.\n", num);
} else {
printf("%d is not a prime number.\n", num);
}
return 0;
}
实例6:冒泡排序算法
#include <stdio.h>
void bubble_sort(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]);
bubble_sort(arr, n);
printf("Sorted array: \n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
实例7:斐波那契数列
#include <stdio.h>
void fibonacci_series(int n) {
int a = 0, b = 1;
printf("Fibonacci Series: %d %d ", a, b);
for (int i = 2; i < n; i++) {
int next = a + b;
printf("%d ", next);
a = b;
b = next;
}
printf("\n");
}
int main() {
int n = 10;
fibonacci_series(n);
return 0;
}
实例8:字符串比较
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
printf("Enter first string: ");
scanf("%99s", str1);
printf("Enter second string: ");
scanf("%99s", str2);
if (strcmp(str1, str2) == 0) {
printf("Strings are equal.\n");
} else {
printf("Strings are not equal.\n");
}
return 0;
}
实例9:结构体与指针
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person person = {"John Doe", 30};
struct Person *ptr = &person;
printf("Name: %s, Age: %d\n", ptr->name, ptr->age);
return 0;
}
实例10:文件操作
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
printf("Error opening file.\n");
return 1;
}
fprintf(file, "Hello, World!");
fclose(file);
return 0;
}
实例11:动态内存分配
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int *)malloc(10 * sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
for (int i = 0; i < 10; i++) {
ptr[i] = i + 1;
}
for (int i = 0; i < 10; i++) {
printf("%d ", ptr[i]);
}
free(ptr);
return 0;
}
实例12:使用循环结构
#include <stdio.h>
int main() {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
printf("Sum of 1 to 10 is: %d\n", sum);
return 0;
}
实例13:使用递归函数计算阶乘
#include <stdio.h>
long long factorial(int n) {
if (n == 0) return 1;
return n * factorial(n - 1);
}
int main() {
int n = 5;
printf("Factorial of %d is %lld\n", n, factorial(n));
return 0;
}
实例14:使用指针进行字符串拷贝
#include <stdio.h>
#include <string.h>
void copy_string(char *src, char *dest) {
while (*src) {
*dest = *src;
src++;
dest++;
}
*dest = '\0';
}
int main() {
char src[100], dest[100];
printf("Enter a string: ");
scanf("%99s", src);
copy_string(src, dest);
printf("Copied string: %s\n", dest);
return 0;
}
实例15:使用指针访问二维数组
#include <stdio.h>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("arr[%d][%d] = %d\n", i, j, *(arr[i] + j));
}
}
return 0;
}
实例16:使用结构体数组
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person persons[2] = {
{"Alice", 25},
{"Bob", 30}
};
for (int i = 0; i < 2; i++) {
printf("Name: %s, Age: %d\n", persons[i].name, persons[i].age);
}
return 0;
}
实例17:使用动态内存分配创建二维数组
#include <stdio.h>
#include <stdlib.h>
int main() {
int rows = 2, cols = 3;
int **arr = (int **)malloc(rows * sizeof(int *));
for (int i = 0; i < rows; i++) {
arr[i] = (int *)malloc(cols * sizeof(int));
for (int j = 0; j < cols; j++) {
arr[i][j] = i * cols + j;
}
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("arr[%d][%d] = %d\n", i, j, arr[i][j]);
}
}
for (int i = 0; i < rows; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
实例18:使用函数指针
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b) {
return a + b;
}
int main() {
int (*func)(int, int) = add;
printf("Result: %d\n", func(3, 4));
return 0;
}
实例19:使用结构体指针
#include <stdio.h>
struct Person {
char *name;
int age;
};
void print_person(struct Person *p) {
printf("Name: %s, Age: %d\n", p->name, p->age);
}
int main() {
struct Person person = {"John Doe", 30};
print_person(&person);
return 0;
}
实例20:使用位运算
#include <stdio.h>
int main() {
int a = 5; // 0101
int b = 3; // 0011
printf("a & b: %d\n", a & b); // 0001
printf("a | b: %d\n", a | b); // 0111
printf("a ^ b: %d\n", a ^ b); // 0110
printf("a << 1: %d\n", a << 1); // 1010
printf("a >> 1: %d\n", a >> 1); // 0101
return 0;
}
实例21:使用宏定义
#include <stdio.h>
#define MAX 100
int main() {
int arr[MAX];
printf("Size of arr: %d\n", sizeof(arr));
return 0;
}
实例22:使用预处理器指令
#include <stdio.h>
#if defined(__APPLE__) && defined(__MACH__)
#define OS_NAME "macOS"
#elif defined(_WIN32)
#define OS_NAME "Windows"
#else
#define OS_NAME "Linux"
#endif
int main() {
printf("Operating System: %s\n", OS_NAME);
return 0;
}
实例23:使用文件操作读取文本文件
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("Error opening file.\n");
return 1;
}
char c;
while ((c = fgetc(file)) != EOF) {
printf("%c", c);
}
fclose(file);
return 0;
}
实例24:使用文件操作写入文本文件
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
printf("Error opening file.\n");
return 1;
}
fprintf(file, "Hello, World!");
fclose(file);
return 0;
}
实例25:使用字符串函数
#include <stdio.h>
#include <string.h>
int main() {
char str1[100] = "Hello";
char str2[100] = "World";
printf("str1: %s, str2: %s\n", str1, str2);
strcat(str1, str2);
printf("str1 after concatenation: %s\n", str1);
printf("Length of str1: %ld\n", strlen(str1));
return 0;
}
实例26:使用结构体指针和函数
#include <stdio.h>
struct Person {
char *name;
int age;
};
void print_person(struct Person *p) {
printf("Name: %s, Age: %d\n", p->name, p->age);
}
int main() {
struct Person person = {"John Doe", 30};
print_person(&person);
return 0;
}
实例27:使用指针数组
#include <stdio.h>
int main() {
char *names[] = {"Alice", "Bob", "Charlie"};
for (int i = 0; i < 3; i++) {
printf("%s\n", names[i]);
}
return 0;
}
实例28:使用结构体数组和函数
#include <stdio.h>
struct Person {
char *name;
int age;
};
void print_person(struct Person persons[], int n) {
for (int i = 0; i < n; i++) {
printf("Name: %s, Age: %d\n", persons[i].name, persons[i].age);
}
}
int main() {
struct Person persons[] = {
{"Alice", 25},
{"Bob", 30},
{"Charlie", 35}
};
int n = sizeof(persons) / sizeof(persons[0]);
print_person(persons, n);
return 0;
}
实例29:使用动态内存分配创建结构体数组
#include <stdio.h>
#include <stdlib.h>
struct Person {
char *name;
int age;
};
int main() {
int n = 3;
struct Person *persons = (struct Person *)malloc(n * sizeof(struct Person));
for (int i = 0; i < n; i++) {
persons[i].name = (char *)malloc(50 * sizeof(char));
sprintf(persons[i].name, "Person %d", i + 1);
persons[i].age = 20 + i;
}
for (int i = 0; i < n; i++) {
printf("Name: %s, Age: %d\n", persons[i].name, persons[i].age);
free(persons[i].name);
}
free(persons);
return 0;
}
实例30:使用函数指针数组
#include <stdio.h>
void add(int a, int b) {
printf("%d + %d = %d\n", a, b, a + b);
}
void subtract(int a, int b) {
printf("%d - %d = %d\n", a, b, a - b);
}
void multiply(int a, int b) {
printf("%d * %d = %d\n", a, b, a * b);
}
void divide(int a, int b) {
if (b != 0) {
printf("%d / %d = %d\n", a, b, a / b);
} else {
printf("Division by zero is not allowed.\n");
}
}
int main() {
void (*ops[])(int, int) = {add, subtract, multiply, divide};
for (int i = 0; i < 4; i++) {
ops[i](5, 3);
}
return 0;
}
实例31:使用指针和函数进行内存分配和释放
#include <stdio.h>
#include <stdlib.h>
void *allocate_memory(size_t size) {
return malloc(size);
}
void free_memory(void *ptr) {
free(ptr);
}
int main() {
int *arr = (int *)allocate_memory(10 * sizeof(int));
for (int i = 0; i < 10; i++) {
arr[i] = i + 1;
}
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free_memory(arr);
return 0;
}
实例32:使用函数指针进行回调
#include <stdio.h>
void perform_operation(int a, int b, void (*op)(int, int)) {
op(a, b);
}
void add(int a, int b) {
printf("%d + %d = %d\n", a, b, a + b);
}
void subtract(int a, int b) {
printf("%d - %d = %d\n", a, b, a - b);
}
int main() {
perform_operation(5, 3, add);
perform_operation(5, 3, subtract);
return 0;
}
实例33:使用结构体和位字段
#include <stdio.h>
struct BitFields {
unsigned int flag1 : 1;
unsigned int flag2 : 1;
unsigned int flag3 : 1;
unsigned int flag4 : 1;
};
int main() {
struct BitFields bitfields;
bitfields.flag1 = 1;
bitfields.flag2 = 1;
bitfields.flag3 = 0;
bitfields.flag4 = 1;
printf("flag1: %d\n", bitfields.flag1);
printf("flag2: %d\n", bitfields.flag2);
printf("flag3: %d\n", bitfields.flag3);
printf("flag4: %d\n", bitfields.flag4);
return 0;
}
实例34:使用宏定义进行代码替换
”`c #include
