C语言入门教程

C语言入门教程 | 第一讲:C语言零基础入门教程:第一个程序到变量运算详解 本文专为C语言初学者打造,通过详细的代码示例和注释,带你从零开始掌握C语言基础知识!

1. 为什么选择C语言?C语言被誉为"编程语言之母",学好C语言就像练武先练基本功一样重要。它不仅能让你理解计算机的底层工作原理,还是学习其他编程语言的坚实基础。无论你将来想做游戏开发、嵌入式系统还是系统编程,C语言都是必不可少的技能!

2 . 第一个C程序:Hello World(1)经典的Hello Worl

#include // 包含标准输入输出库

int main() // 主函数,程序的入口点

{

printf("Hello micu\n"); // 输出文本并换行

return 0; // 返回0表示程序正常结束

}

程序结构解析:

#include :这是预处理指令,告诉编译器包含标准输入输出库int main():主函数,每个C程序都必须有且只能有一个main函数{}:函数体的开始和结束标志printf():格式化输出函数,用于在屏幕上显示内容\n:转义字符,表示换行return 0:函数返回值,0通常表示程序执行成功(2)注释的使用技巧

#include

int main()

{

printf("Hello micu\n"); // 单行注释:输出问候语

// printf("Hello may\n"); // 这行被注释掉了,不会执行

/*

* 多行注释:

* 可以写很长的说明文字

* 用于详细解释复杂的代码逻辑

*/

printf("Hello micu \\n Hello may"); // 输出:Hello micu \n Hello may

return 0;

}

注释最佳实践:

用单行注释解释单行代码的作用用多行注释解释复杂的算法或业务逻辑注释要简洁明了,避免显而易见的说明3. ️ 变量:程序的数据容器(1)基本数据类型详解整型(int)

int age = 25; // 存储整数,通常占4个字节

int temperature = -10; // 可以存储负数

int count = 0; // 初始化为0

浮点型(float)

float height = 175.5f; // 存储小数,f后缀表示float类型

float weight = 65.8f; // 精度约为6-7位有效数字

float pi = 3.14159f; // 常用于科学计算

双精度浮点型(double)

double precise_pi = 3.141592653589793; // 更高精度的小数

double distance = 384400.0; // 地球到月球的距离(公里)

(2)变量命名规则与最佳实践

#include

int main()

{

// ✅ 正确的变量名

int student_age; // 使用下划线分隔单词

float totalScore; // 驼峰命名法

int count1, count2; // 可以包含数字

char _temp; // 可以以下划线开头

// ❌ 错误的变量名示例(这些会编译错误)

// int 2count; // 不能以数字开头

// int int; // 不能使用关键字

// int student-age; // 不能使用连字符

// int student age; // 不能包含空格

// 推荐的命名风格

int studentAge = 20; // 驼峰命名法(推荐)

float average_score = 85.5f; // 下划线命名法

return 0;

}

命名建议:

使用有意义的变量名,如 studentAge 而不是 sa保持命名风格一致性常量通常用大写字母,如 MAX_SIZE(3)变量的声明与初始化

#include

int global_var = 100; // 全局变量,在整个程序中可见

int main()

{

// 声明并初始化(推荐方式)

int local_var = 50;

float grade = 88.5f;

// 先声明后赋值

int number;

number = 42;

// 一次声明多个变量

int x = 1, y = 2, z = 3;

// 修改变量值

local_var = 60; // 原来是50,现在变成60

printf("全局变量:%d\n", global_var); // 输出:100

printf("局部变量:%d\n", local_var); // 输出:60

printf("成绩:%.1f\n", grade); // 输出:88.5

return 0;

}

4. 算术运算符详解(1)基本运算符实战

#include

int main()

