很久没有写C语言入门的文章了,今天来写一些有趣的程序吧。
刚学C语言时,是不是觉得程序的结果还没看清楚就一闪而过了?
又或者,满屏白底黑字看得有点乏味?
其实,C语言也可以很有趣。
今天我们就来学习如何让你的程序慢下来,让你的程序穿上彩衣。
一、绪言
要让你的C语言变得有趣,需要调用一些库函数,那么程序需要在开头引入头文件。
比如,引入头文件stdlib.h。
stdlib全称是standard library(标准库),它包含了许多预先写好的、实用的函数。
比如生成随机数的函数rand()和srand(),让程序暂停一下的函数sleep()等。
对了,以前介绍过的malloc函数也是在stdlib中定义的C语言入门:动态内存分配函数 malloc。
如果程序需要调用这些实用的函数,需要在程序的开头加上它:
#include
其他的头文件也一样,根据需要引入。
二、生成幸运数字
想让程序每次运行产生不同效果?随机数是关键。
生成随机数需要用到的函数是:rand()和srand()。
其实以前我也写过一篇如何生成随机数的文章C语言入门:写一个小游戏,利用随机数函数。
今天来写一个抽奖程序,随机出现的3个数字就是幸运数字。
程序1:幸运数字
![]()
运行结果:
![]()
再次运行得到的三个幸运数字,和之前的运行得出的三个数字是不一样的:
![]()
但是,如果在程序中去掉了srand(time(NULL));这一句,则每次运行的结果都一样的,你可以试一下。
也就是说,rand()生成的随机数是一个伪随机数,需要设置随机数的种子,否则每次运行结果都一样。
time是时间函数,这里用作随机数的种子,因为时间无时无刻都在变化,用它作种子,随机数才能不同。
三、让程序暂停一下
程序运行太快看不清?那么我们就让它在屏幕停留片刻,用暂停函数sleep()或usleep()。
sleep函数的参数为暂停的时间,单位为秒。
如暂停1秒,代码为:
sleep(1);
usleep函数用法和sleep类似,但它的参数单位为微秒。
要调用这两个函数,需要引入的头文件是。
程序2:简单倒计时
![]()
可以看到运行时的数字从5递减显示到1,每次出现一个数字时会停留1秒才开始出现下一个数字。
运行结果:
![]()
我们还可以利用这个函数模拟加载时的进度条。
程序3:加载进度
![]()
运行结果:
![]()
运行时每次出现一个小圆点会暂停0.3秒才出现下一个小圆点,类似进度条。
当我们想让连续出现的信息有一个延迟,都可以用到这两个暂停函数。
比如给孩子们编写一个会长大的毛毛虫,程序4:
![]()
运行结果:
![]()
四、编写一个彩色的程序
1、Linux/macOS终端的颜色器
在大多数Linux/macOS终端中,可以使用特殊转义序列:
\033[30m 黑色 \033[31m 红色 \033[32m 绿色
\033[33m 黄色 \033[34m 蓝色 \033[35m 紫色
\033[36m 青色 \033[37m 白色 \033[0m 重置颜色
程序5:
![]()
但是ANSI颜色代码在Dev C++(Windows)中无效,这是因为Windows控制台和Linux/macOS终端使用了不同的颜色系统。
\033[31m这种代码是Unix/Linux系统的颜色语言,而Windows控制台说另一种方言。
所以,在Windows系统中,颜色的设置同样简单有趣。
2、Window的颜色魔法
Windows系统用system("color")来设置颜色,需要引入头文件:windows.h和stdlib.h。
windows.h是调用Windows系统API的专用头文件,stdlib.h则定义了system函数。
(1)基础版:改变整个控制台的颜色
程序6:
![]()
运行结果:
![]()
按任意键后,恢复默认的黑底(0)灰字(7):
![]()
程序6要注意的地方:
(1)Sleep(1000); Sleep是Windows的等待函数,注意第一个字母S大写。
(2)system("color 4E"); 设置整个屏幕颜色,color后的第1个数字为背景色,第2个数字为文字颜色,如color 4E代表红底(4)黄字(E)。
(3)getchar(); 等待用户按任意键继续。
常用的颜色代码如下:
![]()
注意system("color")会改变整个控制台,如果只想让某些文字变色,则需要用到Windows API。
(2)进阶版:只改变文字颜色
Windows API的头文件是,设置文字颜色的函数是setColor(),恢复默认颜色的函数是resetColor()。
它们的使用如下:
void setColor(int color) { // 设置文字颜色的函数
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, color);
void resetColor() { // 恢复默认颜色的函数
setColor(7); //灰色文字,黑色背景
程序7(改变文字的颜色):
![]()
运行结果:
![]()
(3) 更高级版:背景色+文字色组合
Windows颜色代码实际上是文字色 + 背景色×16的组合。
程序8:
![]()
运行结果:
![]()
给Dev C++用户的提醒:
(1)必须包含windows.h:这是Windows API的头文件。
(2)使用Sleep()而不是sleep():Windows的等待函数首字母大写。
(3)清屏用system("cls"):不是Linux的clear。
(4)编译时可能需要设置:Dev C++默认支持Windows API。
3、跨平台的颜色设置
如果你希望代码既能在Windows运行,又能在Linux/macOS运行,可以在main函数之前加上以下这几行代码:
![]()
记住:每个系统都有自己的特点,Windows的颜色系统虽然不同,但同样强大有趣。
现在你掌握了两种系统的颜色技巧,已经是真正的跨平台颜色魔法师了!
结语
这些看似简单的函数,正是构建复杂程序的基石。
好的代码不在于用了多少高级技巧,而在于用最合适的工具,清晰、高效地解决问题。
现在,打开你的编辑器,创建一个会呼吸、有色彩的程序吧!
若想要本文所有源程序代码的伙伴们,可私信或在评论区留言,注明“C程序”。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.