引言
C语言是一种广泛使用的计算机编程语言,它以其简洁、高效和灵活性而著称。对于编程初学者来说,掌握C语言的核心技术是通往更多高级编程语言和技术的基石。本文将为你提供50个实用的C语言编程实例,通过这些实例,你可以逐步学习和掌握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 = 10;
int b = 20;
printf("The sum of a and b is: %d\n", a + b);
return 0;
}
在这个例子中,我们定义了两个整数变量a和b,并将它们相加的结果打印出来。
实例3:数据类型
#include <stdio.h>
int main() {
int i = 5;
float f = 5.5;
double d = 5.555;
char c = 'A';
printf("Integer: %d\n", i);
printf("Float: %f\n", f);
printf("Double: %lf\n", d);
printf("Character: %c\n", c);
return 0;
}
这个例子展示了C语言中不同数据类型的使用。
实例4:运算符
#include <stdio.h>
int main() {
int a = 10, b = 5;
printf("Addition: %d\n", a + b);
printf("Subtraction: %d\n", a - b);
printf("Multiplication: %d\n", a * b);
printf("Division: %d\n", a / b);
printf("Modulus: %d\n", a % b);
return 0;
}
在这个例子中,我们使用了加、减、乘、除和取模运算符。
实例5:控制结构
#include <stdio.h>
int main() {
int num = 10;
if (num > 5) {
printf("Number is greater than 5\n");
} else {
printf("Number is not greater than 5\n");
}
return 0;
}
这个例子展示了如何使用if-else控制结构来执行条件语句。
实例6:循环结构
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 10; i++) {
printf("%d\n", i);
}
return 0;
}
这个例子使用了for循环来打印1到10的数字。
实例7:数组
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("Element %d is %d\n", i, arr[i]);
}
return 0;
}
在这个例子中,我们创建了一个整数数组并遍历打印其元素。
实例8:指针
#include <stdio.h>
int main() {
int a = 10;
int *ptr = &a;
printf("Value of a: %d\n", a);
printf("Value of ptr: %d\n", *ptr);
return 0;
}
这个例子展示了如何使用指针来访问和修改变量的值。
实例9:函数
#include <stdio.h>
int add(int x, int y) {
return x + y;
}
int main() {
int result = add(5, 10);
printf("Result: %d\n", result);
return 0;
}
这个例子展示了如何定义和使用函数。
实例10:结构体
#include <stdio.h>
struct Student {
char name[50];
int age;
};
int main() {
struct Student s1;
strcpy(s1.name, "John Doe");
s1.age = 20;
printf("Name: %s, Age: %d\n", s1.name, s1.age);
return 0;
}
在这个例子中,我们定义了一个结构体来存储学生的信息。
实例11:文件操作
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "w");
if (fp == NULL) {
printf("Error opening file!\n");
return 1;
}
fprintf(fp, "Hello, World!\n");
fclose(fp);
return 0;
}
这个例子展示了如何使用C语言打开、写入和关闭文件。
实例12:动态内存分配
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr = (int *)malloc(5 * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
for (int i = 0; i < 5; i++) {
arr[i] = i + 1;
}
for (int i = 0; i < 5; i++) {
printf("%d\n", arr[i]);
}
free(arr);
return 0;
}
在这个例子中,我们使用了动态内存分配来创建一个整数数组。
实例13:字符串处理
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello";
char str2[50] = "World";
strcat(str1, str2);
printf("Concatenated String: %s\n", str1);
return 0;
}
这个例子展示了如何使用字符串函数来操作字符串。
实例14:标准库函数
#include <stdio.h>
#include <time.h>
int main() {
time_t t = time(NULL);
printf("Current time: %s", ctime(&t));
return 0;
}
在这个例子中,我们使用了标准库函数来获取和打印当前时间。
实例15:指针与数组
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr;
for (int i = 0; i < 5; i++) {
printf("%d\n", *(ptr + i));
}
return 0;
}
这个例子展示了如何使用指针来访问数组的元素。
实例16:指针与函数
#include <stdio.h>
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
int main() {
int a = 10, b = 20;
swap(&a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
这个例子展示了如何使用指针在函数中交换两个变量的值。
实例17:递归函数
#include <stdio.h>
int factorial(int n) {
if (n <= 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int num = 5;
printf("Factorial of %d is %d\n", num, factorial(num));
return 0;
}
在这个例子中,我们使用递归函数来计算阶乘。
实例18:结构体与指针
#include <stdio.h>
struct Person {
char name[50];
int age;
};
void printPerson(struct Person *p) {
printf("Name: %s, Age: %d\n", p->name, p->age);
}
int main() {
struct Person p;
strcpy(p.name, "Alice");
p.age = 30;
printPerson(&p);
return 0;
}
这个例子展示了如何使用指针来访问结构体成员。
实例19:文件读写
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {
printf("Error opening file!\n");
return 1;
}
char ch;
while ((ch = fgetc(fp)) != EOF) {
putchar(ch);
}
fclose(fp);
return 0;
}
在这个例子中,我们使用文件读取函数来读取文件内容并打印到控制台。
实例20:动态内存分配与释放
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr = (int *)malloc(5 * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
for (int i = 0; i < 5; i++) {
arr[i] = i + 1;
}
for (int i = 0; i < 5; i++) {
printf("%d\n", arr[i]);
}
free(arr);
return 0;
}
这个例子展示了如何动态分配和释放内存。
实例21:字符串比较
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello";
char str2[50] = "World";
int result = strcmp(str1, str2);
if (result == 0) {
printf("Strings are equal\n");
} else if (result < 0) {
printf("str1 is less than str2\n");
} else {
printf("str1 is greater than str2\n");
}
return 0;
}
这个例子展示了如何使用字符串比较函数来比较两个字符串。
实例22:字符串连接
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello";
char str2[50] = "World";
char result[100];
strcpy(result, str1);
strcat(result, str2);
printf("Concatenated String: %s\n", result);
return 0;
}
这个例子展示了如何使用字符串连接函数来合并两个字符串。
实例23:字符串搜索
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello, World!";
char str2[50] = "World";
int result = strstr(str1, str2);
if (result != NULL) {
printf("String found at index: %ld\n", result - str1);
} else {
printf("String not found\n");
}
return 0;
}
这个例子展示了如何使用字符串搜索函数来查找子字符串。
实例24:字符串替换
#include <stdio.h>
#include <string.h>
void replaceSubstring(char *str, const char *substr, const char *newstr) {
char buffer[1024];
char *p, *p2, *p3;
int len1 = strlen(str);
int len2 = strlen(substr);
int len3 = strlen(newstr);
strcpy(buffer, str);
p = buffer;
while ((p2 = strstr(p, substr)) != NULL) {
p3 = p2 + len2;
memmove(p2, newstr, len3);
p = p3;
len1 += len3 - len2;
if (len1 > sizeof(buffer)) {
break;
}
}
strcpy(str, buffer);
}
int main() {
char str[50] = "Hello, World!";
replaceSubstring(str, "World", "C Programming");
printf("Replaced String: %s\n", str);
return 0;
}
这个例子展示了如何使用字符串替换函数来替换字符串中的子字符串。
实例25:字符串查找
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello, World!";
char str2[50] = "World";
int index = strstr(str1, str2) - str1;
printf("Index of '%s' in '%s': %d\n", str2, str1, index);
return 0;
}
这个例子展示了如何使用字符串查找函数来获取子字符串在主字符串中的索引。
实例26:字符串反转
#include <stdio.h>
#include <string.h>
void reverseString(char *str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char str[50] = "Hello, World!";
reverseString(str);
printf("Reversed String: %s\n", str);
return 0;
}
这个例子展示了如何使用字符串反转函数来反转字符串。
实例27:字符串截取
#include <stdio.h>
#include <string.h>
void substring(char *str, char *substr, int start, int length) {
int len = strlen(str);
int end = start + length > len ? len : start + length;
strncpy(substr, str + start, end - start);
substr[end - start] = '\0';
}
int main() {
char str[50] = "Hello, World!";
char substr[50];
substring(str, substr, 7, 5);
printf("Substring: %s\n", substr);
return 0;
}
这个例子展示了如何使用字符串截取函数来获取字符串的子字符串。
实例28:字符串比较大小写
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str1[50] = "Hello";
char str2[50] = "hello";
int result = strcasecmp(str1, str2);
if (result == 0) {
printf("Strings are equal (case insensitive)\n");
} else if (result < 0) {
printf("str1 is less than str2 (case insensitive)\n");
} else {
printf("str1 is greater than str2 (case insensitive)\n");
}
return 0;
}
这个例子展示了如何使用字符串比较函数来比较两个字符串的大小写。
实例29:字符串查找大小写
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str1[50] = "Hello, World!";
char str2[50] = "world";
int index = strcasestr(str1, str2);
if (index != NULL) {
printf("Index of '%s' in '%s': %ld\n", str2, str1, index);
} else {
printf("String not found\n");
}
return 0;
}
这个例子展示了如何使用字符串查找函数来查找大小写不敏感的子字符串。
实例30:字符串排序
#include <stdio.h>
#include <string.h>
void sortString(char *str) {
int len = strlen(str);
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (str[i] > str[j]) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
}
int main() {
char str[50] = "Hello, World!";
sortString(str);
printf("Sorted String: %s\n", str);
return 0;
}
这个例子展示了如何使用字符串排序函数来对字符串中的字符进行排序。
实例31:字符串查找最小值
#include <stdio.h>
#include <string.h>
#include <limits.h>
int main() {
char str[50] = "Hello, World!";
int minIndex = 0;
char minChar = INT_MAX;
for (int i = 0; i < strlen(str); i++) {
if (str[i] < minChar) {
minChar = str[i];
minIndex = i;
}
}
printf("Index of minimum character '%c': %d\n", minChar, minIndex);
return 0;
}
这个例子展示了如何使用字符串查找函数来找到字符串中的最小字符及其索引。
实例32:字符串查找最大值
#include <stdio.h>
#include <string.h>
#include <limits.h>
int main() {
char str[50] = "Hello, World!";
int maxIndex = 0;
char maxChar = INT_MIN;
for (int i = 0; i < strlen(str); i++) {
if (str[i] > maxChar) {
maxChar = str[i];
maxIndex = i;
}
}
printf("Index of maximum character '%c': %d\n", maxChar, maxIndex);
return 0;
}
这个例子展示了如何使用字符串查找函数来找到字符串中的最大字符及其索引。
实例33:字符串查找所有字符
#include <stdio.h>
#include <string.h>
void findCharacters(char *str, char c) {
int count = 0;
for (int i = 0; i < strlen(str); i++) {
if (str[i] == c) {
count++;
}
}
printf("Number of '%c' in '%s': %d\n", c, str, count);
}
int main() {
char str[50] = "Hello, World!";
findCharacters(str, 'o');
return 0;
}
这个例子展示了如何使用字符串查找函数来统计字符串中某个字符的出现次数。
实例34:字符串查找最长单词
”`c
#include
void findLongestWord(char *str) {
int maxLen = 0;
int currentLen = 0;
int index =
