C语言集训-陈明-第二次作业

201 阅读6分钟

1>视频主要学习笔记

一、cpu 内存条 硬盘 显卡(声卡等)主板显示器 电脑操作系统之间的关系


  • 假设点击主板显示器的一个键,这时电脑操作系统接受指令将对硬盘存储的数据进行调用,调用至内存条里,然后cpu接受指令将对内存条里的数据进行处理,cpu又控制其他显卡等部件将处理结果在主板显示器中进行运行。这就是整个电脑背后的处理系统

二、数据类型


* 基本数据类型

1、整数

整型:int(字节4)——%d
短整型:short int(字节2)——%hd
长整型:long int(字节8)——%ld
(一个字节对应8位)

2、浮点数(实数)

单精度:float(字节8)——%f
双精度:double(字节16)——%lf

3、字符

char1字节)——%c
* 复合数据类型
1、结构体
2、枚举
3、共用体

三、变量的本质


C语言中变量的本质就是内存条的某个空闲的空间。程序运行时,当变量被赋值时,这个空闲的空间就被储存数据,然后被用于cpu计算处理,当程序结束后,这个内存的空间又将这个数据释放出来。

四、进制

*1、计算机只识别二进制
*2、进制的表示方法
  • c语言中

    二进制只有0和1组成,其表示符号为0b123(最前面加0b(B)) 八进制有0-7组成,其表示符号为0123(最开始前面加个零) 16进制有1-9,a-f组成,其表示符号为0x(X)34f6(最前面加0x(X))

赋值时表示方法
屏幕截图 2021-11-20 112619.png

  • 汇编语言中

    数字后加B,表示二进制,如1011B
    数字后家O,表示八进制,如1345O(字母o)
    数字后加H,表示16进制,如3FB7H    
    

五、常量在C语言中是如何表示的?


*整数
10进制,二进制,八进制,十六进制
*浮点数
传统方法(小数点):1223.556   0.0056
科学计数法:1.223556e3    5.6e-3
*字符
1,单个字符用''括起来(而不是中文的‘’)
如'a'为不是‘a’
2,多个字符用""括起来
如"AS"

六、二进制存储在计算机的形式


二进制以补码形式存储;辨明原码,反码,补码的区别(正数相同,负数有区别)

1,整数以补码形式存储在计算机中

2,实数以IEEE754形式存储在计算机中

字符的本质存储方式与整数一样

七、代码的规范化及如何更好保存有价值的代码的习惯


*代码规范化
1、添加注释的必要性
2、流程图中的语法嵌套要有结构分明的感觉(这个可通过格式化文档)
*保存习惯

屏幕截图 2021-11-20 165657.png

八、什么是字节?


字节是储存数据的单位,并且是硬件所能访问到的最小单位

一字节=8位
1k=1024字节
1M=1024k
1G=1024M

九、什么是ASCLL码?


ASCLL码不是一个值,而是一种规定
ASCLL码规定不同的字符是使用哪个数值去表示

十、定义中的一些问题


*变量不能被重复定义,只能重复运算
例如,int a=1; int a=2;进行了多次定义是错误的
只能int a=1a=2a=3;这是可以的

如下图所示

屏幕截图 2021-11-20 171931.png

*char i,变量i只能存放一个字节
如char i='A'正确
  char i="AB"错误(两个字节)
  char i="A"错误("A"表示是'\o''A'的组合,也为两个字节)

十一、使用printf


*三种类型
printf"字符串")(字符串既可以是数字也可以是文字)
printf("输出控制符....",a,,,,)
  (遵循控制符和变量数量上和类型上一一对应)
printf("输出控制符和非输出控制符组合",变量,,,)
 (非控制符原样输出)
*为什么printf中要有输出控制符?
因为程序在运行时都是电脑后台系统在计算运行,而处理的数据都是二进制数据。
(二进制01组成的代码表示的是数据也可以是指令)
这时程序运行结束(计算结束),你想输出什么是通过用不同的输出控制符来将二进制01组成的代码转换不同的输出结果
(而这个结果可以是图像,数字,声音等)
*printf的进制控制符(整数)
十六进制:%x(输出小写a~f)
         %X(输出大写A~F)
         %#x(X)(输出0x(X),小写,大写)
 十进制:%d  %ld  %hd
 八进制:%o(字母o)

