C语言基础入门(个人笔记细节版)

张开发
2026/4/18 11:20:08 15 分钟阅读

分享文章

C语言基础入门(个人笔记细节版)
C语言基础入门编译器 使用VS2026/Dev-C/CodeBlocks 任选其一个人推荐使用VS2026首先通过第一个程序来快速打开对C语言的认识#include stdio.h //如果想要输入输出就必须引入库stdio.h standard input output标准输入输出 int main() { printf(hello world\n); //\n是换行转义字符 //printf是打印函数 return 0; } /*return 表示函数结束并返回一个值,这里返回 0意思是程序正常运行完成,如果返回非 0 数字 通常代表程序出错*/一、C语言的数据类型C语言的数据类型 主要有以下两类1.1 整型类型表1AB1类型存储大小2char / unsigned char1 字节3short / unsigned short2 字节4int / unsigned int4 字节5long / unsigned long4 字节6long long / unsigned long long8 字节1.2 浮点类型表2类型存储大小1float4字节2double8字节注意事项1、32位/64位Windows系统中long都是4字节但64位Linux系统中long是8字节。2、32位/64位Window系统和32位/64位Linux系统中C语言默认浮点类型为double在定义float时需要在后面添加f来避免隐式转换警告。例如float a 3.1f;3.无符号数和有符号数字节长度相同之后会在输入输出说明标准化的不同。如果想在代码内进行查看数据类型占用了多少字节可以通过sizeof函数来进行打印代码如下#include stdio.h int main() { char c A; int a 1; long long b 200000; printf(%zu %zu %zu, sizeof(c), sizeof(a), sizeof(b)); return 0; }图(1)注意sizeof(变量)算出来的结果类型不是int而是一个叫size_t的无符号整数类型。C语言标准规定打印size_t→ 必须用%zu即便%d也许会碰巧输出正确结果也不能使用。二、C语言的输出输入printf()和scanf()格式化例如 %c %d %hd %ld %p %u 依此是char int short long 指针 无符号2.1 输出打印函数 printf()首先举一个打印字符类型的例子#include stdio.h //如果想要输入输出就必须引入库stdio.h standard input output标准输入输出 int main() { char c A; //这里提到一下 定义变量的方式是 类型变量名 也就是说c是我自己起的名字 //尽量做到 所有的变量都初始化就是后面的 A; printf(c %c\n,c); return 0; }其次还有打印浮点型类型的例子#include stdio.h //如果想要输入输出就必须引入库stdio.h standard input output标准输入输出 int main() { float f 3.1415f; double lf 3.1415; // 变量名f和lf不一定根据%f和%lf来进行命名我只是为了方便区分 printf(%.3f\n, f); //.3表示保留三位小数四舍五入 printf(%.3lf\n, lf); //.3表示保留三位小数四舍五入 printf(%.lf\n, lf); printf(%.0lf\n, lf); //注意这里的.0和.都是代表保留0位小数 return 0; }注意如果你运行上面打印浮点类型代码的时候就会发现一个问题如下图(2)所示你会发现虽然都是保留三位小数但是第一个打印结果是3.141第二个的打印结果是3.142这并不是因为第一个没有四舍五入原因是单双精度不同下面的表3可以很明显的解释这个原因。图(2)表3类型真实存储值保留 3 位小数float3.1414999...3.141double3.1415000...3.1422.2 输入函数 scanf()#include stdio.h int main() { int id; printf(请输入一个整数\n); //注意 scanf函数是不能有文字提示还有\n转义的并且需要有取地址符 scanf(%d,id); printf(%d\n,id); return 0; }图3这里有两个关于2026VS编译器的小插曲不使用VS编译器即可跳过1、使用VS时微软会认为scanf不是安全函数解决办法我给出三个第一个是替换scanf为scanf_s函数记住只适用于VS第二个局内方案是直接在文件第一行重点必须是第一行写上#define _CRT_SECURE_NO_WARNINGS三是全局方案看下图4设置全局添加_CRT_SECURE_NO_WARNINGS 项目右键进入 属性-C/C-预处理器-详细看图2、printf打印时因为编码问题导致中文乱码因为电脑的终端都是GBK所以要改为GBK编码详细的教学视频可以看看【VS2026解决终端显示乱码问题】 https://www.bilibili.com/video/BV1zmQ2BtEhw/?share_sourcecopy_webvd_sourcef609c831645f03dd8b57f2e46022f05e图42.3 小结题目训练题目描述依次输入一个学生的学号以及3科C语言数学英语成绩在屏幕上输出该学生的学号3科成绩注输出成绩时需进行四舍五入且保留2位小数。数据范围学号满足1 ≤ n ≤ 20000000各科成绩使用百分制且不可能出现负数输入描述学号以及3科成绩学号和成绩之间用英文分号隔开成绩之间用英文逗号隔开。输出描述学号3科成绩输出格式详见输出样例。输入输出示例输入17140216;80.845,90.55,100.00输出The each subject score of No. 17140216 is 80.85, 90.55, 100.00.#include stdio.h int main() { int no; float cprogram, mathematics, english; printf(学号以及3科成绩学号和成绩之间用英文分号隔开成绩之间用英文逗号隔开。\n); scanf(%d;%f,%f,%f, no, cprogram, mathematics, english); printf(The each subject score of No. %d is %.2f, %.2f, %.2f, no, cprogram, mathematics, english); return 0; }图5三、单位进制换算3.1 常见的进制表41进制数据范围举例2二进制0 1101010013八进制0 1 2 3 4 5 6 7012345(0开头)4十进制0 1 2 3 4 5 6 7 8 912345675十六进制0 1 2 3 4 5 6 7 8 9 A B C D E F0x123F(0x开头)3.2 进制转换3.2.1 X进制转换十进制X进制转化成十进制的时候是 当前位置的数字乘以X的n次幂n代指这个数字后面有几个数字 之后再全部相加。例如二进制1101转换十进制就是 1*2^3 1*2^2 0*2^11*2^013再例如十六进制0x1101转换十进制 1*16^3 1*16^2 0*16^11*16^043533.2.1 十进制转换X进制

更多文章