{

int a = 17, b = 5; // 定义两个整数

float x = 17.0f, y = 5.0f; // 定义两个浮点数

// 整数运算

printf("=== 整数运算 ===\n");

printf("%d + %d = %d\n", a, b, a + b); // 17 + 5 = 22

printf("%d - %d = %d\n", a, b, a - b); // 17 - 5 = 12

printf("%d * %d = %d\n", a, b, a * b); // 17 * 5 = 85

printf("%d / %d = %d\n", a, b, a / b); // 17 / 5 = 3(整数除法)

printf("%d %% %d = %d\n", a, b, a % b); // 17 % 5 = 2(取余)

// 浮点数运算

printf("\n=== 浮点数运算 ===\n");

printf("%.1f + %.1f = %.1f\n", x, y, x + y); // 17.0 + 5.0 = 22.0

printf("%.1f / %.1f = %.2f\n", x, y, x / y); // 17.0 / 5.0 = 3.40

// 混合运算的注意事项

printf("\n=== 混合运算 ===\n");

printf("整数除法:%d / %d = %d\n", 7, 3, 7/3); // 结果:2

printf("浮点除法:%.1f / %.1f = %.2f\n", 7.0f, 3.0f, 7.0f/3.0f); // 结果:2.33

return 0;

}

(2)运算符优先级

#include

int main()

{

int result;

// 运算符优先级演示

result = 2 + 3 * 4; // 先算乘法:2 + 12 = 14

printf("2 + 3 * 4 = %d\n", result);

result = (2 + 3) * 4; // 括号优先:5 * 4 = 20

printf("(2 + 3) * 4 = %d\n", result);

result = 10 / 3 * 2; // 从左到右:10/3=3, 3*2=6

printf("10 / 3 * 2 = %d\n", result);

return 0;

}

优先级记忆口诀: 括号最高,乘除其次,加减最后,同级从左到右。

5. 输入输出详解(1)printf:强大的格式化输出

#include

int main()

{

int age = 20;

float height = 175.8f;

char grade = 'A';

// 基本格式化输出

printf("年龄:%d 岁\n", age); // %d:整数

printf("身高:%f 厘米\n", height); // %f:浮点数

printf("成绩等级:%c\n", grade); // %c:字符

// 控制输出格式

printf("身高:%.1f 厘米\n", height); // 保留1位小数:175.8

printf("身高:%8.2f 厘米\n", height); // 总宽度8,小数2位: 175.80

printf("年龄:%5d 岁\n", age); // 总宽度5,右对齐: 20

printf("年龄:%-5d 岁\n", age); // 总宽度5,左对齐:20

// 多个变量同时输出

printf("姓名:小明,年龄:%d,身高:%.1f\n", age, height);

return 0;

}

(2)scanf:获取用户输入

#include

int main()

{

int age;

float weight;

char initial;

// 单个变量输入

printf("请输入您的年龄:");

scanf("%d", &age); // 注意:变量前必须加&符号

printf("请输入您的体重(kg):");

scanf("%f", &weight);

printf("请输入您的姓名首字母:");

scanf(" %c", &initial); // 注意:%c前面有个空格,用来跳过换行符

// 多个变量同时输入

printf("请输入身高和年龄(用空格分隔):");

float height;

int new_age;

scanf("%f %d", &height, &new_age);

// 输出结果

printf("\n=== 您的信息 ===\n");

printf("年龄:%d 岁\n", age);

printf("体重:%.1f 公斤\n", weight);

printf("姓名首字母:%c\n", initial);

printf("身高:%.1f 厘米,年龄:%d 岁\n", height, new_age);

return 0;

}

scanf使用要点:

变量前必须加&取地址符输入多个值时用空格、回车或制表符分隔字符输入前加空格可以跳过前面的空白字符6. 综合实战项目(1)项目1:智能计算器

#include

int main()

