C语言的基础知识、结构和常用函数 -----Day10

C语言的基础知识、结构和常用函数 -----Day10

  • 一.知识点汇总
    • 1.C之前奏——算法
      • 1.1程序设计 = 数据结构 + 算法
      • 1.2C语言的编译运行步骤
    • 2.C之基本结构与常用函数
      • 2.1字符集与标识符
      • 2.2基本数据类型——常量
        • 2.2.1整型数据
        • 2.2.2 数值的表示方法
        • 2.2.3 实形数据
        • 2.2.4 常量与变量
        • 2.2.5 转义字符
        • 2.2.6 ASCLL 表中常用的几个
        • 2.2.7 字符串常量
        • 2.2.8 符号常量
      • 2.3基本数据类型—— 变量
        • 2.3.1 整型变量
        • 2.3.2 实型变量
        • 2.3.3 字符变量
      • 2.4 大端与小端
        • 2.4.1大端与小端如何区分?
      • 2.5 常用输入/输出函数
        • 2.5.1 字符输出函数——putchar()
        • 2.5.2 字符输入函数——getchar()
        • 2.5.3 printf()函数的用法
        • 2.5.4 scanf()函数的用法
      • 2.6 常用函数
        • 2.6.1 库函数——stdio.h
        • 2.6.2 数学函数——math.h
        • 2.6.3 随机发生器函数——stdlib.h
        • 2.6.4 终止程序运行函数——exit
  • 二.疑难问题
    • 1.main函数里面加不加void有什么区别,有何意义?
    • 2.在整形无符号char中溢出问题与-128?
    • 3.求一个变量的字节数为什么要用十六进制数?
    • 4.剖析一下getchar()与%*抑制符的用法;
  • 三.思考题与课间作业
    • 1.判断一个整数能否被16整除,满足什么特点?
    • 2.下列书写形式正确的是?
    • 3.判断小数a是否等于0.0?
    • 4. float t = 1.34;printf("##%0*.*f##\n", 7, 3, t);表示什么意思?
    • 5.不同整型的数字该怎样输出?
    • 6.在下面代码中,字符1为什么是0x31,而不是0x21?
    • 7.输入本金、存款期(年)、年利率,计算到期日本金和利息之和?
    • 8.随机生成一个数,并打印此整数,多次运行程序,结果都不相同
  • 四.自我总结

一.知识点汇总

1.C之前奏——算法

1.1程序设计 = 数据结构 + 算法

  • 算法分类

数值算法 和 非数值算法

  • 算法的特点

有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出

1.2C语言的编译运行步骤

C语言的基础知识、结构和常用函数 -----Day10_第1张图片

  • 通常在Linux系统下利用vim编辑器进行编译,有以下几个步骤:

1.vim 1.c ----> 2.写代码---->3.gcc 1.c ----> 4.生成a.out -----> 5./a.out

2.C之基本结构与常用函数

2.1字符集与标识符

  • 标识符的分类

C语言的基础知识、结构和常用函数 -----Day10_第2张图片

  • 定义方法

1.字母数字下划线;
2.区分大小写;
3.标识符的名字要见名知义;
4.首字母必须下划线和字母

2.2基本数据类型——常量

  • 分类如下
    C语言的基础知识、结构和常用函数 -----Day10_第3张图片

2.2.1整型数据

  • 整型数据的说明以及范围、字节数

C语言的基础知识、结构和常用函数 -----Day10_第4张图片

2.2.2 数值的表示方法

原码、反码、补码

整数的原码、反码、补码一样

有符号的数值,反码将原码的除符号位,0变,1变0;补码在反码基础上加2;

2.2.3 实形数据

  • 分类

单精度(float)、双精度(double)、长双精度(long double)

2.2.4 常量与变量

  • 整型常量

十进制、八进制、十六进制

  • 类型

int 1500
long 1500L
unsigned int 1500U

  • 实型常量

十进制小数形式、指数形式、float类型实常量

2.2.5 转义字符

  • 集中常用的转义字符

/n :回车换行 /r :回车
/b :退格 /t :table 键
/ddd :1~3位八进制数所代表的字符
/xhh :1~2位十六位进制数所代表的字符

2.2.6 ASCLL 表中常用的几个

‘A’ :65 ‘a’ :97 ’ (空格)’ :32
‘0’ :48

2.2.7 字符串常量

  • 定义

字符串常量是由一对双引号括起的字符序列.

2.2.8 符号常量

#define N 10 //将N默认为10

2.3基本数据类型—— 变量

2.3.1 整型变量

  • 分类

基本型、短整型、长整型、无符号型

2.3.2 实型变量

  • 分类

float :占4字节,提供7位有效数字
double :占8字节,提供16位有效数字

2.3.3 字符变量

char a = ‘A’; 可以与int数据进行运算

2.4 大端与小端

2.4.1大端与小端如何区分?

小端模式:低位存放在低地址当中;
大端模式:低位字节存放在高地址当中;

2.5 常用输入/输出函数

2.5.1 字符输出函数——putchar()

输出字符到显示器

2.5.2 字符输入函数——getchar()

从键盘上读取一个字符

2.5.3 printf()函数的用法

  • printf("%-m.n",x);

C语言的基础知识、结构和常用函数 -----Day10_第5张图片

