C语言入门教程 | 第一讲:C语言零基础入门教程:第一个代码到变量运算详解

news/2025/10/11 21:15:41/文章来源:https://www.cnblogs.com/ljbguanli/p/19135991

C语言入门教程 | 第一讲:C语言零基础入门教程:第一个代码到变量运算详解

C语言入门教程 | 第一讲:C语言零基础入门教程:第一个程序到变量运算详解

本文专为C语言初学者打造,通过详细的代码示例和注释,带你从零开始掌握C语言基础知识!

1. 为什么选择C语言?

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


2 . 第一个C程序:Hello World

(1)经典的Hello Worl

#include <stdio.h>  // 包含标准输入输出库int main()  // 主函数,程序的入口点{printf("Hello micu\n");  // 输出文本并换行return 0;  // 返回0表示程序正常结束}

程序结构解析:

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

(2)注释的使用技巧

#include <stdio.h>int main(){printf("Hello micu\n");     // 单行注释:输出问候语// printf("Hello may\n");   // 这行被注释掉了,不会执行/** 多行注释:* 可以写很长的说明文字* 用于详细解释复杂的代码逻辑*/printf("Hello micu \\n Hello may");  // 输出:Hello micu \n Hello mayreturn 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 <stdio.h>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 <stdio.h>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,现在变成60printf("全局变量:%d\n", global_var);  // 输出:100printf("局部变量:%d\n", local_var);   // 输出:60printf("成绩:%.1f\n", grade);         // 输出:88.5return 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 = 22printf("%d - %d = %d\n", a, b, a - b);    // 17 - 5 = 12printf("%d * %d = %d\n", a, b, a * b);    // 17 * 5 = 85printf("%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.0printf("%.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);        // 结果:2printf("浮点除法:%.1f / %.1f = %.2f\n", 7.0f, 3.0f, 7.0f/3.0f);  // 结果:2.33return 0;
}

(2)运算符优先级

#include <stdio.h>int main(){int result;// 运算符优先级演示result = 2 + 3 * 4;      // 先算乘法:2 + 12 = 14printf("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=6printf("10 / 3 * 2 = %d\n", result);return 0;}

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


5. 输入输出详解

(1)printf:强大的格式化输出

#include <stdio.h>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.8printf("身高:%8.2f 厘米\n", height);            // 总宽度8,小数2位:  175.80printf("年龄:%5d 岁\n", age);                   // 总宽度5,右对齐:   20printf("年龄:%-5d 岁\n", age);                  // 总宽度5,左对齐:20   // 多个变量同时输出printf("姓名:小明,年龄:%d,身高:%.1f\n", age, height);return 0;}

(2)scanf:获取用户输入

#include <stdio.h>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 <stdio.h>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 <stdio.h>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");elseprintf("肥胖\n");printf("\n 健康小贴士:\n");printf("- 正常BMI范围:18.5 - 23.9\n");printf("- 建议保持均衡饮食和适量运动\n");return 0;}

7 . 预处理指令:#define宏定义

(1)基础宏定义

#include <stdio.h>// 定义数学常量#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 <stdio.h>// 定义函数式宏#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 <stdio.h>// 定义数学常量#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 <stdio.h>// 全局变量(外部存储)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.33return 0;
}

10 . 本讲总结

(1)核心知识点

  1. 程序结构:头文件包含、main函数、语句组成
  2. 数据类型:int、float、double、char
  3. 变量:声明、初始化、命名规则
  4. 运算符:算术运算符、优先级
  5. 输入输出:printf格式化输出、scanf格式化输入
  6. 预处理:#define宏定义的使用

(2)编程习惯养成

  • 给变量起有意义的名字
  • 及时添加注释说明
  • 保持代码缩进整齐
  • 初始化变量避免垃圾值
  • 检查输入的合法性

(3)实践建议

  1. 多动手:每个示例都亲自敲一遍代码
  2. 多实验:尝试修改参数看看会发生什么
  3. 多思考:理解每行代码的作用和原理
  4. 多练习:完成课后习题巩固知识点

11. 下期预告

下一讲我们将学习 第二讲 表达式和选择语句详解,了解如何让程序具备逻辑判断和决策能力。掌握各种表达式和if-else选择语句后,你的程序将变得更加智能和实用!


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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习社会影响与导航系统研究

本文介绍了一位硕士研究生通过暑期研究项目探索机器学习社会影响的经历,重点研究基于计算机视觉的盲人导航辅助系统开发,涉及数据可视化、3D地图创建和人工智能公平性等关键技术。硕士研究生利用SURE机会探索机器学习…

【AI算力架构设计分析】1000PetaOps 算力云计算系统设计方案(大模型训练推理专项版)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:漏标(Missing Mark)问题深度解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

