上一课我们学习了让计算机开口说话应使用 printf 语句。我们发现,计算机“说”出的话都是黑底白字,其实计算机的输出可以是彩色的,我们一起来看看吧。
注意,此处代码只能在 windows 操作系统下编译运行。如果你使用的是本书推荐的 C 语言的软件“啊哈 C”,那么你的代码肯定可以运行成功。OK,下面我们来看看,如何让颜色出现。
请尝试输入以下代码并运行,看看会发生什么。
#include <stdio.h>
#include <stdlib.h>
int main()
{system(“color 5”);
printf(“wa wa wa”);
system(“pause”);
return 0 ;
}
运行之后你发现了什么?底色仍然是黑色。但是,文字的颜色已经变为“紫色”了,奥秘就在下面这行代码中。
system(“color 5”);
在这句话中,“5”代表“紫色”,你可以尝试一下其他数字,看看分别是什么颜色。 既然字的颜色可以变,那么背景色是否可以变呢?尝试一下下面这段代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
system(“color f5”);
printf(“wa wa wa”);
system(“pause”);
return 0;
}
运行成功后的界面如下图 所示,此时背景应该为白色,文字颜色应该为紫色。
上面这段代码在原来的 5 前面加了一个 f,这里的 f 代表背景色是白色。
那么设置背景色和文字颜色的方法是,在 color 后面加上两个一位数字,第一个数字表示背景色,第二个数字表示文字颜色。如果在 color 后面只加了一个一位数字,则表示只设置文字颜色,背景色仍然使用默认的颜色。
需要说明的是这里的一位数字其实是 16 进制的,它只能是 0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f 中的某一个。
·知识点:进制
在现代数学中,我们通常使用十进制,即使用数字 0、1、2、3、4、5、6、7、8、9。9 之后的数字便无法表示了,我们的解决方法是:使用“进位”来表示。例如,由于阿拉伯数字只到 9,于是我们便进一位,当前这位用 0 表示,便产生了用 10 来表示“十”。因为是“逢十进一”,所以称为十进制。
而十六进制是“逢十六进一”,即使用 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 来表示。0~9 与在十进制时相同,但是“十”在十六进制时用大写字母 A 表示,以此类推, “十五”在十六进制中用大写字母 F 来表示。F 是“十六进制”中的最后一个,因此数字“十六”就表示不了。于是我们又采用刚才在十进制中表示不了就进一位的老办法,当前应该用 0 表示。 “十六”在十六进制中表示为 10。同理,“二十七”在十六进制中表示为 1B。
在中国古代,很多朝代都是用十六进制作为日常计数的,例如,成语“半斤八两”的典故来源于十六进制;还有中国古代的算法是上面 2 颗珠子,下面 5 颗珠子。若上面每颗珠子代表数字 5,下面每颗珠子代表数字 1,那么每位的最大计数值是 15,15 正是十六进制的最大基数。当使用算盘计数遇到大于 15 的时候,我们就需要在算盘上“进位”了。
其实在我们现代的日常生活中,也不都是“十进制”,例如,60 秒为 1 分钟,60 分钟为 1小时,就是用的六十进制。
·动手试一试
1.下面这段代码是让计算机在屏幕上输出绿底白字的 hi。其中有 4 个错误,快来改正吧!
#include <stdio.h>
#include <stdlib.h>
int main( )
{
system(color f2)
print(“hi”);
system(“pause”);
return 0;
}
2.尝试一下让计算机打印这个小飞机图案(绿底白字)。
3.尝试一下让计算机打印这个小队旗图案(白底红字)。