【408专项篇】C语言笔记-第二章(数据类型,输入与输出)

第二章

第一节:数据类型

1. 数据类型

C语言中定义变量要避免与关键字同名

2. 常量

常量是指在程序运行过程中,其值不会发生改变的量。

常量分为:整型、实型(也称浮点型)、字符型、字符串型。

3. 变量

变量代表内存中具有特定属性的一个存储单元,它用来存放数据,即变量的值。这些值在程序的执行过程中是可以改变的

变量的命名规则:只能由字母、数字、下划线三种字符组成。并且第一个字符必须为字母或下划线。

C语言中变量定义严格区分大小写。同时先定义,后使用。

4. 整型数据
4.1 符号常量

定义一个整型变量时使用关键字int。

常量符号是直接替换的效果。

例如:

#include <stdio.h>

#define PI 3+2
int main() {
    int i=PI*2;
    printf("i=%d\n",i);
    return 0;
}

结果为i=7。

4.2 整型变量

一个变量i是4个字节。

5. 浮点型数据
5.1 浮点型常量

浮点型常量有两种形式。

注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数。

浮点型变量

通过float f来定义浮点变量,f占用4个字节。

6. 字符型数据
6.1 字符型常量

用单引号括起来的一个字符是字符型常量。

6.2 存储形式与使用方法

字符型变量使用关键字char定义。一个字符型变量占用1个字节大小空间。

一个字符常量存放到一个字符型变量中,实际上并不是把该字符的字型放到内存中,而是把该字符的ASCII码值放到存储单元中

说明字符型数据和整型数据之间可以通用。字符型数据既可以以字符形式输出,又可以以整型形式输出,还可以通过运算得到想要的各种字符。

#include <stdio.h>

int main() {
    char  c='A';
    printf("%c\n",c+32);
    printf("%d\n",c);
    return 0;
}
F:\Computer\Project\practice\2\2.1-char\cmake-build-debug\2_1_char.exe
a
65

进程已结束,退出代码为 0

注意:通过这个例子可以判断大小写转换其实就是处理差值32的关系。

7. 字符串型常量

字符串型常量是由一对双括号括起来的字符序列。

注意’a’是字符型常量,而"a"是字符串型常量

C语言规定,在每个字符串常量的结尾接一个字符串结束标志,以便系统据此判断字符串常量是否结束。以字符’\0’作为字符串结束标志。

实际占用6个字节,而不是5个。

2.1附件

第二节:混合运算-printf

1. 混合运算

强制类型转换

整型数进行除法运算时,如果运算结果为小数,那么存储浮点数时要进行强制类型转换。

#include <stdio.h>
// 强制类型转换
int main() {
    int i=5;
    float j=i/2;
    float k=(float)i/2;
    printf("%f\n",j);
    printf("%f\n",k);
    return 0;
}
F:\Computer\Project\practice\3\3.1-transformation\cmake-build-debug\3_1_transformation.exe
2.000000
2.500000

进程已结束,退出代码为 0
2. printf函数介绍

printf函数可以输出各种类型的数据,包括整型,浮点型,字符型,字符串型等。实际原理是printf函数将这些类型的数据格式化为字符串后,放入标准输出缓冲区,然后将结果显示到屏幕上

位于%和格式化命令之间的一个整数被称为最小字段宽度说明符。通常会加上空格来控制格式

printf函数的所有输出都是右对齐的,除非在%符号后面放置了负号。例如:%-5.2会显示5位字符,2位小数位的浮点数并且左对齐。

#include <stdio.h>

int main() {
    int i=10;
    float f=96.3;
    printf("student number=%3d score=%5.2f\n",i,f);
    printf("student number=%-3d score=%5.2f\n",i,f);
    printf("%10s\n","hello");
    return 0;
}
F:\Computer\Project\practice\2\2.2-printf\cmake-build-debug\2_2_printf.exe
student number= 10 score=96.30
student number=10  score=96.30
     hello

进程已结束,退出代码为 0

第三节:整型进制转换

计算机只能存储二进制数。除我们正常使用的十进制数外,计算机还提供了十六进制数和八进制数

在计算机中,一个字节为8位,1位即二进制的1位,他存储0或1,int类型为4个字节,即32位。

进制转换:

#include <stdio.h>

int main() {
    int i=123;
    printf("%d\n",i);
    printf("%o\n",i);
    printf("%x\n",i);
    return 0;
}
F:\Computer\Project\practice\2\2.3-base\cmake-build-debug\2_3_base.exe
123
173
7b

进程已结束,退出代码为 0

换算方法

十进制:123

十进制转二进制数:01111011

说明:十进制转几进制就除以几,直到商为0然后取余数

二进制转十进制:027+1*26+125+1*24+123+0*22+121+1*20=123

说明:任何进制数转十进制数都是这样的方法,区别就是二进制底数是2。八进制底数是8,十六进制底数是16.

二进制八进制数:01111011

说明:将二进制每3位分开,分别求出对应的十进制数,拼起来即可。

二进制转十六进制:01111011

说明:将二进制每4位分开,分别求出对应的二进制数,拼起来即可。

十六进制在观察内存是需要频繁使用

从图里面看出,i=123,其中i的值变为十六进制7b,其十进制为7*161+11*160=123。

十六进制7b实际为0x0000007b,为何显示结果为7b 00 00 00呢?原因是因特尔的CPU采用了小端方式进行数据存储,因此低位在前,高位在后。

第四节:scanf读取标准输入

标准输入函数:scanf

标准输出函数:printf

1. scanf函数原理

C语言通过scanf函数读取键盘输入,键盘输入又被称为标准输入。

没有输入时scanf函数会被阻塞。

#include <stdio.h>

int main() {
    int i=10;
    char c;
    scanf("%d",&i);
    printf("%d\n",i);
    // fflush(stdin);  // 方案一:清空标准输入缓冲区
    scanf(" %c",&c);   // 方案二:加空格忽略
    printf("%c\n",c);
    return 0;
}
F:\Computer\Project\practice\2\2.4-scanf\cmake-build-debug\2_4_scanf.exe
30
30
b
b

进程已结束,退出代码为 0

注意:如果不清空缓冲区,第二个scanf将不会被阻塞,因为读到了上一个printf的’\n’。所以需要加上清空缓冲区。

行缓冲:scanf函数在读取整型数,浮点数,字符串时,会忽略’\n’(回车符),空格等字符(忽略是指scanf函数执行时会首先删除这些字符,然后再阻塞)。所以有了以上两种方案。

2. 多种数据类型混合输入
#include <stdio.h>

int main() {
    int i,ret;
    char c;
    float f;
    ret= scanf("%d %c%f",&i,&c,&f);  // 在%c之前加个空格
    printf("i=%d,c=%c,f=%5.2f\n",i,c,f);
    return 0;
}
F:\Computer\Project\practice\2\2.4-scanfs\cmake-build-debug\2_4_scanfs.exe
10 a 10.3
i=10,c=a,f=10.30

进程已结束,退出代码为 0

注意:ret用来接收scanf匹配成功的个数。scanf里面%c前面有个空格。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻啦猫@_@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值