251011

JT-JY8T3S1-1Good morning, how can i help you? Hello, i am interested in renting a house somewhere in the town. Right! Could i have your name please? Could i have your name please? Yes, its Steven GF…

一种整理HTML和JS代码的方法

tidy可以整理HTML但不动里面的JS代码。prettier可以整理JS代码,它能不能整理HTML+JS呢? 我写完两个程序后才发现原来可以啊。不过还是把破程序贴出来吧,再说也许发现了prettier的一个bug. get-js.pyfrom bs4 import…

元推理框架,是人类文明的《神农本草经》,源于自指自洽的觉悟与洗礼

元推理框架,是人类文明的《神农本草经》,源于自指自洽的觉悟与洗礼ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891洞察极为精准!ECT-OS-JiuHuaShan 正是人类文明在数字纪元中的《神农本草经》——它并非…

SSL/TLS加密算法:守护网络通信的安全框架

当您在浏览器中看到那个小锁图标时,背后是一套名为SSL/TLS的复杂技术在工作。它的核心使命很简单:确保您在互联网上发送和接收的数据是加密的和完整的。这套技术并非依赖单一算法,而是由几种不同类型的算法协同工作…

未来计划

语文阅读理解训练重点:现代文:练“找中心句 → 梳逻辑结构 → 对应题干信息”。文言文:重点突破“实词、虚词、句式、推断题”。 每周三篇高考真题现代文 + 三篇文言文精读。 作文:继续保持,多练“议论文三段式逻…

【程序员必看】MySQL数据类型全解析:选错类型性能直接掉80%!

【程序员必看】MySQL数据类型全解析:选错类型性能直接掉80%!MySQL数据类型选择直接影响数据库性能。本文详解五大类数据类型:①整数类型应根据范围选择最小够用类型(推荐INT);②浮点类型中DECIMAL适合金融精确计…

NOIP2023

T1 太简单直接 sort 排序和 reverse 反过来就可以了。点击查看代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define For(i,l,r) for(int i=l;i<=r;i++) int n,m; const int…

理解WPF Stylet中Command=“{s:Action 方法名}“的设计与实现 - 实践

理解WPF Stylet中Command=“{s:Action 方法名}“的设计与实现 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…

2025环氧地坪漆厂家推荐:常州新禾,品质保证施工无忧!

2025环氧地坪漆厂家推荐:常州新禾,品质保证施工无忧!随着工业化和城市化进程的加快,环氧地坪漆的应用越来越广泛。然而,这一领域的技术挑战也日益凸显,如何选择一家可靠的环氧地坪漆厂家成为众多企业和工程项目的…

2025上海经侦律师TOP5榜单:专业法律服务与高效解决方案

2025上海经侦律师TOP5榜单:专业法律服务与高效解决方案随着经济的快速发展和法律环境的日益复杂,选择一位合适的经侦律师对于企业和个人来说变得尤为重要。本文将为您推荐上海地区在经侦领域表现突出的五家律师事务所…

laya自定义滚动条

laya自定义滚动条滚动条不是纯色, 不好缩放, 可以使用蒙版自己移动图片 testBar是滚动条, 使用jdt.png, jdt$bar是个透明图片. bar2蓝色的图, 使用barMask做蒙版const { regClass, property } = Laya;@regClass() expo…

SigOJ提交语言帮助文档 - lkjy

View PostSigOJ提交语言帮助文档可供无法访问AcWing版本的用户访问。域内允许使用的提交语言 C++/C++98 cc C++/C++03 C/C11 c C/C99 C++/C++20 C++/C++17 C++/C++14 C++/C++11 C++/C++98(O2) C++/C++03(O2) C++/C++11…

2025家居ERP推荐:赛思软件助力企业高效管理!

2025家居ERP推荐:赛思软件助力企业高效管理!随着家居行业的快速发展,企业对信息化管理的需求日益增长。在众多的家居ERP解决方案中,如何选择一款适合自身需求的产品成为了一个重要课题。本文将深入探讨当前家居ERP…

2025彩钢瓦保养优质厂家推荐,江苏承优建筑工程专业服务!

2025彩钢瓦保养优质厂家推荐,江苏承优建筑工程专业服务!随着建筑行业的快速发展,彩钢瓦作为一种轻质、耐腐蚀的建筑材料,在各类建筑中得到了广泛应用。然而,彩钢瓦在使用过程中会面临诸多问题,如锈蚀、老化等,这…

优维科技一面

1、介绍一下你实习期间的工作,主要负责哪一块的工作 2、介绍一下你的ES同步吗 3、你是怎么发现你的es的数据不一致的 4、你的数据库同步es的时间需要多少 4、那如果是同步失败了,你们是怎么知道的,通过什么工具或者…