跳转至

『C语言教程』1. 变量、输入输出

T09:02:00+08:00

一、输出

使用 printf("xxx") 来输出 xxx,比如打印 "Hello World":

C
printf("Hello World");

1. 转义字符(Escape character)

\ 符号会把其后的一个字符 转义 为特殊含义: - \t 制表符(tab) - \n 换行符LF 光标移到下一行开头 - \r 回车符CR 光标移到本行开头

Windows 下常说的换行为 \r\n,而 Linux 为 \n

对于一些如 " \ 的符号,直接写在 printf 中是无法打印出来的,因为它们本身有特殊含义,这时候需要使用转义字符使他们回归平凡:

C
printf("目录:\"V:\\_Posts\\-- Coding --\"") // 目录:"V:\_Posts\-- Coding --"

2. 格式化输出(Formatted Output)

printf 的由来其实是 print format,它提供了一些功能使我们能够方便地控制打印内容的整齐格式。

我们可以通过诸如 %d %f %s 的符号来在打印的内容中“占位”,并在之后以逗号分隔提供数值:

C
printf("%d行%d列", 10, 20) // 10行20列

%d 用来打印整数,%f 用来打印小数,%s 用来打印字符串,%c 用来打印字符。

不仅如此,我们还可以控制它的长度:

%xd 如果整数不够x位则会在左侧补空格,若够就原样输出。

C
1
2
3
4
printf("%3d|\n", 1);
printf("%3d|\n", 22);
printf("%3d|\n", 333);
printf("%3d|\n", 4444);

输出结果为:

Text Only
1
2
3
4
  1|
 22|
333|
4444|

如果x前写个 0,就是用0补齐。 也可以控制左对齐,在右侧补空格,只要在x前写个 -0- 二选一,可以思考一下为什么):

C
1
2
3
4
printf("%-3d|\n", 1);
printf("%-3d|\n", 22);
printf("%-3d|\n", 333);
printf("%-3d|\n", 4444);
Text Only
1
2
3
4
1  |
22 |
333|
4444|

对于小数则是分为两部分 %x.yf 表示一共长 x ,小数点后长 y超出不显示:

C
1
2
3
4
printf("%7.3f|\n", 1.2);
printf("%7.3f|\n", 22.22);
printf("%7.3f|\n", 333.333);
printf("%7.3f|\n", 4444.4444);
Text Only
1
2
3
4
  1.200|
 22.220|
333.333|
4444.444|

比如我们想打印出这样的表格:

Text Only
1
2
3
4
| Student | Math | Chinese | English |
|       A |  100 |      88 |    85.5 |
|       B |    0 |     100 |     3.3 |
|       C |   90 |      99 |   100.0 |
C
1
2
3
4
printf("| %7s | %4s | %7s | %7s |\n", "Student", "Math", "Chinese", "English");
printf("| %7s | %4d | %7d | %7.1f |\n", "A", 100, 88, 85.5);
printf("| %7s | %4d | %7d | %7.1f |\n", "B", 0, 100, 3.3);
printf("| %7s | %4d | %7d | %7.1f |\n", "C", 90, 99, 100.0);

二、C语言中的基础数据类型

1. 整形(存储整数)

类型 大小 存储范围
short 16bit = 2Byte -32768 ~ 32767
int 32bit = 4Byte -2147483648 ~ 2147483647
long 32bit = 4Byte
long long 64bit = 8Byte -9223372036854775808 ~ 9223372036854775807

大小取决于编译器,不过现今大部分编译器大小均如此。 long 较为不常用。

longlong long长整型

2. 浮点型(存储小数)

类型 大小
float 32bit = 4Byte
double 64bit = 8Byte
long double 128bit = 16Byte

float单精度浮点型double双精度浮点型

3. 字符型(存储字符)

类型 大小
char 8bit = 1Byte

三、变量

顾名思义,值可以改变的量,像是一个盒子,可以往里放不同的球。

1. 声明 —— 告诉计算机,有这么个变量

C
// 变量类型 变量名(自己起,不能以数字开头,以大小写字母、数字、下划线组成,大小写敏感)
int variable;

2. 赋值 —— 改变值

C
1
2
3
4
// = 为赋值运算符,效果为将右侧的值赋给左侧的变量
variable = 9;

variable = 100;

3. 其实也可以在声明时提供初始值

C
int variable = 7777777;

四、输入

就像是输出,不过用 scanf。 要输入什么类型的数据就用对应的格式符:

c int x; float y; scanf("%d%f", &x, &y); & 是取址运算符,这里与 printf 不同的是要求提供要存储进内存位置的地址。 而且格式符之间没有字符的话,默认是以空格、制表符、换行符分割。(%c除外,是直接取读入缓冲区内下一个字符见[[还没写]])

例1:

C
1
2
3
int x;
float y;
scanf("%d|%f", &x, &y);

输入 8|9.2,8被读入到了x中,|被匹配、剔除,9.2被读入到了y中。

例2:

C
1
2
3
int x;
float y;
scanf("%d%f", &x, &y);

输入 8 9.2 或 8<回车>9.2 或8\<tab>9.2 都可以。

评论