编代码后运行结果如下 屏幕截图 2021-11-20 192810.png

十二、使用scanf(键盘输入)


*几种类型
scanf("%d%f",&a,&b);(不含非控制符)
   输入时以空格/回车键..分开对应数据,如  3 5
scanf("%d,%f",&a,&b);(含非控制符)
   输入时非控制符原样输入 如  1,3
scanf("%d%c%f",%a,%h,%b);(含有字符输入且夹在数字中间区分的)
   输入时可以空格,也可以直接输入
   如4 b 564b56  都可以
*高质量scanf输入
1.使用scanf之前最好先用printf提示要输入什么内容
2.scanf使用尽量不要使用非控制符
3.用户的垃圾输入处理
   用一个结构来处理
   char ch;
   while (ch=gatcher()!='\n')
     continue;
     

2>作业

一、3.10


第四题
常量类型含义
' \b'字符型转义符
1066整型十进制
99.44浮点型传统表示
0XAA整形十六进制
2.0e30浮点型科学计数法
第六题
常量类型转换字符
12整型%d
0x3整型%x或%X或%#X
'c'字符型%c
2.34E07浮点型%lf
'\040'字符型(转义符)%c(重点
7.0浮点型%f
第八题

printf("The odds against the % d were %ld to 1.\n ",imate,shot);
printf("A sore of %f is not an %c grade.\n".log,grade)

二、3.11


第一题

整数上溢,浮点数上溢下溢问题
代码如下(网站:(paste.ubuntu.com/p/W4vjD2Qzq…

int main()
{
    int a=0xfffffffffff;
    float b=999999999999999999.45;
    float c=-1111111111111119999.43;
    printf("%d,%f,%f",a,b,c);
    return 0;

}

电脑上运行结果

屏幕截图 2021-11-21 201005.png

第二题

ASCll码值 代码如下(网站:(paste.ubuntu.com/p/BxXqdRkkG…

int main()
{
    int a;
    printf("输入一个ASCII码值:");
    scanf("%d", &a);
    printf("%c", a); //转化为对应字符
    return 0;
}

运行后如下

屏幕截图 2021-11-21 201113.png

三、4.8


第一题

字符串的输出输入 代码如下(网站:paste.ubuntu.com/p/K2k2CS5MK…

int main()
{
    printf("分别输入你的名和姓(用拼音,并用空格分隔开):");
    char g[5], a[5];
    scanf("%s%s", &g, &a);
    printf("名:%s,姓:%s", g, a);
    return 0;
}

运行后如下

屏幕截图 2021-11-21 201155.png

第四题

身高,姓名输入输出 代码如下(网站:(paste.ubuntu.com/p/9JbSwXRv2…

int main()
{
    char g[10];
    float a;
    printf("依次输入身高(厘米),姓名,中间以逗号分隔开:\n");
    scanf("%f,%s", &a, &g);
    a = a / 100; //将单位厘米转化为米
    printf("%s,you are %.3f feet tall\n", g,a );
    return 0;
}

运行后如下

屏幕截图 2021-11-21 201535.png

第七题

验证float与double精度的区别 代码如下(网站:(paste.ubuntu.com/p/PhK7TYx8t…

int main()
{
    float a;
    double b;
    a=1.0/3.0;
    b=1.0/3.0;
    printf("%.6f,%.6lf\n",a,b);
    printf("%.12f,%.12lf\n",a,b);
    printf("%.16f,%.16lf\n",a,b);
    return 0;
}
运行后如下

屏幕截图 2021-11-21 201555.png

四、名词翻译

中文英文中文英文
整数integer变量variable
字符character初始化initialization
浮点数floating point十进制decimal
结构体structure二进制binary
枚举enumerate十六进制hexadecimal
联合joint打印print