温习上一课

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:单步步入
遇到本人写的函数的时候,他俩有区别,其余时候是一样的。
在单步运行的过程中,咱们能够查看 变量的值,从而去验证咱们的代码是否正确