{

float num1, num2, result;

char operator;

printf("=== 简单计算器 ===\n");

printf("请输入第一个数字:");

scanf("%f", &num1);

printf("请输入运算符(+、-、*、/):");

scanf(" %c", &operator); // 注意空格

printf("请输入第二个数字:");

scanf("%f", &num2);

// 根据运算符进行计算

switch(operator)

{

case '+':

result = num1 + num2;

printf("%.2f + %.2f = %.2f\n", num1, num2, result);

break;

case '-':

result = num1 - num2;

printf("%.2f - %.2f = %.2f\n", num1, num2, result);

break;

case '*':

result = num1 * num2;

printf("%.2f * %.2f = %.2f\n", num1, num2, result);

break;

case '/':

if(num2 != 0) // 检查除零错误

{

result = num1 / num2;

printf("%.2f / %.2f = %.2f\n", num1, num2, result);

}

else

{

printf("错误:除数不能为零!\n");

}

break;

default:

printf("错误:不支持的运算符!\n");

}

return 0;

}

(2)项目2:BMI健康指数计算器

#include

int main()

{

float weight, height, bmi;

printf("=== BMI健康指数计算器 ===\n");

printf("请输入您的体重(公斤):");

scanf("%f", &weight);

printf("请输入您的身高(米):");

scanf("%f", &height);

// 计算BMI:体重(kg) / 身高(m)²

bmi = weight / (height * height);

printf("\n=== 计算结果 ===\n");

printf("您的BMI指数为:%.2f\n", bmi);

// 健康状况判断

printf("健康状况:");

if(bmi < 18.5)

printf("偏瘦\n");

else if(bmi < 24.0)

printf("正常\n");

else if(bmi < 28.0)

printf("偏胖\n");

else

printf("肥胖\n");

printf("\n 健康小贴士:\n");

printf("- 正常BMI范围:18.5 - 23.9\n");

printf("- 建议保持均衡饮食和适量运动\n");

return 0;

}

7 . 预处理指令:#define宏定义(1)基础宏定义

#include

// 定义数学常量

#define PI 3.14159f

#define E 2.71828f

// 定义程序常量

#define MAX_STUDENTS 100

#define PASSING_GRADE 60

// 定义字符串常量

#define SCHOOL_NAME "清华大学"

#define VERSION "v1.0"

int main()

{

float radius = 5.0f;

float area, circumference;

// 使用宏定义的常量

area = PI * radius * radius;

circumference = 2 * PI * radius;

printf("=== 圆形计算器 %s ===\n", VERSION);

printf("学校:%s\n", SCHOOL_NAME);

printf("半径:%.1f\n", radius);

printf("面积:%.2f\n", area);

printf("周长:%.2f\n", circumference);

printf("最大学生数:%d\n", MAX_STUDENTS);

printf("及格分数:%d\n", PASSING_GRADE);

return 0;

}

(2)函数式宏定义

#include

// 定义函数式宏

#define SQUARE(x) ((x) * (x)) // 计算平方

#define MAX(a,b) ((a) > (b) ? (a) : (b)) // 求最大值

#define MIN(a,b) ((a) < (b) ? (a) : (b)) // 求最小值

#define ABS(x) ((x) < 0 ? -(x) : (x)) // 求绝对值

int main()

{

int num1 = 5, num2 = -3;

float x = 2.5f;

printf("=== 宏函数演示 ===\n");

printf("%d 的平方 = %d\n", num1, SQUARE(num1));

printf("%.1f 的平方 = %.2f\n", x, SQUARE(x));

printf("%d 和 %d 的最大值 = %d\n", num1, num2, MAX(num1, num2));

printf("%d 的绝对值 = %d\n", num2, ABS(num2));

return 0;

}

宏定义的优点:

提高代码可读性便于维护和修改在编译时进行文本替换,效率高8. 终极挑战:多功能几何计算器

#include

// 定义数学常量

#define PI 3.14159f

// 定义功能宏

#define SQUARE(x) ((x) * (x))

#define CUBE(x) ((x) * (x) * (x))

int main()

