C 教程

C 教程 C 语言简介 C 下载安装和环境配置 C 快速入门 C 语法 C 输出 C 注释 C 变量 C 数据类型 C 常量 C 运算符 C 布尔值 C If...Else 语句 C Switch 语句 C While 循环 C For 循环 C Break/Continue 语句 C 数组 C 字符串 C 用户输入 C 内存地址 C 指针

C 函数

C 函数 C 函数参数 C 作用域 C 函数声明 C 递归 C 数学函数

C 文件

C 创建文件 C 写入文件 C 读取文件

C 结构体

C 结构体 C 嵌套结构体 C 结构体和指针 C 联合体 C typedef

C 枚举

C 枚举

C 内存

C 内存管理

C 错误

C 错误 C 调试 C 空值 C 错误处理 C 输入验证

C 更多

C 日期 C 随机数 C 宏 C 代码组织 C 存储类 C 位运算符 C 固定宽度整数

C 项目

C 项目

C 参考资料

C 参考资料 C 关键词 C <stdio.h> C <stdlib.h> C <string.h> C <math.h> C <ctype.h> C <time.h>

C 标准库参考

C 标准库 - 参考手册 C 标准库 - <assert.h> C 标准库 - <ctype.h> C 标准库 - <errno.h> C 标准库 - <float.h> C 标准库 - <limits.h> C 标准库 - <locale.h> C 标准库 - <math.h> C 标准库 - <setjmp.h> C 标准库 - <signal.h> C 标准库 - <stdarg.h> C 标准库 - <stddef.h> C 标准库 - <stdio.h> C 标准库 - <stdlib.h> C 标准库 - <string.h> C 标准库 - <time.h>

C 实例

C 语言实例 C 经典100例 C 编译器 C 测验


C 现实示例

实用案例

本页包含一系列在实际项目中使用的实用案例。


变量和数据类型

示例

使用变量存储大学生的不同数据:

// Student data
int studentID = 15;
int studentAge = 23;
float studentFee = 75.25;
char studentGrade = 'B';

// 打印变量
printf("Student id: %d", studentID);
printf("Student age: %d", studentAge);
printf("Student fee: %f", studentFee);
printf("Student grade: %c", studentGrade);
亲自试一试 »

示例

计算矩形的面积(长乘以宽):

// 创建整型变量
int length = 4;
int width = 6;
int area;

// 计算矩形的面积
area = length * width;

// 打印此变量
printf("Length is: %d", length);
printf("Width is: %d", width);
printf("Area of the rectangle is: %d", area);
亲自试一试 »

示例

使用不同的数据类型计算并输出多个物品的总成本:

// 创建不同数据类型的变量
int items = 50;
float cost_per_item = 9.99;
float total_cost = items * cost_per_item;
char currency = '$';

// 打印变量
printf("Number of items: %d", items);
printf("Cost per item: %.2f %c", cost_per_item, currency);
printf("Total cost = %.2f %c", total_cost, currency);
亲自试一试 »

示例

计算用户在游戏中得分占最高分的百分比:

// 将游戏中的最高可能得分设置为 500 分。
int maxScore = 500;

// 用户的实际得分
int userScore = 423;

// 计算用户得分占最高可用得分的百分比
float percentage = (float) userScore / maxScore * 100.0;

// 打印百分比
printf("User's percentage is %.2f", percentage);
亲自试一试 »

有关 C 语言中变量和数据类型的教程,请访问变量章节和数据类型章节。


布尔值

示例

判断一个人是否达到投票年龄:

int myAge = 25;
int votingAge = 18;

printf("%d", myAge >= votingAge); // 返回 1(真),意味着 25 岁的人可以投票!
亲自试一试 »

您还可以将上面的代码包裹在 if...else 中,以便根据结果执行不同的操作:

示例

如果 myAge 大于或等于 18,则输出"已达到投票年龄!"。否则,输出"未达到投票年龄。":

int myAge = 25;
int votingAge = 18;

if (myAge >= votingAge) {
  printf("Old enough to vote!");
} else {
  printf("Not old enough to vote.");
}
亲自试一试 »

有关 C 语言布尔值的教程,请访问布尔值章节。


条件语句(If...Else)

示例

使用 if...else 语句根据当前时间输出一些文本:

int time = 20;
if (time < 18) {
  printf("Good day.");
} else {
  printf("Good evening.");
}
亲自试一试 »

示例

检查用户是否输入了正确的验证码:

int doorCode = 1337;

