实例1:C语言基础语法介绍
在开始编写C语言程序之前,我们需要了解一些基础的语法规则。以下是一些基本的C语言语法元素:
- 变量:用于存储数据的命名空间。
- 数据类型:定义变量的数据类型,如int、float、char等。
- 运算符:用于执行数学和逻辑运算。
- 控制语句:用于控制程序的流程,如if、else、while、for等。
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
int sum = a + b;
printf("The sum of %d and %d is %d.\n", a, b, sum);
return 0;
}
实例2:变量和常量
在C语言中,变量用于存储可变的值,而常量则是不可变的值。以下是如何声明和使用变量和常量的示例:
#include <stdio.h>
#define PI 3.14159
int main() {
int radius = 5;
float area = PI * radius * radius;
printf("The area of a circle with radius %d is %f.\n", radius, area);
return 0;
}
实例3:运算符
C语言提供了丰富的运算符,包括算术运算符、关系运算符、逻辑运算符等。以下是一个使用运算符的例子:
#include <stdio.h>
int main() {
int a = 10, b = 20;
int sum = a + b;
int diff = a - b;
int prod = a * b;
int div = a / b;
int mod = a % b;
printf("Sum: %d\n", sum);
printf("Difference: %d\n", diff);
printf("Product: %d\n", prod);
printf("Division: %d\n", div);
printf("Modulus: %d\n", mod);
return 0;
}
实例4:控制语句
控制语句用于控制程序的流程。以下是一个使用if语句的例子:
#include <stdio.h>
int main() {
int number = 50;
if (number > 0) {
printf("The number is positive.\n");
} else {
printf("The number is not positive.\n");
}
return 0;
}
实例5:循环语句
循环语句用于重复执行一段代码。以下是一个使用for循环的例子:
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
printf("%d\n", i);
}
return 0;
}
实例6:函数
函数是C语言中可重用的代码块。以下是一个简单函数的例子:
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(10, 20);
printf("The result is %d.\n", result);
return 0;
}
实例7:指针
指针是C语言中的一个重要概念,它用于存储变量的地址。以下是一个使用指针的例子:
#include <stdio.h>
int main() {
int a = 10;
int *ptr = &a;
printf("The value of a is %d.\n", *ptr);
return 0;
}
实例8:结构体
结构体用于将不同类型的数据组合在一起。以下是一个使用结构体的例子:
#include <stdio.h>
struct Person {
char name[50];
int age;
float salary;
};
int main() {
struct Person p1;
strcpy(p1.name, "John Doe");
p1.age = 30;
p1.salary = 50000.0;
printf("Name: %s\n", p1.name);
printf("Age: %d\n", p1.age);
printf("Salary: %.2f\n", p1.salary);
return 0;
}
实例9:数组
数组是一种用于存储多个相同类型数据的数据结构。以下是一个使用数组的例子:
#include <stdio.h>
int main() {
int numbers[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("%d\n", numbers[i]);
}
return 0;
}
实例10:字符串处理
C语言提供了多种字符串处理函数,如strlen、strcpy、strcat等。以下是一个使用字符串处理的例子:
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello";
char str2[50] = "World";
strcpy(str1, str2);
strcat(str1, "!");
printf("Concatenated string: %s\n", str1);
return 0;
}
实例11:文件操作
C语言提供了文件操作函数,如fopen、fclose、fread、fwrite等。以下是一个使用文件操作的例子:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
printf("Error opening file.\n");
return 1;
}
fprintf(file, "This is a test file.\n");
fclose(file);
return 0;
}
实例12:动态内存分配
C语言提供了动态内存分配函数,如malloc、calloc、realloc、free等。以下是一个使用动态内存分配的例子:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int *)malloc(5 * sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
for (int i = 0; i < 5; i++) {
ptr[i] = i + 1;
}
for (int i = 0; i < 5; i++) {
printf("%d\n", ptr[i]);
}
free(ptr);
return 0;
}
实例13:指针和数组
指针和数组在C语言中有着紧密的联系。以下是一个使用指针和数组的例子:
#include <stdio.h>
int main() {
int numbers[5] = {1, 2, 3, 4, 5};
int *ptr = numbers;
for (int i = 0; i < 5; i++) {
printf("%d\n", *(ptr + i));
}
return 0;
}
实例14:结构体数组和指针
结构体数组和指针可以用于存储和操作结构体数据。以下是一个使用结构体数组和指针的例子:
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person people[2] = {
{"John Doe", 30},
{"Jane Smith", 25}
};
struct Person *ptr = people;
for (int i = 0; i < 2; i++) {
printf("Name: %s, Age: %d\n", ptr[i].name, ptr[i].age);
}
return 0;
}
实例15:函数指针
函数指针是指向函数的指针,它允许我们将函数作为参数传递给其他函数。以下是一个使用函数指针的例子:
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int (*funcPtr)(int, int) = add;
int result = funcPtr(10, 20);
printf("The result is %d.\n", result);
return 0;
}
实例16:递归函数
递归函数是一种调用自身的函数。以下是一个使用递归函数的例子:
#include <stdio.h>
int factorial(int n) {
if (n == 0)
return 1;
return n * factorial(n - 1);
}
int main() {
int number = 5;
printf("Factorial of %d is %d.\n", number, factorial(number));
return 0;
}
实例17:枚举类型
枚举类型用于定义一组命名的整型常量。以下是一个使用枚举类型的例子:
#include <stdio.h>
enum Day {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
};
int main() {
enum Day today = Wednesday;
printf("Today is %d.\n", today);
return 0;
}
实例18:位运算符
位运算符用于操作整数的二进制位。以下是一个使用位运算符的例子:
#include <stdio.h>
int main() {
int a = 5;
int b = 3;
printf("a & b: %d\n", a & b);
printf("a | b: %d\n", a | b);
printf("a ^ b: %d\n", a ^ b);
printf("a << 1: %d\n", a << 1);
printf("a >> 1: %d\n", a >> 1);
return 0;
}
实例19:宏定义
宏定义是C语言中的一种预处理器指令,用于定义宏。以下是一个使用宏定义的例子:
#include <stdio.h>
#define PI 3.14159
int main() {
float area = PI * 4 * 4;
printf("The area of a circle is %.2f.\n", area);
return 0;
}
实例20:预处理指令
预处理指令是C语言中的一种特殊指令,用于在编译前处理源代码。以下是一个使用预处理指令的例子:
#include <stdio.h>
#define MAX_SIZE 10
int main() {
int numbers[MAX_SIZE];
for (int i = 0; i < MAX_SIZE; i++) {
numbers[i] = i + 1;
}
for (int i = 0; i < MAX_SIZE; i++) {
printf("%d\n", numbers[i]);
}
return 0;
}
实例21:条件编译
条件编译是C语言中的一种预处理指令,用于根据条件编译不同的代码块。以下是一个使用条件编译的例子:
#include <stdio.h>
#define DEBUG
int main() {
#ifdef DEBUG
printf("Debug mode is enabled.\n");
#else
printf("Debug mode is disabled.\n");
#endif
return 0;
}
实例22:文件包含
文件包含是C语言中的一种预处理指令,用于将一个文件包含到另一个文件中。以下是一个使用文件包含的例子:
// header.h
#ifndef HEADER_H
#define HEADER_H
int add(int a, int b);
#endif
// main.c
#include "header.h"
int main() {
int result = add(10, 20);
printf("The result is %d.\n", result);
return 0;
}
实例23:宏函数
宏函数是C语言中的一种预处理指令,用于定义一个宏。以下是一个使用宏函数的例子:
#include <stdio.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b))
int main() {
int x = 10;
int y = 20;
printf("The maximum value is %d.\n", MAX(x, y));
return 0;
}
实例24:结构体函数
结构体函数是C语言中的一种函数,它接受结构体类型的参数。以下是一个使用结构体函数的例子:
#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 p1 = {"John Doe", 30};
printPerson(p1);
return 0;
}
实例25:结构体数组和函数
结构体数组和函数可以用于处理结构体数据。以下是一个使用结构体数组和函数的例子:
#include <stdio.h>
struct Person {
char name[50];
int age;
};
void printPeople(struct Person people[], int size) {
for (int i = 0; i < size; i++) {
printf("Name: %s, Age: %d\n", people[i].name, people[i].age);
}
}
int main() {
struct Person people[] = {
{"John Doe", 30},
{"Jane Smith", 25},
{"Alice Johnson", 28}
};
int size = sizeof(people) / sizeof(people[0]);
printPeople(people, size);
return 0;
}
实例26:结构体和指针
结构体和指针可以用于存储和操作结构体数据。以下是一个使用结构体和指针的例子:
#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 p1 = {"John Doe", 30};
printPerson(&p1);
return 0;
}
实例27:结构体指针数组和函数
结构体指针数组和函数可以用于处理结构体数据。以下是一个使用结构体指针数组和函数的例子:
#include <stdio.h>
struct Person {
char name[50];
int age;
};
void printPeople(struct Person *people[], int size) {
for (int i = 0; i < size; i++) {
printf("Name: %s, Age: %d\n", people[i]->name, people[i]->age);
}
}
int main() {
struct Person p1 = {"John Doe", 30};
struct Person p2 = {"Jane Smith", 25};
struct Person *people[] = {&p1, &p2};
int size = sizeof(people) / sizeof(people[0]);
printPeople(people, size);
return 0;
}
实例28:结构体数组和指针数组
结构体数组和指针数组可以用于存储和操作结构体数据。以下是一个使用结构体数组和指针数组的例子:
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person people[] = {
{"John Doe", 30},
{"Jane Smith", 25},
{"Alice Johnson", 28}
};
struct Person *ptrs[3];
for (int i = 0; i < 3; i++) {
ptrs[i] = &people[i];
}
printf("Name: %s, Age: %d\n", ptrs[0]->name, ptrs[0]->age);
printf("Name: %s, Age: %d\n", ptrs[1]->name, ptrs[1]->age);
printf("Name: %s, Age: %d\n", ptrs[2]->name, ptrs[2]->age);
return 0;
}
实例29:结构体和函数指针
结构体和函数指针可以用于将函数作为参数传递给结构体。以下是一个使用结构体和函数指针的例子:
#include <stdio.h>
struct Person {
char name[50];
int age;
void (*print)(struct Person);
};
void printPerson(struct Person p) {
printf("Name: %s, Age: %d\n", p.name, p.age);
}
int main() {
struct Person p1 = {"John Doe", 30, printPerson};
p1.print(p1);
return 0;
}
实例30:结构体指针数组和函数指针
结构体指针数组和函数指针可以用于将函数作为参数传递给结构体指针数组。以下是一个使用结构体指针数组和函数指针的例子:
#include <stdio.h>
struct Person {
char name[50];
int age;
void (*print)(struct Person);
};
void printPerson(struct Person p) {
printf("Name: %s, Age: %d\n", p.name, p.age);
}
int main() {
struct Person p1 = {"John Doe", 30, printPerson};
struct Person p2 = {"Jane Smith", 25, printPerson};
struct Person *people[] = {&p1, &p2};
people[0]->print(*people[0]);
people[1]->print(*people[1]);
return 0;
}
实例31:结构体指针数组和函数指针数组
结构体指针数组和函数指针数组可以用于将函数作为参数传递给结构体指针数组。以下是一个使用结构体指针数组和函数指针数组的例子:
#include <stdio.h>
struct Person {
char name[50];
int age;
void (*print)(struct Person);
};
void printPerson(struct Person p) {
printf("Name: %s, Age: %d\n", p.name, p.age);
}
int main() {
struct Person p1 = {"John Doe", 30, printPerson};
struct Person p2 = {"Jane Smith", 25, printPerson};
struct Person *people[] = {&p1, &p2};
void (*printFuncs[2])(struct Person) = {printPerson, printPerson};
printFuncs[0](*people[0]);
printFuncs[1](*people[1]);
return 0;
}
实例32:结构体指针数组和结构体数组
结构体指针数组和结构体数组可以用于存储和操作结构体数据。以下是一个使用结构体指针数组和结构体数组的例子:
”`c
#include
struct Person {
char name[50];
int age;
};
int main() {
struct Person people[] = {
{"John Doe", 30},
{"Jane Smith", 25},
{"Alice Johnson", 28}
};
struct Person *