{

int choice;

float length, width, height, radius;

float area, volume, perimeter;

printf("=== 多功能几何计算器 ===\n");

printf("1. 长方形面积和周长\n");

printf("2. 长方体体积\n");

printf("3. 圆形面积和周长\n");

printf("4. 球体体积\n");

printf("请选择功能(1-4):");

scanf("%d", &choice);

switch(choice)

{

case 1: // 长方形计算

printf("\n=== 长方形计算 ===\n");

printf("请输入长度:");

scanf("%f", &length);

printf("请输入宽度:");

scanf("%f", &width);

area = length * width;

perimeter = 2 * (length + width);

printf("长方形面积:%.2f\n", area);

printf("长方形周长:%.2f\n", perimeter);

break;

case 2: // 长方体计算

printf("\n=== 长方体计算 ===\n");

printf("请输入长度:");

scanf("%f", &length);

printf("请输入宽度:");

scanf("%f", &width);

printf("请输入高度:");

scanf("%f", &height);

volume = length * width * height;

printf("长方体体积:%.2f\n", volume);

break;

case 3: // 圆形计算

printf("\n=== 圆形计算 ===\n");

printf("请输入半径:");

scanf("%f", &radius);

area = PI * SQUARE(radius); // 使用宏函数

perimeter = 2 * PI * radius;

printf("圆形面积:%.2f\n", area);

printf("圆形周长:%.2f\n", perimeter);

break;

case 4: // 球体计算

printf("\n=== 球体计算 ===\n");

printf("请输入半径:");

scanf("%f", &radius);

volume = (4.0f / 3.0f) * PI * CUBE(radius); // V = 4/3 * π * r³

printf("球体体积:%.2f\n", volume);

break;

default:

printf("❌ 无效选择!请输入1-4之间的数字。\n");

}

printf("\n感谢使用几何计算器!\n");

return 0;

}

9. 扩展知识点(1)变量的存储类别

#include

// 全局变量(外部存储)

int global_count = 0;

int main()

{

// 局部变量(自动存储)

int local_var = 10;

// 静态局部变量(保持值)

static int static_var = 0;

static_var++;

printf("全局变量:%d\n", global_count);

printf("局部变量:%d\n", local_var);

printf("静态变量:%d\n", static_var);

return 0;

}

(2)常见编程错误及解决方案

#include

int main()

{

int num;

// ❌ 常见错误1:忘记初始化变量

// printf("%d\n", num); // 可能输出垃圾值

// ✅ 正确做法:初始化变量

num = 0; // 或者在声明时初始化:int num = 0;

printf("初始化后的值:%d\n", num);

// ❌ 常见错误2:整数除法精度丢失

int a = 7, b = 3;

printf("整数除法:%d / %d = %d\n", a, b, a/b); // 输出:2

// ✅ 正确做法:使用浮点数

printf("浮点除法:%d / %d = %.2f\n", a, b, (float)a/b); // 输出:2.33

return 0;

}

10 . 本讲总结(1)核心知识点程序结构:头文件包含、main函数、语句组成数据类型:int、float、double、char变量:声明、初始化、命名规则运算符:算术运算符、优先级输入输出:printf格式化输出、scanf格式化输入预处理:#define宏定义的使用(2)编程习惯养成给变量起有意义的名字及时添加注释说明保持代码缩进整齐初始化变量避免垃圾值检查输入的合法性(3)实践建议多动手:每个示例都亲自敲一遍代码多实验:尝试修改参数看看会发生什么多思考:理解每行代码的作用和原理多练习:完成课后习题巩固知识点11. 下期预告下一讲我们将学习 第二讲 表达式和选择语句详解,了解如何让程序具备逻辑判断和决策能力。掌握各种表达式和if-else选择语句后,你的程序将变得更加智能和实用!

如果这篇教程对你有帮助,别忘了点赞收藏分享!

有问题欢迎在评论区讨论,我们一起进步!