if (doorCode == 1337) {
  printf("Correct code.The door is now open.");
} else {
  printf("Wrong code.The door remains closed.");
}
亲自试一试 »

示例

判断一个数是正数还是负数:

int myNum = 10;

if (myNum > 0) {
  printf("The value is a positive number.");
} else if (myNum < 0) {
  printf("The value is a negative number.");
} else {
  printf("The value is 0.");
}
亲自试一试 »

示例

查询某人是否达到投票年龄:

int myAge = 25;
int votingAge = 18;

if (myAge >= votingAge) {
  printf("Old enough to vote!");
} else {
  printf("Not old enough to vote.");
}
亲自试一试 »

示例

判断一个数是奇数还是偶数:

int myNum = 5;

if (myNum % 2 == 0) {
  printf("%d is even.", myNum);
} else {
  printf("%d is odd.", myNum);
}
亲自试一试 »

有关 C 语言条件语句的教程,请访问If..Else 章节。


Switch

示例

使用星期几编号计算并输出星期几名称:

int day = 4;

switch (day) {
  case 1:
    printf("Monday");
    break;
  case 2:
    printf("Tuesday");
    break;
  case 3:
    printf("Wednesday");
    break;
  case 4:
    printf("Thursday");
    break;
  case 5:
    printf("Friday");
    break;
  case 6:
    printf("Saturday");
    break;
  case 7:
    printf("Sunday");
    break;
}
亲自试一试 »

有关 C 语言中 switch 语句的教程,请访问switch 语句章节。


While 循环

示例

使用 while 循环创建一个简单的"倒计时"程序:

int countdown = 3;

while (countdown > 0) {
  printf("%d", countdown);
  countdown--;
}

printf("Happy New Year!! ");
亲自试一试 »

示例

Use a while loop to play a game of Yatzy:

int dice = 1;

while (dice <= 6) {
  if (dice < 6) {
    printf("No Yatzy ");
  } else {
    printf("Yatzy! ");
  }
  dice = dice + 1;
}
亲自试一试 »

示例

使用 while 循环反转一些数字:

// 一个包含一些特定数字的变量
int numbers = 12345;

// 用于存储反转数字的变量
int revNumbers = 0;

// 反转并重新排列数字
while (numbers) {
  // 获取"numbers"的最后一个数字并将其添加到"revNumber"中。
  revNumbers = revNumbers * 10 + numbers % 10;
  // 移除 numbers 的最后一个数字。
  numbers /= 10;
}
亲自试一试 »

有关 C 语言中 while 循环的教程,请访问while 循环章节。


for 循环

示例

使用 for 循环创建一个程序,该程序只打印 0 到 10 之间的偶数:

int i;

for (i = 0; i <= 10; i = i + 2) {
  printf("%d", i);
}
亲自试一试 »

示例

使用 for 循环编写一个程序,以 10 为单位计数到 100:

for (i = 0; i <= 100; i += 10) {
  printf("%d", i);
}
亲自试一试 »

示例

使用 for 循环打印 2 的幂次方,直到 512:

for (i = 2; i <= 512; i *= 2) {
  printf("%d", i);
}
亲自试一试 »

示例

使用 for 循环创建一个程序,打印指定数字(本例中为 2)的乘法表:

int number = 2;
int i;

// 打印数字 2 的乘法表。
for (i = 1; i <= 10; i++) {
  printf("%d x %d = %d", number, i, number * i);
}

return 0;
亲自试一试 »

有关 C 语言 for 循环的教程,请访问for 循环章节。


数组

示例

创建一个程序来计算不同年龄的平均值:

// 一个存储不同年龄段的数组
int ages[] = {20, 22, 18, 35, 48, 26, 87, 70};

float avg, sum = 0;
int i;

// 获取数组的长度
int length = sizeof(ages) / sizeof(ages[0]);

// 遍历数组的元素
for (int i = 0; i < length; i++) {
  sum += ages[i];
}

// 计算平均值的方法是将总和除以长度。
avg = sum / length;

// 打印平均值
printf("The average age is: %.2f", avg);
亲自试一试 »

示例

编写一个程序,找出不同年龄段中的最小年龄:

// 一个存储不同年龄段的数组
int ages[] = {20, 22, 18, 35, 48, 26, 87, 70};

// 获取数组的长度
int length = sizeof(ages) / sizeof(ages[0]);

// 创建一个变量,并将年龄数组的第一个元素赋值给它。
int lowestAge = ages[0];

