C语言集训--车蒙蒙--第二次作业

332 阅读6分钟

观课笔记

1.什么是数据类型

基本类型数据

整数

  • 整型 --int (4个字节)
  • 短整型--short int (2个字节)
  • 长整型 --long int(8个字节)

浮点数【实数】

  • 单精度浮点数-- float(4个字节)
  • 双精度浮点数-- double(8个字节)

字符

  • char (1个字节) 复合类型数据
  • 结构体
  • 枚举体
  • 共用体

2.什么是变量

变量的本质就是内存中一段存储空间


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

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

4.变量为什么必须的初始化

所谓初始化就是赋值的意思


5.如何定义变量

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

举列子:

int i = 3;等价于 int i = 3; i = 3;

int i, j;等价于 int i ; int j;

int i, j =3; 等价于 int i ; int j ; j = 3;

int i = 3 , j = 5; 等价于 int i ;int j ; i = 3; j = 5;


6.什么是进制与进制的转化

十进制就是逢十进一

二进制就是逢二进一

在汇编中:在数字后加字母B表示二进制数,加字母O表示八进制数,加字母D表示十进制数,加字母H表示十六进制数。

十进制(D)二进制 (B)
00
11
210
311
4100
5101
6110
7111
81000
91001
101010
111011
121100
131101
141110
151111
进制转化代码
#include<stdio.h>

int main(void)
{
     int i = 0X32C;
 
     printf("i = %d \n", i );
     /*
        printf的用法
        %d表示以十进制输出
        %x或%X表示以十六进制输出
        %o表示以八进制输出
     */

     return 0;
}
运行成功示意图

2021-11-21.png


7.常量在C语言中是如何表示的

整数

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

浮点数

- 传统的写法
  float x = 3.2
- 科学计数法
   float x = 3.2e3//x的值是3200
   float x = 123.45e-2//x的值是1.2345
   
相关代码
#include<stdio.h>

int main ()
{
    float x = 123.45e-2;

    printf("%f\n", x);

    return 0;

}
运行结果如下图

image.png

字符

单个字符用单引号括起来
  • ‘A’ 表示字符A
  • ‘AB’表示错误
  • “AB”表示正确
字符串用双引号括起来
  • “A”正确,因为“A”代表了‘A’ ‘、0’的组合

8.常量以什么样的二进制代码存储在计算机中

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


9.什么是字节

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

10.什么是ASCII

ASCII不是一个值,而是一种规定,ACSII规定了不同的字符是使用哪个整数值去表示 它规定了

  • ‘A’-- 65
  • ‘B’--66
  • ‘a’--97
  • ‘b’--98
  • ‘0’--48

11.字符的存储【字符本质上与整数的存储方式相同】

基本的输入和输出函数的用法
printf()--将变量的内容输出到显示器上
  • 1.printf(“字符串\n”);
  • 2.printf("输出控制符”,输出参数);
  • 3.printf(“输出控制符1 输出控制符2.。。”,输出参数1,输出控制符和输出参数的个数必须一一对应)
  • 4.printf(“输出控制符 非输出控制符”,输出参数);
输出控制符包含如下

%d %ld %c %f %lf %x(或者%X或者%#X) %O %S

为什么需要输出控制符

1.01组成的代码可以表示数据也可以表示指令

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

scanf()【通过键盘将数据输入到变量中】
用法一
  • scanf("输入控制符”,输入参数);
  • 功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中
用法二
  • scanf(“非输入控制符 输入控制符”,输入参数);
  • 功能:将从键盘输入控制符所规定的格式的数据,然后存入以输入参数的值为地址的变量中,非输入控制符必须原样输入
如何使用scanf编写出高质量代码
  • 1.使用scanf之前最好先使用printf提示用户以什么样的方式来输入

  • 2.scanf中尽量不要使用非输入控制符,尤其是不要用\n

  • 3.应该编写代码对用户的非法输入做适当的处理【非重点】 while((ch = getchar())!= ‘\n’)

    continue;

scanf对用户非法输入的处理
#include<stdio.h>

int main(void)
{
    int i;
    char ch;

    scanf("%d",&i);
    printf("i = %d\n",i);
     //.......
    while ( (ch=getchar() ) != '\n')
       continue;
    int j;
    scanf("%d", &j);
    printf("j = %d\n", j);

    return 0;
}
运行结果如下图

2021-11-21 (2).png

(特别注意:“!=”之间不要空格,不然会有问题,导致不能运行完全正确)


Ubuntu Pastebin 代码分享

(paste.ubuntu.com/p/vkcTFSrsC…)


名称翻译

中文英文
整数integer
字符character
浮点数float
结构体structural body
枚举enumeration
联合unite
变量variable
初始化initialize
十进制decimalism
二进制binary system
十六进制hexadecimal
打印print

课后作业

3.10第四题

  • ‘\b’:char 类型常量 字符值为退格(backspace), 将光标当前位置后退一个字符
  • 1066int类型常量 表示十进制值为1066
  • 99.44unsigned int类型常量
  • 0XAAdouble类型常量 十六进制数
  • 2.0e30double类型常量

3.10第六题

常量类型及其转换说明
12 int %d
0X3unsigned int %#X
‘C’char %c
2.34E07double %e
‘\040’char %c
7.0double %f

3.10第八题

  • printf("The odds aganist the %d were %ld to 1.\n",imate,shot);
  • printf("A score of %f is not an%cgrade.\n",log, grade); 上机结果如下

2021-11-21 (3).png

3.11第一题

整数上溢

2021-11-21 (4).png

浮点数上溢

2021-11-21 (5).png

浮点数下溢

2021-11-21 (6).png


4.8第一题

#include<stdio.h>
int main(void)
{
    char first_name[20];
    char last_name[20];
    printf("请输入你的姓:");
    scanf("%s",first_name);
    printf("请输入你的名:");
    scanf("%s",last_name);
    printf("%s%s", first_name, last_name );

    return 0;
}

2021-11-21 (8).png

4.8第四题

#include<stdio.h>
int main(void)
{   
    char name;
    float inch;
    printf("请输入你的身高:");
    scanf("%f",&inch);
    printf("请输入你的姓名:");
    scanf("%s",&name);
    printf(" %s, you are %f feet tall",&name,&inch);

    return 0;
}

2021-11-21 (9).png

4.8第七题

#include<stdio.h>
#include<float.h>

int main(void)
{
    double a = 1.0/3.0;
    float b = 1.0/3.0;
    printf("double a = 1.0/3.0:\n");
    printf("%.4e\n",a);
    printf("%.12e\n",a);
    printf("%.16e\n\n",a);
    printf("float  b = 1.0/3.0:\n");
    printf("%.4f\n",b);
    printf("%.12f\n",b);
    printf("%.16f\n\n",b);
    printf("FLT_DIG: %d\n",FLT_DIG);
    printf("DBL_DIG: %d\n",DBL_DIG);

    return (0);

}

2021-11-21 (11).png