温习上一课
0.1 如何将一个十进制数转为二进制数?
整数局部:逆序取余
小数局部:正向取整
例题:20.28
整数局部:
20/2 10 0
10/2 5 0
5/2 2 1
2/2 1 0
1/2 0 1
小数局部:
0.28*2 0.56 0
0.56*2 1.12 1
0.12*2.....
后果就是:10100.01
0.2 如何将一个二进制数转为十进制数?
将各个位所代表的权值 加到一起
5 4 3 2 1 0 -1 -2 -3
1 1 0 1 1 0. 1 0 1
32 + 16+0+4+2+0 + 0.5 +0 + 0.125
后果:54.625
0.3 如何在二进制和十六进制之间转换?
外围逻辑:4个二进制位 代表1个十六进制位
比方:
二进制转十六进制
0001 1010 1001. 1101 1000
1 A 9 D 8
十六进制转二进制
3 D 4
0011 1101 0100
0.4 原码,反码,补码
负数:三码合一,或者也能够说负数不辨别这些货色
正数:
原码 最高位是符号位 (1代表正数) 其余的位依照负数去写就能够 比方 -5 1 000 0101
反码 符号位不变 其余的位按位取反 1 111 1010
补码 反码+1 1 111 1011
一个字节 是8位 如果用于存储正整数 范畴 就是 0~ 255 (2的8次方 -1 )
一个字节 是8位 如果即用来存储负数,也存储正数 -127~127 然而有一个非凡规定 -0 示意-128 所以规定的范畴是 -128~127
今日内容
1. 预处理,库函数,关键字,正文,语句,main函数
#include <stdio.h>#include <stdlib.h>int main(){ printf("hello world"); system("pause"); return 0;}
1.1 预处理命令
以#结尾的一些命令,这些命令,使得 编译器 在正式编译之前,对源代码进行一些解决。
#include #define #if...#include <stdio.h> 的性能就是 找到 stdio.h 这样一个文件,而后将文件中的内容复制粘贴到命令所在的地位。
赋值粘贴这样的操作,不算是编译
复制粘贴不是咱们程序员做的,是编译器本人做的,编写做的这些编译之前的操作,就叫做编译预处理。
1.2 库函数
C语言会将一些罕用的代码,提供给开发者去应用。这些罕用的代码,是以库函数的形式提供给咱们的。
比方:printf就是一个 库函数,这个函数的性能是 输入一个字符串,这个printf函数是被寄存在stdio.h这个库外面。
如果咱们想要应用库函数,就必须先蕴含对应的头文件。
1.3 练习
设置控制台的题目为“ Hello 15PB ” ,并输入白底黑字的内容“ Hello 信息安全 ”;提醒:system("color 0A")中color前面的0是背景色代号,A是前景色代号。各颜色代码如下:0=彩色 1=蓝色 2=绿色 3=湖蓝色 4=红色5=紫色 6=黄色 7=红色 8=灰色 9=淡蓝色A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮红色system("title XXX")批改题目。
#include <stdio.h>#include <stdlib.h>int main(){ system("title 学习高兴"); system("color EA"); printf("欢送同学学习"); system("pause"); return 0;}
1.4 关键字
1.5 正文
不参加程序的编译和运行,个别起到一个提醒作用,正文有两种:
多行正文 / /
单行正文 //
正文的作用:
a. 对于咱们学习的时候来说,便于今后看代码的时候进行温习。b. 对于工作来说,便于工作的交接。
代码写进去次要是给他人看的,顺带着可能正确的执行。
体现的 代码可读性 的重要
1.6 语句
单语句
以分号为结尾的
复合语句
应用{}括起来的一堆语句
C语言执行的根本单位 是 语句
组成C语言的根本单位 是 函数
1.7 main函数
main函数是咱们编写的第一个函数。 int 是main的返回值类型 return 0 会完结掉main函数。
C语言规定 整个程序的入口,就是main函数。一个程序只能有一个main函数。
C语言的代码,是从main函数中的第一条语句开始,程序的往下执行。
根本写法:
int main(){ return 0;}
2. 常量和变量
2.1 常量
2.2 变量
格局:
变量类型 变量名称 = 初始值;
2.2.1 变量的定义,各个类型的区别
#include <stdio.h>#include <stdlib.h>int main(){ //1. 定义变量 int a = 20; //定义了一个整型变量 char c = 'A'; //定义了一个字符型变量 double m = 3.5;//定义了一个浮点型变量 //这些变量的值是能够被批改的 a = 50;//赋值 将左边的数据存储到右边去 c = 'M'; m = 10.5; //2. 定义变量还有其余多种类型 //整型 //long long num0; //8字节 long int num1 =10; //4字节 -20多亿~20多亿 short int num2 =20; //2字节 -32768~32767 int num3 =100; //4字节 long num4; short num5; int num6; //字符型 //char的范畴 就是 -128~127 //char 类型是一个字节,说是存储字符,实际上就是存储数字 //能够将char类型,看作1个字节的整数 char cCh = 'A'; //char cCh = 65; char cCh2 = '1'; //char cCh2 = 49; char cCh3 = 1; char cCh4 = -5; char cCh5 = -128; //wchar_t的应用形式和char差不多,就是字符后面都应该加一个L wchar_t wCh1 = L'A'; //浮点型 次要看的是精度 //float 4个字节 精度低 // float fNum1 = 3.88; //double 8个字节 精度高 double fNum2 = 3.88; return 0;}
2.2.2 标识符的规定
字母,数字,下划线
数字不能结尾
不能应用关键字
辨别大小写
2.2.3 怎么选用变量类型
在过来的时候,硬件资源比拟缓和,能用小的类型,就尽量应用更小的。
当初:
整型,没有特殊要求,就是用int
浮点,没有特殊要求,就应用 double
字符,没有特殊要求,就应用 char
2.3 对于主动类型转换的问题
#include <stdio.h>#include <stdlib.h>int main(){ //1. 定义变量 int a = 20; //定义了一个整型变量 char c = 'A'; //定义了一个字符型变量 double m = 3.5;//定义了一个浮点型变量 char n = 0; a = m; //第一种主动类型转换形式 //当赋值的时候,左右两边类型不统一 //会将左边的数据转换为右边的类型,再赋值 //m是double,a是int 将m转为int再赋值 //转换过程中,有可能会失落数据 a = 10000; n = a; //a是4字节 n是1字节 有可能会失落数据 a + m; //第二种主动转换的形式 //当一个算式中,呈现了多种类型的时候,会主动往 //范畴较大的类型去转换,尽量的不失落数据 //会先将a转为double,而后再做加法 return 0;}
2.4 对于显示转换的问题
#include <stdio.h>#include <stdlib.h>int main(){ //1. 定义变量 int a = 20; //定义了一个整型变量 char c = 'A'; //定义了一个字符型变量 double m = 3.5;//定义了一个浮点型变量 char n = 0; a = (int)m; //第一种主动类型转换形式 //当赋值的时候,左右两边类型不统一 //会将左边的数据转换为右边的类型,再赋值 //m是double,a是int 将m转为int再赋值 //转换过程中,有可能会失落数据 a = 10000; n = (char)a; //a是4字节 n是1字节 有可能会失落数据 (double)a + m; //第二种主动转换的形式 //当一个算式中,呈现了多种类型的时候,会主动往 //范畴较大的类型去转换,尽量的不失落数据 //会先将a转为double,而后再做加法 return 0;}
显示转换的目标,第一个是加强了可读性。
总结:
a. 命名肯定要有含意b. 正文要具体c. 排版要清晰标准
替换两个数:
int main(void){ int a = 5; int b = 6; /*a = b; b = a;*/ int c = 0; c = a; a = b; b = c; return 0;}
3. 输出和输入
3.1 输入
根本用法:
printf("带格局控制符的字符串",参数2,参数3,.....);
这外面%d是一个格局控制符。
函数的作用:将字符串中的内容原样输入,遇到了格局控制符就匹配前面的参数
格局控制符:
a. 示意十进制整数i. %db. 示意双精度浮点数i. %lfc. 示意单个字符i. %cd. 示意字符串i. %se. 其余的,临时不重要i. %o 八进制输入ii. %f 单精度浮点iii. %u 无符号整数iv. %p 输入地址v. ....
除了格局控制符之外,还须要晓得一个转义字符
\n 示意换行
#include <stdio.h>int main(void){ int a = 5; int b = 6; /*a = b; b = a;*/ printf("a的值是%d,b的值是%d\n", a, b); int c = 0; c = a; a = b; b = c; printf("a的值是%d,b的值是%d\n", a, b); printf("b"); return 0;}
3.2 输出-scanf_s
#include <stdio.h>int main(void){ //输出两个数,输入两个数的和 int nNumberA = 0; int nNumberB = 0; printf("请输出两个数:"); //留神:&它是用来获取一个变量的地址的 scanf_s("%d,%d", &nNumberA, &nNumberB); return 0;}
scanf_的格局控制符和printf是一样的
拓展:vs调试根底:
对于根本的调试:
点一下,呈现一个小红点,这里就是断点。
F5 调试运行,就会中断在第一个断点的地位。 如果再按F5 就会运行到下一个断点处。
F10:单步步过
F11:单步步入
遇到本人写的函数的时候,他俩有区别,其余时候是一样的。
在单步运行的过程中,咱们能够查看 变量的值,从而去验证咱们的代码是否正确