计算机基础知识
第一台电子计算机:ENIAC, Electronic Numerical Integrator And Calculator
计算机发展的几个阶段:
计算机硬件基本组成:
计算机系统的组成:
进制的概念
二进制优势:
1.信息复制的精确性
2.运算规则简单
3.使电子线路制造计算机成为可能
程序和指令
指令是对计算机进行程序控制的最小单位。
所有的指令的集合称为计算机的指令系统。
程序是为完成一项特定任务而用某种语言编写的一组指令序列。
信息的存储单位
位(Bit):计算机的最小单位
字节(Byte):计算机的基本单位
计算机语言
自然语言:人与人之间用来表达意思,交流思想的工具。是由语音、词 汇和语法构成的一定系统。
程序设计语言 :人指挥计算机工作的工具。是由字、词和语法规则构成的指令系统。
机器语言:面向机器的指令系统
汇编语言:以类英语缩写来编程序
高级语言:不面向机器,用接近人类语言的描述方式构成的指令系统
翻译程序
汇编程序:把汇编源程序转换为机器语言的程序
编译器:把高级语言程序转换为机器语言或汇编语言的翻译程序
指令比较
以下指令实现把表达式 3a - 2b + 1 的计算结果放到变量 a 中:
C++程序的执行过程
C++格式化输出
八进制、十进制、十六进制 C++ 表示与输出。
int a = 100;
cout << a << endl; // 默认十进制
cout << dec << a << endl;
cout << oct << a << endl;
cout << hex << a << endl;
输出:
100
100
144
64
int a = 100, b = 0144, c = 0x64;
cout << a << " " << b << " " << c << endl;
输出:
100 100 100
设置域宽:需要引入库 #include
cout << "cat" << endl;
cout << setw(10) << "cat" << endl;
cout << setfill('*') << setw(10) << "cat" << endl;
cout << setfill('*') << setw(10) << "blackcat1995" << ".com" << endl;
cout << setfill('*') << setw(2) << "blackcat1995.com" << endl;
输出:
cat
cat
*******cat
blackcat1995.com
blackcat1995.com
保留指定小数位数:需要引入库 #include
const double PI = 3.14;
cout << PI << endl;
cout << setprecision(6) << PI << endl;
cout << setprecision(6) << 3.14159265358 << endl;
cout << fixed << setprecision(6) << PI << endl;
输出:
3.14
3.14
3.14159
3.140000
注意:
1.必须加 fixed,否则实际输出位数可能会小于指定保留位数。
2.以上所有格式化控制符只对紧跟在其后的数据有作用。
C语言风格格式化输出
当输入数据范围较大时,比如超过100万,cin 读取数据就会明显变慢导致超时,这时,就可以采用C语言风格进行输入输出。
首先我们来看一下什么是C语言编程。
C语言就是以 .c 为后缀的文本文件,例如,创建一个 main.c 文件:
#include
int main(){
int n;
scanf("%d", &n);
printf("a = %d\n", n);
printf("Hello cat.");
return 0;
}
使用 gcc 进行编译:
如果变为 C++ 文件,只需更改后缀为 main.cpp,然后,将 stdio.h 变为 cstdio。
#include
int main(){
int n;
scanf("%d", &n);
printf("a = %d\n", n);
printf("Hello cat.");
return 0;
}
格式化输入
scanf(格式控制字符串,变量1地址,变量2地址...)。
格式控制符对应后面的变量地址。
注意:传入的是变量地址,变量前要有&,表示取地址。%d 和 %d 之间可以加空格也可以不加空格。
格式化输出
printf(格式控制字符串,表达式1,表达式2...)
格式控制字符串中的普通字符会保留,格式控制符会被后面对应的参数替代,构成字符串。
注:换行符为 '\n',例 "123\n456\n789"。
int a;
float b;
double c;
char d;
scanf("%d%f%lf\n%c", &a, &b, &c, &d);
printf("a=%d b=%f c=%.3lf d=%c d=%d\n", a, b, c, d, d);
注意:读取完变量 c 后,换行再读取 d,需要在 scanf 中过滤掉换行符。
疯狂刷题
- P195 对齐输出
- P668 反向输出三位数
- P99 保留3位小数的浮点数
- P100 保留12位小数的浮点数
- P112 计算分数的浮点数值
- P203 计算浮点数相除的余