%:格式说明的起始符号
-:左对齐,不加-则补空格右对齐;
0:指定空位
m.n:表示宽度为m,若宽度大于m,则原样输出;可以用*.*来代替,将数字传递进去;

2.5.4 scanf()函数的用法

- scanf(“%d%d”,&a,&b);
C语言的基础知识、结构和常用函数 -----Day10_第6张图片

  • 抑制符%*

相当与给删除掉,不要;

scanf("%3d%*4d%f",&k,&f);   //输入123456789.256
//则k =123 , 4567由于抑制符所以不要; f = 89.256 

2.6 常用函数

2.6.1 库函数——stdio.h

#include // 添加头文件

2.6.2 数学函数——math.h

#include // 添加头文件

  • 平方根函数

double sqrt(double )

  • 绝对值函数

double fbs(double)

  • 指数函数

double pow(double x, double y)

  • 平方根函数

2.6.3 随机发生器函数——stdlib.h

#include // 添加头文件

  • 随机数发生器——rand

int a = rand();

  • 初始化随机数发生器——srand

void srand (time(NULL)) // 需要添加头文件

2.6.4 终止程序运行函数——exit

exit(0);

二.疑难问题

1.main函数里面加不加void有什么区别,有何意义?

如果main函数里面不传入实参的话,推荐使用int main(void);如果有实参传入的话,则不需要添加void在main函数里面。

2.在整形无符号char中溢出问题与-128?

整数在内存中是以补码存取的,正数的补码:等于自己,负数的补码:取反加1,例如:127在内存中表示为0111 1111, -127在内存中表示为~(0111 1111)+1=1000 0001; 假定某内存单元p的内容是1111 1111,那么它一定是255吗?实际上取决于你的代码是要把它看成有符号还是无符号数,如果是无符号则表示255,如果是有符号则表示-1【对于有符号数,最高位为符号位,1表示负,0表示正】:

3.求一个变量的字节数为什么要用十六进制数?

因为在现在的电脑系统中一般都是32位或者64位的操作系统,所以用十六进制数比较方便,而且便于操作。

4.剖析一下getchar()与%*抑制符的用法;

当时用getchar()输入函数时::检测到回车,数据首先会被写入到输入缓存区,然后将缓存区里面的内容逐个取走;若数据没有被完全取光,显示界面不然不会出现阻塞区,而是直接会输出缓存区中的等待字符【回车也会被当做指令写入到输入缓存区】;
%*抑制符可以将输入的回车删除,直接输入下一个字符。

三.思考题与课间作业

1.判断一个整数能否被16整除,满足什么特点?

转成二进制后四位必定为0,则能被16整除

if (X & 0x0F == 0) // 说明能被16整除

2.下列书写形式正确的是?

A.2.3F
B.3.1e0.5
C.800U
D.18UL

ACD:c选项中的指数型e后只能跟随整数,D选项UL表示 unsigned long

3.判断小数a是否等于0.0?

 if(a > -0.000001 && a < 0.000001)

4. float t = 1.34;printf("##%0*.*f##\n", 7, 3, t);表示什么意思?

这里的‘’* . *表示宽度为7,保留三位小数,可以很灵活的控制输出格式。

5.不同整型的数字该怎样输出?

short —%hd
unsigned short —%hhd

char – %hhd:char要用十进制输出
unsigned char:要用%hhu

long --%ld
unsigned long —%lu

6.在下面代码中,字符1为什么是0x31,而不是0x21?

#include
int main()
{
   char ch[4] = {'1','2','3','\0'};
   int *p = (int *)ch;
   printf("%d",*p);

    return 0;
}

原因是0x31转换成十进制就表示49,ASCLL码表示字符‘1’

7.输入本金、存款期(年)、年利率,计算到期日本金和利息之和?

 1 #include
  2 #include
  4 #define profit_rate 0.2
  9 int main()
 10 {
 11
 12     double BenJing,Money_Sum,lixi;
 13     int date;
 14     printf("请输入您要新存的本金(万)和年限:\n");
 15     scanf("%lf %d",&BenJing,&date);
 16     Money_Sum = BenJing + BenJing*date*profit_rate;
 17     lixi = BenJing * profit_rate;
 18
 19     printf("您的本金总和为:%.2lf\n利息一共为:%.2lf\n",Money_Sum,lixi);
 20     return 0;
 21 }

在这里插入图片描述

8.随机生成一个数,并打印此整数,多次运行程序,结果都不相同

  1 #include
  2 #include
  3 #include
  4 #include
  5
  6 int main()
  7 {
  8     int a;
  9     srand(time(NULL));
 10     a = rand();
 11     printf("%d\n",a%100);
 12
 13     return 0;
 14 }

C语言的基础知识、结构和常用函数 -----Day10_第7张图片

四.自我总结

通过了这一天对C语言的学习,让我在以前对C语言的理解基础上接触到了更深层次的知识点,比如抑制符、printf函数的输出格式、算法的分类和特点;以及对补码和数据溢出的理解更加深刻。更多接触到的是以前没有接触过的领域,也对这些比较难的知识点有了更深的认识。
学习的过程中任然存着很多不明白的知识,我也都记录了下来,希望能在后续的学习过程中一步一步的攻克;

你可能感兴趣的:(C语言的基础知识、结构和常用函数 -----Day10)