C语言集训-邹振鹏-第二次作业

236 阅读6分钟

C语言预备知识

电脑硬件

  • CPU:计算机中负责读取指令,对指令译码并执行指令的核心部件,详见CPU
  • 内存条:用于暂时存放CPU中的运算数据,与硬盘外部存储器交换的数据,详见内存条
  • 硬盘:计算机最主要的存储设备,详见硬盘
  • 主板:计算机最基本的同时也是最重要的部件之一,负责连接各个部件,详见主板
  • 显示器:显示器(display, screen)是属于电脑的I/O设备,即输入输出设备。它是一种将一定的电子文件通过特定的传输设备显示到屏幕上再反射到人眼的显示工具,详见显示器

Hello World运行过程

#include <stdio.h>
int main()
{
    printf("Hello world");
}

源代码(sourcecode)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标代码(objectcode)→连接器(Linker)→可执行程序(executables)

数据类型

  • 数据:数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。

数据可以是连续的值,比如声音、图像,称为模拟数据;也可以是离散的,如符号、文字,称为数字数据。

在计算机系统中,数据以二进制信息单元0、1的形式表示。

用人话来讲:数据就是一切可以被利用加工的东西,它可以用来传信息(不一定是物体)。

基本数据类型类型标识符字节数数值范围
整型[signed]int4-2147483648~+2147483647
无符号整型unsigned [int]40~4294967295
短整型short [int]2-32768~+32767
无符号短整型unsigned short [int]20~65535
长整型long[int]4-2147483648~+2147483647
无符号长整型unsigned long [int]40~4294967295
字符型[signed]char1-128~-127
无符号字符型[unsigned]char10~255
单精度型float43.4E-38~+3.4E38
双精度型double82.3E-308~2.3E+308
复合类型数据
结构体枚举共用体
PS;

变量

  • 定义:变量来源于数学,是计算机语言中能储存计算结果或能表示抽象概念。 变量的本质就是内存一段存储空间
  • 变量名:如取一个人的名字有相应的规则,而当我们给变量取名时也有相应的 规则。 简称:变量的命名规则 C++中变量只能由字母,数字,下划线组成。
  • 变量的初始化:数据类型 变量名 =要赋的值; 等效于:数据类型 变量名; 变量名 = 要赋的值;

cpu 内存条 软件 操作系统之间的关系

软件向操作系统请求内存条中的一定内存空间,在将此内存空间与变量名产生关联。

进制

  • 十进制:逢十进一
  • 二进制:逢二进一
  • 十六进制:逢十六进一

常量在C语言的表现

  • 整数
    • 十进制:传统
    • 十六进制:0x开头
    • 八进制:前面位0
  • 浮点数
    • 传统写法 float =3,2
    • 科学计数法 float x=3.2E3 float x=3.2e-
  • 字符 单字符:单引号 字符串:双引号

常量的存储

  • 整数:以补码的形式转换为二进制代码存储到计算机
  • 实数:以IEEE754标准转换为二进制代码存储在计算机
  • 字符:以整数形式相同

代码规范化

代码可读性强  
更不容易出错
内部代码缩进
成对
推荐书籍《代码简洁之道》

字节

定义:存储数据的单位 ,硬件能·访问的最小单位。 位:最小存储单元 1字节 = 8位 1k = 1024字节 1M = 1024K 1G = 1024M

数据相互赋值

ASCII

  • ASXII码是一种规定
    规定了不同字符对应的整数

字符的存储

与整数存储方式一样

C的输入输出

printf()

1。printf("大家好啊!\n"); 2. printf("输出控制符",输出参数; 输出控制符:指定输出二进制代码的编码格式
3. printf("输出控制符1 输出控制符2",输出参数1,输出参数2);
必须一一对应

转换说明符输出
%a浮点数,十六进制数和p-计数法(C90)
%A浮点数,十六进制数和p-计数法(C90)
%c一个字符
%d有符号十进制整数
%e浮点数,e-计数法
%E浮点数,E-计数法
%f浮点数,十进制计数法
%g根据数值不同自动选择%f或%e. %e格式在指数小于-4或大于等于精度时使用
%G根据数值不同自动选择%f或%E. %E格式在指数小于-4或大于等于精度时使用
%i有符号十进制整数(与%d相同)
%o无符号八进制整数
%p指针
%s字符串
%u无符号十进制整数
%x使用十六进制数字0f的无符号十六进制整数
%X使用十六进制数字0F的无符号十六进制整数
%%百分号

scanf()

  1. scanf("输入控制符",输入参数);
    输入控制符:将从键盘上得到的值转换为对应格式的参数
  2. scanf("输入控制符",&i);
    输入以输入参数的值为地址的变量中

名词翻译

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

Ubuntu Pastebin

Ubuntu Pastebin paste.ubuntu.com

课后习题

  • 3.10
    • 第四题

      1. '\b'为转义字符 作用:将光标前移一格
      2. 1066为十进制整型常量
      3. double
      4. 0AXX为十六进制的整型常量
      5. 2.0E3为浮点型
    • 第六题

      常量类型转换说明
      12int%d
      0x3int%X
      'C'char%c
      2.34E07float%E
      '\040'char%c
      7.0float%f
    • 第八题


      int imate = 2;
      long short = 53456;
      char grade = 'a';
      float log = 2.71828;
      print("The odds against the %d were %ld to 1.\n",imagte, short);
      print("A score of %f is not an %c grade.\n",log, grade);


  • 3.11
    • 第一题

      • 整数上溢
             #include <stdio.h>
              int main(void)
              {
                  int i=11111111221212;
                  printf("%d",i);
                  return 0;
              } 
      
      

      运行结果

      image.png

      • 浮点数上溢
          #include <stdio.h>
      
          int main(void)
          {
              float k = 1.3333333333333;
              printf("%f",k);
              return 0;
      

      运行结果

      image.png

      • 浮点数下溢
         #include <stdio.h>
      
         int main(void)
         {
             float k = -1.3333333333333;
             printf("%f",k);
             return 0;
         }
      

      运行结果

      image.png

    • 第二题

      #include <stdio.h>
      
      int main()
      {
              int i;
              printf("输入一个ASCII!\n");
              scanf_s("%d",&i);
              printf("%d的字符为%c\n", i, i);
              return 0;
      }
      
      
      
      

      运行结果

      image.png

  • 4.8
    • 第一题

      
      #include <stdio.h>
      
      int main(void)
      {
         char i[20],k[20];
      
         printf("please write you name and your sumname.\n");
         scanf("%s%s",i,k);
         printf(" %s,%s ",i,k);
         return (0);
      }
      

      运行结果

      image.png

    • 第四题

      #include <stdio.h>
      
      int main(void)
      {
         char a[20];
         float i;
         printf("What's your  height in centimeters and name.\n");
         scanf("%f%s",&i,&a);
         i=i/100;
         printf("%s,you are %f meter tall\n",a,i);
         return 0;
      }
      

      运行结果

      image.png

    • 第七题

      #include <stdio.h>
      #include <float.h>
      int main()
      {
          float i = 1.0/3.0;
          double j = 1.0/3.0;
          printf("%.6f\n",i);
          printf("%.6lf\n",j);
          printf("%.12f\n",i);
          printf("%.12lf\n",j);
          printf("%.16f\n",i);
          printf("%.16lf\n",j);
          printf("%d\n",FLT_DIG);
          printf("%d",DBL_DIG);
          
          return (0);
      }
      
      

      运行结果

      image.png