相信大家都很好奇一些小程序是怎么编出来的吧,这期,我们就带大家学习一些在小程序里比较常用的代码和函数。
当然,这些函数都是实测过的,所以不同系统或不同编译器的函数名可能不一样,CE勿喷。
而且,鉴于本人能力不强且编译器不支持,暂且不会更新关于图形化编程的内容,也就是说我当前不会教大家如何编出和图性有关或与鼠标有关的内容,敬请谅解,也敬请期待。
系统:windows
编译器:Dev-C++ 5.11
头文件:windows.h
。
清空屏幕应该是最常用的函数之一了。毕竟,各个界面不能全挤在一块屏幕上啊。这时,清屏函数就派上用场了。
清屏函数就是system("cls");
。专门用来清空屏幕,为其他界面腾出空间。
清空屏幕是有用,但也不能刚输出完信息就清屏吧要不然什么也看不到啊。所以,我们还需要一个暂停函数,等使用者说继续,在清屏,然后做其他指令。
这个暂停函数就是system("pause");
当它使用时,就会弹出一行“请按任意键继续”,当你按了一个键之后,才会进行下面的操作。
暂停进程固然好,可在有的情况下就不好用了。比如,当你想来一个“加载中”效果时,你肯定会弄这样一个效果:
l o a d i n g ⋯ ⋯ loading\cdots\cdots loading⋯⋯
为了更加炫酷,你肯定也希望这个点能一个一个出现。但cout
速度太快,system(pause);
又太破坏美感。怎么办?
这就需要Sleep
函数上场了。
Sleep
函数除了Sleep
语句本身之外,还要();
,而()
里要填一个数字,就是暂停的时间。
但要注意的一点是:这个时间是以毫秒为单位的。所以停1秒是Sleep(1000);
,停1分钟是Sleep(60000);
。
相信大家都用过数组、结构体,但这些东西只在这次进程有效,重新运行就不管用了,这样会让用户体验变得很差。怎么解决呢?这就需要文件操作了。
文件操作相信大家都不陌生,在NOIP等大型赛事里,文件操作是必须的。只要打下一行freopen("xxx.in", "r", stdin);
和freopen("xxx.out", "w", stdout);
就可以从文件里读取数据。当然,如果是编小程序的话,还是推荐xxx.txt
,毕竟如果从out
文件读入数据,或是在in
文件输出数据……怎么看都觉得有些怪怪的。可是,读取完了以后,该怎么返回控制台呢?不能让用户在in
文件和out
文件里体验小程序吧。于是,我们就需要把文件操作关掉。
关掉文件操作其实很简单,就是fclose(stdin);
和fclose(stdout);
。但大家会发现,这样做的话文件操作是关掉了。可控制台依然无法输入啊……于是,我们需要加一行代码,返回控制台。
其实返回控制台的代码和文件操作很像,都是freopen
,只不过这回没有什么xxx.in
或是什么xxx.out
了,这次要写的是CON
其中,CON
就是控制台。
具体代码就是freopen("CON", "r", stdin);
和freopen("CON", "w", stdout);
。不过,由于 f r e o p e n freopen freopen还是会有些 B U G BUG BUG,所以在freopen("CON", "w", stdout);
后面请不要使用system("cls");
,否则后果自负。
相信大家都想过要编一个计时器,可是,输出+清屏的时间怎么也估不准。时间长了就会有偏差。或者,要编一个打卡软件,可总是搞不清怎么计算本次打卡和上一次是不是同一天。这时候,就要用上系统时间了。
首先,和ios::sync_with_stdio(false);
一样,系统时间的函数也要初始化,但是有2行。具体就是:
SYSTEMTIME sys;
GetLocalTime(&sys);
然后,sys.wYear
就是当前年份,同理,sys.wMonth
就是具体月份,以此类推。下面给大家整理了一个表格,大家可以自行对照。
代码 | 所表示的时间 |
---|---|
sys.wYear | 年份 |
sys.wMonth | 月份 |
sys.wDay | 日期 |
sys.wDayOfWeek | 星期几 |
sys.wHour | 几点 |
sys.wMinute | 几分 |
sys.wSecond | 几秒 |
sys.wMillisecond | 几毫秒(不过你们好像用不上) |
如果大家要求一个随机数,那么就需要rand函数。
初始化也是不可少的。虽然不加初始化不会CE,但你求出的随机数就没那么随机了——第一次的数很随机,但第二次的得数会和第一次一模一样!
所以,奉劝大家还是把这个srand(time(0));
(当然也有人写srand(time(NULL));
)加上。
然后,每当你想求随机数时,你只要写一个rand()
就ok啦~
其实,随机数主要还是运用于出题时的数据生成,如果你已经规定了n≤100
,那么你只要写n=rand()%100+1
就可以,这样可以大幅降低时间成本,不过我想有能力出题的dalao们应该都不会傻到写while(n>100) n=rand();
时间有限,先跟大家分享一下这几个实用的函数。更多精彩内容,请等待下期更新QwQ