编程入门代码练习:C语言必背10个简单例子

阿木 发布于 20 小时前 3 次阅读


学C语言最为痛苦的并非是语法很难理解,不过是看了许久的书,然而却写不出能够运行的程序。下面可有8个带有注释的代码示例,它们能够让你直接着手去敲键盘,而每个例子都是你今天晚上便能够在电脑上加以验证的。

Hello World不仅是打个招呼

对于刚刚开始学习C语言的人来讲,常常搞不明白为何首个课程老是打印Hello World。这个看上去挺简单的程序,实际上是针对编译器、链接器以及运行环境的全面测试。到了2026年,依旧有超过40%的国内高校计算机专业把这个例子用作首个学期的第一段代码。

你于Visual Studio Code或者Dev-C++当中敲打出这几行,按下F11,当控制台跳出那行英文之际,意味着你的开发环境已然完全就绪。好多人在装环境阶段便放弃了,然而这个例子能够帮你确认每一步均未做错。

printf这个标准输出函数于此处首次登场,分号置于句尾的这般习惯是在这里刚刚开始要去逐步形成的。return 0好似是在跟那个操作系统表达“我已完成相关任务,所有状况都顺畅”。

变量是装数据的盒子

向系统申请一块内存空间的行为称为定义变量,Int age = 25意味着告诉编译器:有一个存放整数的盒子,里面放置的是25。Float与char分别对应小数及单个字符,2026年出版的C语言教材仍然借助这三种基本类型开展入门教学。

在控制台进行打印的时候,像那%d、%f、%c这些占位符,是必须要和变量类型一个一个对应起来的。我可是见到过好多好多大一的新生,他们把float类型的变量,用%d去进行打印,最后,输出出来的便是一串让人摸不着头脑、稀里糊涂的数字。这可不是你写错了,而是计算机根本就不晓得该怎么去解释那一串二进制代码。

变量名最好起得具备意义,像age、height、initial这类名字,过两周再回头去看,依旧能够理解,然而a、b、c这类名字,三个月之后,就连你自身都得去猜测。

条件判断让程序有脑子

程序做决策之处在于if语句,年龄满18岁时打印成年,否则打印未成年,此二元判断贯穿所有业务逻辑,2025年某招聘平台的统计表明,条件判断相关的笔试题出错率仍在35%以上。

初学者常常犯错误,这个错误是把赋值号也就是=当成等号去使用。if (age = 18)这样的语句,其语法是没有错误的,然而它所进行的是赋值操作,而并非比较操作,并且它会因为赋值操作而永远呈现为真的情况。正确的用于比较的方式应该使用双等号==,这是每一个学习C语言的人都会不小心踩进去的坑。

即便那花括号{}哪怕仅仅只存在一行语句居然还是建议把它写上,在二零二四年于GitHub之上被开源出来的C项目当中有着超过百分之七十的项目通通都坚守这个习惯。它能够防止在后续添加代码之时由于忘掉添加括号进而引发的逻辑错误。

循环让重复劳动变简单

处理重复任务存在两把刀,一把是for循环,另一把是while循环。有一种写法是for (i = 0; i < 5; i++),它将初始化、条件判断以及步进更新全都写在了同一行,会循环5次去打印计数。在2026年嵌入式开发的面试题当中,这类基础循环的考察频率依旧排在前三位。

当处于while循环时,它更像是在等待着某个条件能够满足成立,count是初始值从0开始,每一次都进行加1的操作,一直持续到其值不小于5方可停下。要是你把count++给忘掉没写,那么循环将会无休止地一直运行下去,程序就此陷入卡顿僵死状态。而这种无限循环所引发的bug,每年都会耗费全球程序员数量众多的加班夜晚。

循环里头,数组遍历属于特别典型的应用场景。算数组元素个数呢,使的是sizeof(numbers)/sizeof(numbers[0]),这般写法差不多成了有像C语言身份证一样的那种存在了。

函数是代码的积木块

将一段功能整理为函数,这意思是往后你无需再次书写同样的代码。add函数接纳两个整数,给出它们的和,调用的时候传递3和5进去,得到8 returned。这种模块化思考从C语言起始构建。

做事但不返回值的void greet函数,其职责在于打印问候语。在2025年,杭州的某家互联网公司所进行的代码审查当中发现,新人编写的函数普遍时长超过200行,然而老员工却会将功能分解为十几个小函数,并且每个小函数的行数均不足30行。

函数通信的方式体现为参数传递以及返回值,main函数作为整个程序的入口,它会返回0给操作系统,以此表示正常结束,众多Linux服务程序会依据这个返回值,来判断上一次运行是不是成功。

指针是C语言的灵魂

该行代码“int ptr = &value”所蕴含的意义为:宣告一个指针变量,其中所存储的乃是value的地址。星号于声明之际意味着这是一个指针,于使用之时意味着获取该地址中所存储的值。

指针最难领会之处在于它具备两张面孔,ptr所指的是地址,而*ptr所指的是存储在该地址里的数字。在2026年自学编程的那群人与其中,有超过半数的人在指针这儿卡住了至少一周时间。然而一旦想明白,你便能够领会C语言为何能够直接对内存进行操作了。

在进行打印操作时,专门用于输出地址的是%p,而地址一般来讲是一串呈现为十六进制数的内容。指针使得C语言相较于其他高级语言,更加靠拢硬件,这同样是它于操作系统以及嵌入式领域之中,不能够被替代的缘由所在。

结构体把相关数据捆一起

由 struct Student 将姓名以及年龄组合成一个完整的整体,先前你得依靠两个彼此独立的变量 name 跟 age,然而现在可凭借一个 student 变量来涵盖这两项内容。在 2025 年于某所 985 高校举行的 C 语言期末考当中,与结构体相关的题目其平均得分率仅仅只有 61%。

当去访问结构体成员之时要用点号,比如student.name以及student.age。这样的一种组合数据类型乃是你接触面向对象思想前行的序曲,尽管C语言不存在类以及对象,然而结构体已然将数据聚合的概念传递给你了。

数组能够与结构体开展嵌套运用,结构体之中能够放置数组,还能够放置另外一个结构体,复杂数据的组织能力便是根据这般一层一层构建起来的。

文件操作让数据持久化

程序运行结束之后内存便被清空,然而硬盘之上的文件却不会丢失。fopen是以用以写的模式去打开相应文件,fprintf是往里面撰写写入内容,fclose是用来关闭该文件。此这三个步骤缺一不可,到了2026年居然还有程序员会忘记关闭文件从而引起导致内存泄漏。

当进行文件读取操作时,需要去查验文件指针是否确实为NULL。硬盘之中的文件存在着各种各样未意料到的状况,诸如可能被删除掉了,或者权限方面存在不足,又大概磁盘已然处于满溢状态,而这当中的任何一种情形都将会致使文件打开操作遭遇失败。要是倘若不做检查就直接去进行读取,那么程序便会出现崩溃的状况。

在处理文本文件时,fgets逐行读取属于标准作为,需指定缓冲区大小,并从而避免读入的数据撑爆数组;建立这些防御性编程语言习惯,是从文件操作这个章节起始的。

此刻,你手头有没有电脑?在那上面随意选一个示例,开启IDE去完整敲上一回,并非一定要全然明白,先让它能够运行起来。这8段代码里面,你亲自去敲过几段了?在评论区告知我。