- 前言
- 一、新建此次学习的文件夹
- 二、int(整型)
- 二、scanf
- 三、进制与存储
- 四、float(浮点型)
- 五、char(字符型)
- 六、练习(判断输入年份是不是闰年)
- 答案
前言
本篇文章主要帮助理解C语言基本的数据类型,int整型,float浮点型,char字符型
还有ASCII码在c语言的作用
以及解决中文乱码问题
结尾有一个练习,判断平年还是闰年
以下是本篇文章正文内容
一、新建此次学习的文件夹上回文章链接:https://blog.csdn.net/o_0ava0_o/article/details/124740167
续接上回,我们搞好了vscode运行c语言的相关配置,接下来我们正式开始C语言学习
1.用vscode打开我们先前新建的文件夹
2.在根目录下 新建文件夹,我这里命名为 2.constantAndVariable(变量与常量)
不要中文命名,否则编译的时候会报错
二、int(整型)1.在2.constantAndVariable文件夹中新建1-int.c文件
2.还记得我们上次创建的C语言的用户代码吗,这里就可以用了
关于代码片段快捷键的修改,其实上次的配置里的注释已经透露了,这里再说一下
至于怎么进入这个代码片段,如果你做过上次代码片段的配置,这个不难(不记得可以回去看哦,链接在上面)
3.成功生成模板
4.核心内容
// QAQshfit专用模板 #include#include #define PI 3.14 //定义常量 int main() { int a,b=4; //两种定义形式 1.定义整型变量a 2.定义整型变量b,同时给b赋值4(定义+赋值) a = 5; //赋值5给变量a a=a*PI; //把a和PI运算的值 赋值给 a printf("a=%d,b=%dn", a,b); // 打印出变量a和变量b的值 system("pause"); //上次的注释里面解释了这个 }
5.输入以上内容,按键盘上的F5运行
二、scanf请根据注释进行学习,同时对程序进行修改,来验证自己的猜想
此后一些基本的操作,我就不会截图了
1.在2.constantAndVariable文件夹中新建2-scanf.c文件
2.在scanf.c文件中输入以下内容
#include//输入输出头文件 #include //从屏幕输入:scanf 从屏幕输出:prinf 都需要引入io(i:input o:output)头文件 int main() { int a,b; printf("请输入a和b的内容n"); scanf("%dn%d", &a,&b); //&a:取a的地址 b同理 printf("输入的a为%d,b为%dn", a,b); printf("a,b的和%dn", a+b); system("pause"); }
3.按键盘上的F5运行
然后你就会惊喜的发现,咋乱码了
4.中文出现乱码的问题
中文出现乱码和vscode的编码方式有关
默认情况是utf-8编码,不兼容一些汉字
我们要把编码改成中文的编码方式,如gb2312
中文编码的兼容性:gb18030>gbk>gb2312
gb18030兼容性最强,换句话来说就是,你gbk能用的字符我能用,gbk不能用的我也能用(先斩后奏,皇权特许,串味了~)
此次为临时更换编码方式,而不是永久,所以在写c语言的时候尽量不使用中文
然后你又会发现,我源文件咋还乱码了
因为先前的中文是基于utf-8的编码写的,当编码转换时,原先的中文字符就会变成乱码
这里建议把我先前的再复制一遍,如果你无聊的话,倒可以把中文重新输入一遍
重新复制并保存
运行试试(老规矩,按F5)
ok 成功了
5.命令行输入 1 2
scanf匹配到空格就会结束读取,因此a匹配的是1,b匹配的是2 后面会有更多关于scanf的知识
三、进制与存储前面说了,这是临时性的,等你关闭文件以后,再打开又会变成utf-8的编码,你需要再进行一遍上述操作
这里不建议全局改变编码格式
不过如果你想试试,接下来就告诉你方法
知识点:
进制
2进制:0 1
8进制:0 1 2 3 4 5 6 8
16进制: 0 1 2 3 4 5 6 7 8 9 a b c d e f
10进制:0 1 2 3 4 5 6 7 8 9
0x7b 0x开头代表该数是16进制 即16进制的7b,换算成10进制为123 7*16 + b(11)
0173 0开头代表该数是8进制 即8进制的173,换算成十进制为123 8^2 + 7*8 + 3
%d
以10进制的方式输出整型数
c程序一般32位,一个数据的取值有2^32个,即每个数据用8个16进制存储 如:cc cc cc cc
磁盘 1G=1000 000 000 字节 即比实际1GB(2^30字节)要小
32位编址 寻址空间 从 0x00 00 00 00 到 0xFF FF FF FF 即 16^8=2^(4*8)=2^32=4*2^(20) = 4GB
int在32位程序中
占4个字节(1个字节八位) ,所以int占32位
可取值有 2^(8*4)-1 个
取值范围为(-2^(31) ~ 2^(31)-1 )
1.在2.constantAndVariable文件夹中新建3-system.c文件
2.在3-system.c文件中输入以下内容
#include#include int main() { int a,b,c; a=0x7b; //16进制 b=0173; //8进制 c=123; //10进制 printf("a=%d,b=%d,c=%dn", a,b,c); system("pause"); }
3.运行的结果
四、float(浮点型) 知识点:
%f
以10进制的方式输出小数
e表示10的次幂 例:e3=10^3 e-3=10^(-3)
e的前面一定要有数字 且e的后面一定要是整数
float占用4个字节的空间(和int一样)
可取值有 2^(8*4)个
取值范围(大约) 3.4E–38 和 3.4E+38之间
1.在2.constantAndVariable文件夹中新建4-float.c文件
2.在4-float.c文件中输入以下内容
#include#include int main() { float f=1.234; float f2=234e-3; printf("f=%fn", f); printf("f2=%fn", f2); system("pause"); }
3.运行的结果
知识点:
字符需要用单引号包裹,且只能有一个字符 如: 'a' 'b' 而以下是错误形式:'ab' "a" ""
转义字符:
n 换行 b 退格 \反斜杠
一个char(字符型)变量占用一个字节
可取值有 2^8 即 256个
值范围为 0-255(2^4 * 2^4 = 16*16 = 256)
每个数据用两个16进制存储 即 16^2=256
字符在内存中代表的是其ASCII码的值 如 'a' 在内存中显示为 61
ASCII
10进制:0为48 A为65(26个字母可推其他字母) a为97(26个字母可推其他字母)
16进制:0为30 A为41 a为61
8进制: 0为60 A为101 a为141
%c
以10进制的方式输出字符
1.在2.constantAndVariable文件夹中新建5-char.c文件
2.在5-char.c文件中输入以下内容
这里用到了中文,记得把编码改为中文编码
int main()
{
char c='a';
printf("c的值(以字符形式输出)为:%cn", c);
printf("c的值(整数形式输出)为:%dn", c);
printf("ASCII的97(10进制)值(以字符形式输出)为:%cn", 97);
printf("ASCII的61(16进制)值(以字符形式输出)为:%cn", 0x61);
printf("ASCII的141(8进制)值(以字符形式输出)为:%cn", 0141);
system("pause");
}
3.运行的结果
六、练习(判断输入年份是不是闰年)
程序要求:
判断某个年份是不是闰年,如果是闰年,输出"yes",否则输出"no"
提示(闰年的判定)
1.可以被100整除且被400整除(能被400整除的一点能被100整除)
2.不能被100整除但能被4整除
该程序需要用到 %(除余符号)
例1:4%2 4可以被2整除,所以余数为0,即 4%2==2
例2: 5%2 5不能被2整除,余数为1,即 5%2==1
需要运用if语句
if ([条件])
{
[执行代码]
}
或者运用逻辑运算符更加简单
逻辑运算符包括 &&(与) ||(或) !(非)
此次只需要 && 和 ||
答案可以在2.constantAndVariable文件夹下面新建一个c文件来做这个作业
下面是答案,希望读者可以先自己做练习后再来看
由于用到了中文,需要换成中文编码。
如果不想换编码,可以把下面中文的部分修改
#include#include int main() { int year; printf("请输入年份来判断是不是闰年:n"); scanf("%d",&year); //普通逻辑版 // if (year%100!=0) // { // printf("不是整百年n"); // if(year%4==0){ // printf("yes,闰年n"); // }else{ // printf("no,平年n"); // } // }else if(year%100==0){ // printf("是整百年n"); // if(year%400==0){ // printf("yes,闰年n"); // }else{ // printf("no,平年n"); // } // } //简化版 if(year%400==0 || year%4==0&&year%100!=0){ //逻辑与的优先级>逻辑或的优先级 printf("yes,闰年n"); }else{ printf("no,平年n"); } system("pause"); }


![【C语言初级阶段学习2】【变量与常量】int,float,char学习,以及字符常量和ASCII码的关系,以及解决vscode运行c程序中文乱码的问题,结尾有一个判断平年还是闰年的练习[考研专用] 【C语言初级阶段学习2】【变量与常量】int,float,char学习,以及字符常量和ASCII码的关系,以及解决vscode运行c程序中文乱码的问题,结尾有一个判断平年还是闰年的练习[考研专用]](http://www.mshxw.com/aiimages/31/955024.png)
