C语言集训—杨豪—第二次作业

207 阅读7分钟

课堂理论知识

1.cpu 内存条 硬盘 显卡 显示器 之间的关系?

- 它们之间的关系可以通过一个例子来说明。比如一部电影是怎样运行的?
- 首先双击这部电影,“双击”是操作系统提供的一个操作。电影本身是放在硬盘上的,当我们通过鼠标对它进行操作后,操作系统就会将硬盘上的这部电影拷贝到内存中。为什么要拷贝到内存中?,因为CPU不能直接处理硬盘上的数据,所以要先将硬盘上的数据拷贝到内存中进行处理。处理的结果就是将一些数据变成图像、一些数据变成声音。图像数据发送给显卡,通过显示器显示出来;声音数据则通过声卡放出来。这基本上就是一部电影的运行过程。

2.hello world程序是怎么运行起来的?

- 通过编译和链接这两个步骤会产生一个.exe可执行文件。这个可执行文件是由编译器这个软件生成的。当单击“执行”执行的就是这个 .exe 文件。但这个文件并不是编译器执行的,而是由 CPU 执行的。如果没有操作系统,所有的软件都是不能运行的。所以不要以为编译器可以解决任何问题。它的所有操作也都要靠底层操作系统的支持,并最终靠 CPU 来执行。因为只有操作系统才能控制硬件,所有的软件都不能直接访问硬件。 ####3.什么是数据类型?
- 基本类型数据

整数
整形int4个字节
短整型shrot int2个字节
长整型long int8个字节
浮点数
单精度浮点数float4个字节
双精度浮点数double8个字节
字符char1个字节

- 复合类型数据
结构体
枚举体
共用体

4.什么是变量?

- 变量是内存里一段有名字的连续存储空间。

5.cpu 内存条 vc++6.0 操作系统 之间的关系

- 执行C语言程序时,vc++6.0请求操作系统,操作系统从内存条分配空间,vc++6.0 就会把字母 i 和操作系统分配的内存对应。

6.变量为什么必须初始化?

- 所谓初始化就是赋值的意思。 - 内存是在操作系统的统一管理下使用的!
- 1、软件在运行前需向操作系统申请存储空间,在内存空闲足够时,操作系统将分配一段内存空间并将外存中软件拷贝一份存入该内存空间中,并启动该软件的运行;
- 2、当软件运行完毕后,操作系统将回收该内存空间(注意:操作系统并不清空该内存空间中遗留下来的数据),以便再次分配给其他软件使用。
- 综上所述,一个软件所分配到的空间中极可能存在着以前其他软件使用过后的残留数据,这些数据被称之为垃圾数据。 所以通常情况下我们为一个变量,为一个数组,分配好存储空间之后都要对该内存空间初始化.

7.如何定义变量?

- 数据类型 变量名=要赋的值; 等价于 数据类型 变量名; 变量名=要赋的值;

8.什么是进制?

- 进制就是逢几进一,r 进制就是逢 r 进一。计算机只能识别二进制,人类最习惯使用的是十进制,而为了实际需要,又建立了八进制和十六进制。八进制就是逢八进一,十六进制就是逢十六进一。 - C语言中规定了八进制数前面要加0(注意是数字零而不是字母 o),十六进制数前面要加0x0X

十进制二进制八进制十六进制
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

9.常量在C语言中是怎么表示的?

> 整数
- 十进制: 传统的写法
- 十六进制:前面加0x 或0X
- 八进制: 前面加0 (注意是数字零而不是字母O)

> 浮点数:
-  传统的写法
- Float x =3.2;//传统
> 科学技术法
- Float x=3.2e3; //x的值是3200 - Float x=123.45e-2;//x的值是1.2345

字符

单个字符用单引号括起来
- ‘A’表示字符A
- ‘AB’ 错误
- “AB”正确
- 字符串用双引号括起来
"A"正确因为"A"表示的是‘A’和‘\0’的组合

10.常量以什么形式储存在代码中?

- 整数是以补码的形式转化为二进制代码存储在计算机中的
- 实数是以IEEE754标准转化为二进制代码存储在计算机中的
- 字符的本质实际也是与整数的存储方式相同

11.代码规范化?

- 代码的可读性更强(容易让自己和别人更清楚的看懂程序)使程序更不容易出错

12.什么是字节?

- 字节就是储存数据的单位,并且是硬件所能访问的最小单位
- 1字节=8位
- 1K=1024字节
- 1M=1024K
- 1G=1024M

13.不同类型数据之间相互赋值的问题

int i =45;
long j=102345;
i=j;
printf("%ld%d\n",i,j);
float x=6.6;
double y=8.8;
printf("%f%lf\n,x,y");`

14.什么是ASCII?

- ASCII不是一个值,而是一种规定, ASCII规定不同的字符是使用哪个整数值去表示 它规定了
- ‘A’——65
- ‘B’——66
- ‘a’——97
- ‘b’——98
- ‘o’——48

基本的输入与输出函数的用法

printf()--将变量的内容输出到显示器上

- 1.printf(“字符串\n”);
- 2.printf("输出控制符”,输出参数);
- 3.printf(“输出控制符1 输出控制符2.。。”,输出参数1,输出参数2输出控制符和输出参数的个数必须一一对应)
- 4.printf(“输出控制符 非输出控制符”,输出参数);

输出控制符包含如下

image.png

为什么需要输出控制符

- 1.01组成的代码可以表示数据也可以表示指令。
- 2.如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的输出格式输出就会有不同的输出结果。

scanf()【通过键盘将数据输入到变量中】
用法一

- scanf("输入控制符”,输入参数); - 功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中

用法二

- scanf(“非输入控制符 输入控制符”,输入参数);
- 功能:将从键盘输入控制符所规定的格式的数据,然后存入以输入参数的值为地址的变量中,非输入控制符必须原样输入

如何使用scanf编写出高质量代码

- 1.使用scanf之前最好先使用printf提示用户以什么样的方式来输入
- 2.scanf中尽量不要使用非输入控制符,尤其是不要用**\n**
- 3.应该编写代码对用户的非法输入做适当的处理(非重点)

课后作业

名词翻译

中文英文中文英文
整数integer变量variable
字符character初始化initialition
浮点数float十进制decimal system
结构体structure二进制binary system
枚举enum十六进制hexadecimal
联合union打印printf

3.10第四题

'\b'的含义是,将光标从当前位置向前(左)移动一个字符(遇到\n或\r则停止移动),并从此位置开始输出后面的字符(空字符\0和换行符\n除外)。
- 1066 int类型 表示为十进制常量。
- 99.44 float类型 表示为单精度浮点数。
- OXAA double类型 表示十六进制常量。
- 2.0e30 double类型 表示为双精度浮点数。

3.10第六题

常量类型转换说明(转换字符)
12int%d
OX3unsigned int%X
'C'char%c
2.34E07double%lf
'\040'char%c
7.0float%f

3.10第八题

- %d,%ld;
- %f,%c;
###3.11编程练习第一题
- 整数上溢 image.png - 浮点数上溢 image.png - 浮点数下溢
image.png

4.8第一题

image.png

4.8第四题

image.png

4.8第七题

image.png

Pastebin分享代码链接Ubuntu Pastebin