关于c:c语言简单学习入门第二课

4次阅读

共计 4069 个字符,预计需要花费 11 分钟才能阅读完成。

温习上一课

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. %d
b. 示意双精度浮点数
i. %lf
c. 示意单个字符
i. %c
d. 示意字符串
i. %s
e. 其余的,临时不重要
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:单步步入
遇到本人写的函数的时候,他俩有区别,其余时候是一样的。
在单步运行的过程中,咱们能够查看 变量的值,从而去验证咱们的代码是否正确

正文完
 0