// 遍历年龄数组的元素,找到最小的年龄
for (int i = 0; i < length; i++) {
  if (lowestAge > ages[i]) {
    lowestAge = ages[i];
  }
}
亲自试一试 »

有关 C 语言数组的教程,请访问数组章节。


字符串

示例

使用字符串创建简单的欢迎信息:

char message[] = "Good to see you,";
char fname[] = "John";

printf("%s %s!", message, fname);
亲自试一试 »

示例

编写一个程序,统计指定单词中包含的字符数:

char word[] = "Computer";
printf("The word '%s' has %d characters in it.", word, strlen(word));
亲自试一试 »

有关 C 语言字符串的教程,请访问字符串章节。


用户输入

示例

获取用户名并打印出来:

char fullName[30];

printf("Type your full name: ");
fgets(fullName, sizeof(fullName), stdin);

printf("Hello %s", fullName);
运行示例 »

For a tutorial about user input in C, visit our User Input Chapter.


Functions

示例

使用函数创建一个程序,将华氏温度值转换为摄氏度:

// 将华氏度转换为摄氏度的函数
float toCelsius(float fahrenheit) {
  return (5.0 / 9.0) * (fahrenheit - 32.0);
}

int main() {
  // 设置华氏度值
  float f_value = 98.8;

  // 调用该函数并传入华氏温度值。
  float result = toCelsius(f_value);

  // 打印华氏温度值
  printf("Fahrenheit: %.2f", f_value);

  // 打印结果
  printf("Convert Fahrenheit to Celsius: %.2f", result);

  return 0;
}
亲自试一试 »

有关 C 语言函数的教程,请访问函数章节。


结构体

示例

使用结构体存储和输出有关汽车的不同信息:

struct Car {
  char brand[50];
  char model[50];
  int year;
};

int main() {
  struct Car car1 = {"BMW", "X5", 1999};
  struct Car car2 = {"Ford", "Mustang", 1969};
  struct Car car3 = {"Toyota", "Corolla", 2011};

  printf("%s %s %d", car1.brand, car1.model, car1.year);
  printf("%s %s %d", car2.brand, car2.model, car2.year);
  printf("%s %s %d", car3.brand, car3.model, car3.year);

  return 0;
}
亲自试一试 »

有关 C 语言结构体的教程,请访问结构体章节。


Memory Management

示例

struct list {
  int *data; // 指向存储列表项的内存位置。
  int numItems; // 指示列表中当前有多少个项目
  int size; // 表示分配的内存可以容纳多少个项目
};

void addToList(struct list *myList, int item);

int main() {
  struct list myList;
  int amount;

  // 创建一个清单,并预留足够的空间容纳 10 项内容。
  myList.numItems = 0;
  myList.size = 10;
  myList.data = malloc(myList.size * sizeof(int));

  // 确定内存分配是否成功
  if (myList.data == NULL) {
    printf("Memory allocation failed");
    return 1; // 程序退出并返回错误代码
  }

  // 向列表中添加任意数量的项目,数量由 amount 变量指定。
  amount = 44;
  for (int i = 0; i < amount; i++) {
    addToList(&myList, i + 1);
  }

  // 显示列表内容
  for (int j = 0; j < myList.numItems; j++) {
    printf("%d ", myList.data[j]);
  }

  // 不再需要内存时,请释放内存。
  free(myList.data);
  myList.data = NULL;

  return 0;
}

// 此函数向列表中添加项目
void addToList(struct list *myList, int item) {

  // 如果列表已满,则调整内存大小以容纳另外 10 个项目。
  if (myList->numItems == myList->size) {
    myList->size += 10;
    myList->data = realloc( myList->data, myList->size * sizeof(int) );
  }

  // 将该项添加到列表末尾
  myList->data[myList->numItems] = item;
  myList->numItems++;
}
亲自试一试 »

有关 C 语言内存管理的教程,请访问内存管理章节。


随机数

示例

随机数在现实生活中的一个常见应用是掷六面骰子。我们可以使用rand() % 6来模拟这个过程,先得到 0 到 5 之间的数字,然后加 1 得到 1 到 6 之间的数字范围:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
  srand(time(NULL));

  int dice1 = (rand() % 6) + 1;
  int dice2 = (rand() % 6) + 1;
  printf("You rolled %d and %d (total = %d)", dice1, dice2, dice1 + dice2);

  return 0;
}

亲自试一试 »

每次运行程序,你都会得到两个介于 1 和 6 之间的随机数,就像现实生活中掷两个骰子一样。

有关 C 语言中随机数的教程,请访问随机数章节。