
文章目录前言C语言主函数常见函数printf函数scanf函数其余函数简介字符以及字符串字符以及ASCII编码字符串转义字符[转义字符详细介绍](https://zh.cppreference.com/w/c/language/escape)语句简介五种语句空语句表达式语句函数调用语句复合语句代码块控制语句注释总结学习建议下一步学习方向摘要本文是 C 语言入门的第一篇教程系统介绍了编写 C 程序所需的基础知识。内容包括主函数main作为程序入口printf函数用于屏幕输出支持占位符、宽度与精度控制scanf函数读取用户输入需注意取地址符与空白字符过滤字符以 ASCII 码存储字符串以\0结尾转义字符表示特殊字符C 语言的五种语句类型以及单行与多行注释的写法。文末给出学习建议与下一步学习方向帮助初学者循序渐进地掌握 C 语言。前言这个系列会记录C语言的基本使用方法帮助读者初步了解C语言的使用。C语言主函数任何C语言只能包含一个主函数即main函数作为程序入口代码显示如下intmain(){这里是代码内容return0;//返回一个整数类型的值}常见函数这里会介绍一些函数的简单使用方法详细使用请见后续章节“函数”的文章。printf函数printf是⼀个库函数1它的功能是在标准输出设备⼀般指屏幕上进⾏信息的打印其中f为format格式化可定制输出内容。printf函数需要包含stdio.h头文件printf函数需要在结尾增加分号printf函数不会换行光标停留在生成结束时的地方。所以需要转义字符\n进行换行代码如下#includestdio.h//包含头文件intmain(){printf(Hello World\n);return0;}printf函数中需要使用占位符表示这个位置可以用其他值输入。占位符的第⼀个字符⼀律为百分号%第⼆个字符表⽰占位符的类型。代码示例#includestdio.hintmain(){printf(There are %d apples\n,3);//3表示占据%d的位置return0;}输入文本中可以使用多个占位符。常用占位符2包括%s字符串,%d整型,%c字符型,%f小数,%zusize_t类型等。可点击前文查看占位符类型printf函数能够限定最小宽度代码如下若输入%5d则表示有五位宽度默认为右对齐。若想改为左对齐则可改为%-5d。#includestdio.hintmain(){printf(%5d\n,123);// 输出为 123return0;}对于小数由于小数默认输出小数点后六位输入%12fprintf(%12f\n, 123.45);)则会显示 123.450000称为小数最小宽度输出小数时有时希望限定小数的位数。举例来说希望⼩数点后⾯只保留两位占位符可以写成%.2f。最小宽度和限定位数都可以通过*代替如printf(%*.*f\n, 6, 2, 0.5);相当于printf(%6.2f\n,0.5);printf函数可以输出特定长度的字符串如#includestdio.hintmain(){printf(%.5s\n,hello world);//输出前五个字符return0;}scanf函数scanf() 函数用于读取用户的输入。它同样需要stdio.h这个头文件。基本使用类型scanf(%d,a);*它和printf函数相似需要占位符作为数据类型判断后面是用户输入内容scanf函数的变量前需要加上表示取地址但对于指针变量如字符串则无需scanf函数在读取数据时会自动过滤空白字符包括空格、制表符、换行符等代码演示#includestdio.hintmain(){intscore0;//初始化printf(请输⼊成绩:);scanf(%d,score);printf(成绩是%d\n,score);return0;}scanf函数返回值是一个整数若没有读取任何项则返回0若发生读取错误则返回EOFend of fileVS中 输入三次Ctrl Z才会跳出EOF代码演示#includestdio.hintmain(){inta0;intb0;floatf0.0f;intrscanf(%d %d %f,a,b,f);//若成功r3任一失败则该变量显示0同时r2printf(a%d b%d f%f\n,a,b,f);printf(r %d\n,r);return0;}scanf函数中的占位符如下• %c字符。• %d整数。• %f float 类型浮点数。•%lf double 类型浮点数。• %Lf long double 类型浮点数。• %s字符串。• %[]在方括号中指定⼀组匹配的字符使用函数时注意1 除了%c以外都会自动忽略起首的空白字符。%c 不忽略空白字符总是返回当前第⼀个字符无论该字符是否为空格。 %c可强制跳过字符前的空格2 %s它的规则是从当前第⼀个非空白字符开始读起直到遇到空白字符即空格、换行符、制表符等为⽌。所以一般不用来输入有空格的字符串如歌曲名等3scanf()将字符串读入字符数组时不会检测字符串是否超过了数组长度。所以会使用%[m]s 限定读取字符串的最长长度[m]表示数字。如%3s即表示读取三个字符的长度后面的数据将被丢弃。4 有时用户会输入不符合标准的情况。这时为了避免这种情况scanf()提供了⼀个赋值忽略符。只要把加在任何占位符的百分号后面该占位符就不会返回值解析后将被丢弃。代码如下#includestdio.hintmain(){intyear0;intmonth0;intday0;scanf(%d%*c%d%*c%d,year,month,day);//其中%*c就是忽略当中的字符return0;}其余函数简介strlen函数用于计算字符串的长度其余函数等到函数模块再详细展开字符以及字符串字符以及ASCII编码字符往往使用单引号表示如’a’,b’等。在计算机中用二进制存储字符于是就有对于ASCII码对应所写字符。打印字符代码演示#includestdio.hintmain(){inti0;for(i32;i127;i){printf(%c ,i);if(i%1615)printf(\n);}return0;}字符串C语言中字符串后省略了\0字符printf函数和strlen函数遇到\0时就会停止输出。可通过代码演示发现#includestdio.hintmain(){chararr1[]{a,b,c};//arr1数组中存放3个字符打印后显示乱码chararr2[]abc;//arr2数组中存放字符串打印正常printf(%s\n,arr1);printf(%s\n,arr2);return0;}转义字符转义字符详细介绍在字符中有⼀组特殊的字符是转义字符转义字符顾名思义转变原来的意思的字符。C语言中常见转义字符• ?在书写连续多个问号时使⽤防⽌他们被解析成三字⺟词在新的编译器上没法验证了。• ‘⽤于表⽰字符常量’• ⽤于表⽰⼀个字符串内部的双引号• \⽤于表⽰⼀个反斜杠防⽌它被解释为⼀个转义序列符。• \a警报这会使得终端发出警报声或出现闪烁或者两者同时发⽣。• \b退格键光标回退⼀个字符但不删除字符。• \f换⻚符光标移到下⼀⻚。在现代系统上这已经反映不出来了⾏为改成类似于• \n换⾏符。• \r回⻋符光标移到同⼀⾏的开头。• \t制表符光标移到下⼀个⽔平制表位通常是下⼀个4/8的倍数。• \v垂直分隔符光标移到下⼀个垂直制表位通常是下⼀⾏的同⼀列。• \ddd ddd表⽰1~3个⼋进制的数字。 如 \130 表⽰字符X• \xdd dd表⽰2个⼗六进制数字。 如 \x30 表⽰字符0语句简介五种语句空语句;表达式语句ab1;函数调用语句如同printf一样的语句复合语句代码块控制语句分为顺序选择循环结构。条件判断语句也叫分支语句if语句、switch语句循环执行语句do while语句、while语句、for语句转向语句break语句、goto语句、continue语句、return语句语句会在分支循环模块章节详细介绍注释程序员用以提醒解释的事物。有两种方式/这时一段注释/ 可以多行使用//这也是一段注释 (只能单行使用编译时注释会被替换为空格。谢谢观看总结本文作为 C 语言入门的第一篇系统介绍了编写一个 C 程序所需的基础知识下面按章节回顾核心要点主函数任何 C 程序有且只有一个main函数作为程序入口程序从这里开始执行并以return 0;结束。printf 函数用于向屏幕输出信息需要包含stdio.h头文件。通过占位符如%d、%s、%c、%f定制输出内容还支持限定最小宽度、控制小数位数、截取字符串长度等高级用法。scanf 函数用于读取用户输入同样依赖stdio.h。注意变量前要加取地址指针变量除外它会自动过滤空白字符并可通过赋值忽略符*丢弃不需要的输入。字符与字符串字符用单引号表示在计算机中以 ASCII 码存储字符串末尾隐含\0结束符printf和strlen遇到\0即停止。转义字符以反斜杠\开头用于表示换行\n、制表符\t、双引号\等无法直接书写的特殊字符。语句C 语言共有五种语句——空语句、表达式语句、函数调用语句、复合语句代码块和控制语句顺序、选择、循环。注释/* */支持多行//仅支持单行编译时注释会被替换为空格不影响程序运行。学习建议动手实践每学一个知识点都亲手在编译器中敲一遍代码并运行观察输出结果比单纯阅读记忆更深刻。循序渐进本文只是起点建议先熟练掌握printf和scanf的占位符用法再进入分支、循环等控制结构的学习。善用工具遇到不熟悉的函数或语法可查阅 cppreference 等权威文档。下一步学习方向数据类型与变量深入理解int、float、char等基本类型及类型转换。分支与循环掌握if、switch、for、while等控制语句实现更复杂的程序逻辑。函数学习如何自定义函数、参数传递与返回值为模块化编程打基础。数组与指针这是 C 语言的精髓也是后续学习字符串处理、动态内存的必经之路。打好基础后就可以逐步挑战更复杂的 C 语言特性了。加油为了让程序员提升开发效率C语⾔标准规定了⼀组函数这些函数再由不同的编译器⼚商根据标准进⾏实现提供给程序员使⽤。这些函数组成了⼀个函数库被称为标准库这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数这些函数其他编译器不⼀定⽀持。库函数需要包括头文件。参考链接https://cplusplus.com/reference/clibrary/ ↩︎• %a⼗六进制浮点数字⺟输出为⼩写。• %A⼗六进制浮点数字⺟输出为⼤写。• %c字符。//char• %d⼗进制整数有符号的10进制整数。//int• %e使⽤科学计数法的浮点数指数部分的e为⼩写。• %E使⽤科学计数法的浮点数指数部分的E为⼤写。• %i整数基本等同于%d。• %f⼩数包含float 类型和double 类型。//float%f double-%lf• %g6个有效数字的浮点数。整数部分⼀旦超过6位就会⾃动转为科学计数法指数部分的e为⼩写。• %G等同于%g唯⼀的区别是指数部分的E为⼤写。• %hd⼗进制short int类型。• %ho⼋进制short int类型。• %hx⼗六进制short int类型。• %hu unsigned short int类型。• %ld⼗进制long int类型。• %lo⼋进制long int类型。• %lx⼗六进制long int类型。• %lu unsigned long int类型。• %lld⼗进制long long int类型。• %llo⼋进制long long int类型。•%llx ⼗六进制long long int类型。• %llu unsigned long long int类型。• %Le科学计数法表⽰的long double类型浮点数。• %Lf long double类型浮点数。• %n已输出的字符串数量。该占位符本⾝不输出只将值存储在指定变量之中。• %o⼋进制整数。• %p指针⽤来打印地址。• %s字符串。• %u⽆符号整数unsigned int。• %x⼗六进制整数。• %zu size_t 类型。• %%输出⼀个百分号。 ↩︎