C语言作为一门历史悠久的编程语言,因其简洁高效的特点,在操作系统、嵌入式系统、系统软件等领域有着广泛的应用。对于编程初学者来说,掌握C语言是通往编程世界的第一步。本文将通过30个实用实例,帮助读者轻松掌握C语言编程技巧。
实例1:打印Hello World
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
这是C语言的经典入门实例,用于打印“Hello World”到控制台。
实例2:变量声明与赋值
#include <stdio.h>
int main() {
int a = 5;
printf("a = %d\n", a);
return 0;
}
在这个实例中,我们声明了一个整型变量a,并对其赋值为5。
实例3:数据类型转换
#include <stdio.h>
int main() {
float a = 3.14;
int b = (int)a;
printf("a = %.2f, b = %d\n", a, b);
return 0;
}
本例展示了如何在C语言中进行数据类型转换。
实例4:if语句
#include <stdio.h>
int main() {
int a = 10;
if (a > 5) {
printf("a is greater than 5\n");
}
return 0;
}
这是一个简单的if语句实例,用于判断变量a是否大于5。
实例5:循环语句for
#include <stdio.h>
int main() {
for (int i = 1; i <= 5; i++) {
printf("%d ", i);
}
printf("\n");
return 0;
}
本例使用了for循环,从1循环到5,并打印每个数字。
实例6:循环语句while
#include <stdio.h>
int main() {
int i = 1;
while (i <= 5) {
printf("%d ", i);
i++;
}
printf("\n");
return 0;
}
这是一个while循环的实例,用于打印1到5的数字。
实例7:循环语句do…while
#include <stdio.h>
int main() {
int i = 1;
do {
printf("%d ", i);
i++;
} while (i <= 5);
printf("\n");
return 0;
}
本例展示了do…while循环的用法,其结构与while循环类似,但至少执行一次循环体。
实例8:函数定义与调用
#include <stdio.h>
void myFunction() {
printf("Hello, Function!\n");
}
int main() {
myFunction();
return 0;
}
在这个实例中,我们定义了一个函数myFunction,并在main函数中调用它。
实例9:参数传递与返回值
#include <stdio.h>
int sum(int a, int b) {
return a + b;
}
int main() {
int x = 10;
int y = 5;
int result = sum(x, y);
printf("The sum of %d and %d is %d\n", x, y, result);
return 0;
}
本例展示了如何在C语言中定义带有参数和返回值的函数。
实例10:结构体
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person p1;
strcpy(p1.name, "Alice");
p1.age = 25;
printf("Name: %s, Age: %d\n", p1.name, p1.age);
return 0;
}
这是一个结构体的实例,用于存储个人信息。
实例11:指针
#include <stdio.h>
int main() {
int a = 10;
int *ptr = &a;
printf("Value of a: %d\n", a);
printf("Address of a: %p\n", (void*)&a);
printf("Value of ptr: %d\n", *ptr);
printf("Address of ptr: %p\n", (void*)ptr);
return 0;
}
本例展示了指针的概念及其应用。
实例12:数组
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
printf("arr[0] = %d\n", arr[0]);
printf("arr[4] = %d\n", arr[4]);
return 0;
}
这是一个数组的实例,用于存储和访问一组数据。
实例13:字符串处理
#include <stdio.h>
#include <string.h>
int main() {
char str1[100] = "Hello";
char str2[100] = "World";
strcat(str1, str2);
printf("Concatenated String: %s\n", str1);
return 0;
}
本例展示了C语言中的字符串处理函数,如字符串连接。
实例14:文件操作
#include <stdio.h>
int main() {
FILE *fp;
char ch;
fp = fopen("example.txt", "r");
if (fp == NULL) {
printf("Error opening file!\n");
return 1;
}
while ((ch = fgetc(fp)) != EOF) {
putchar(ch);
}
fclose(fp);
return 0;
}
这是一个文件操作的实例,用于读取文件内容。
实例15:动态内存分配
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
int size;
printf("Enter size of array: ");
scanf("%d", &size);
ptr = (int*)malloc(size * sizeof(int));
if (ptr == NULL) {
printf("Memory not allocated!\n");
exit(0);
}
printf("Enter %d integers:\n", size);
for (int i = 0; i < size; i++) {
scanf("%d", &ptr[i]);
}
printf("Elements in array:\n");
for (int i = 0; i < size; i++) {
printf("%d ", ptr[i]);
}
printf("\n");
free(ptr);
return 0;
}
本例展示了如何在C语言中进行动态内存分配。
实例16:函数指针
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int (*ptr)(int, int) = add;
int result = ptr(3, 4);
printf("Result: %d\n", result);
return 0;
}
这是一个函数指针的实例,用于调用函数。
实例17:结构体指针
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person p1;
strcpy(p1.name, "Alice");
p1.age = 25;
struct Person *ptr = &p1;
printf("Name: %s, Age: %d\n", ptr->name, ptr->age);
return 0;
}
本例展示了结构体指针的应用。
实例18:数组指针
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int *ptr = arr;
for (int i = 0; i < 5; i++) {
printf("%d ", *(ptr + i));
}
printf("\n");
return 0;
}
这是一个数组指针的实例,用于访问数组元素。
实例19:指针数组
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
int *ptrs[2];
ptrs[0] = &a;
ptrs[1] = &b;
printf("Value of a: %d\n", *ptrs[0]);
printf("Value of b: %d\n", *ptrs[1]);
return 0;
}
本例展示了指针数组的用法。
实例20:字符串指针
#include <stdio.h>
int main() {
char str1[] = "Hello";
char *ptr = str1;
printf("String: %s\n", ptr);
return 0;
}
这是一个字符串指针的实例,用于访问字符串。
实例21:函数指针数组
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int main() {
int (*ptrs[2])(int, int) = {add, subtract};
int result = ptrs[0](3, 4);
printf("Result: %d\n", result);
result = ptrs[1](3, 4);
printf("Result: %d\n", result);
return 0;
}
本例展示了函数指针数组的用法。
实例22:结构体指针数组
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person p1 = {"Alice", 25};
struct Person p2 = {"Bob", 30};
struct Person *ptrs[2] = {&p1, &p2};
printf("Name: %s, Age: %d\n", ptrs[0]->name, ptrs[0]->age);
printf("Name: %s, Age: %d\n", ptrs[1]->name, ptrs[1]->age);
return 0;
}
本例展示了结构体指针数组的用法。
实例23:数组指针数组
#include <stdio.h>
int main() {
int arr1[] = {1, 2, 3};
int arr2[] = {4, 5, 6};
int (*ptrs[2])[3] = {arr1, arr2};
printf("Value of arr1[0]: %d\n", (*ptrs[0])[0]);
printf("Value of arr2[1]: %d\n", (*ptrs[1])[1]);
return 0;
}
本例展示了数组指针数组的用法。
实例24:字符串指针数组
#include <stdio.h>
int main() {
char *strs[] = {"Hello", "World", "C Programming"};
for (int i = 0; i < 3; i++) {
printf("%s\n", strs[i]);
}
return 0;
}
本例展示了字符串指针数组的用法。
实例25:函数指针数组作为参数
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
void calculate(int (*ptr)(int, int), int a, int b) {
int result = ptr(a, b);
printf("Result: %d\n", result);
}
int main() {
calculate(add, 3, 4);
calculate(subtract, 3, 4);
return 0;
}
本例展示了函数指针数组作为参数的用法。
实例26:结构体指针数组作为参数
#include <stdio.h>
struct Person {
char name[50];
int age;
};
void printPersons(struct Person *ptrs[], int size) {
for (int i = 0; i < size; i++) {
printf("Name: %s, Age: %d\n", ptrs[i]->name, ptrs[i]->age);
}
}
int main() {
struct Person p1 = {"Alice", 25};
struct Person p2 = {"Bob", 30};
struct Person *ptrs[] = {&p1, &p2};
int size = sizeof(ptrs) / sizeof(ptrs[0]);
printPersons(ptrs, size);
return 0;
}
本例展示了结构体指针数组作为参数的用法。
实例27:数组指针数组作为参数
#include <stdio.h>
void printArray(int (*ptrs[][])(int), int size1, int size2) {
for (int i = 0; i < size1; i++) {
for (int j = 0; j < size2; j++) {
printf("%d ", (*ptrs[i])[j]);
}
printf("\n");
}
}
int main() {
int arr1[2][3] = {{1, 2, 3}, {4, 5, 6}};
int arr2[2][3] = {{7, 8, 9}, {10, 11, 12}};
int (*ptrs[2])[3] = {arr1, arr2};
printArray(ptrs, 2, 3);
return 0;
}
本例展示了数组指针数组作为参数的用法。
实例28:字符串指针数组作为参数
#include <stdio.h>
void printStrings(char *strs[], int size) {
for (int i = 0; i < size; i++) {
printf("%s\n", strs[i]);
}
}
int main() {
char *strs[] = {"Hello", "World", "C Programming"};
int size = sizeof(strs) / sizeof(strs[0]);
printStrings(strs, size);
return 0;
}
本例展示了字符串指针数组作为参数的用法。
实例29:递归函数
#include <stdio.h>
int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
int main() {
int n = 5;
printf("Factorial of %d = %d\n", n, factorial(n));
return 0;
}
本例展示了递归函数的应用。
实例30:排序算法
#include <stdio.h>
void bubbleSort(int arr[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 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 size = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, size);
printf("Sorted array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
本例展示了冒泡排序算法的应用。
通过以上30个实用实例,相信你已经对C语言编程有了更深入的了解。在实际编程过程中,不断练习和实践是提高编程能力的关键。祝你在编程之路上一帆风顺!
