正确实现“按任意键继续”功能

在大家写程序的时候,经常会遇到“按任意键继续”这样的功能。网上能找到的方法主要有两种:
1. 使用 _getch() 语句
2. 使用 system("pause") 语句

现在挨个说说。

_getch()

_getch() 功能是从控制台输入一个字符(控制台不显示该输入),是 conio.h 里面声明的一个函数。
所以 _getch() 很好的实现了“按任意键继续”的功能。

system("pause")

system 的功能是通过控制台执行一个命令,是 stdlib.h 里面声明的一个函数。
该函数需要一个字符串指针参数表示命令。这里,"pause" 就是 system 函数将要执行的命令。

pause 命令的功能,可以在控制台 cmd.exe 下输入 pause /? 查看,可以看到,pause 的功能是:暂停并显示信息“Press any key to continue

...

仍在使用 VC6 的同学注意了!

前言

VC6,全称 Visual C++ 6.0,诞生于 1998 年,恐怕是目前唯一一款寿命超过 20 岁还仍在大量使用的软件。
因为 VC6 真的太好用了!

但 20 多年造成的科技差距是你必须要知道的。如果你还在用 VC6,请务必读一下本文。

VC6 的问题

1. 对新系统支持差,对调试支持不好

新买的电脑都是 Windows 10 操作系统,VC6 在该系统下,勉强可以通过管理员权限进行调试。但是在调试的时候,如果中断调试,将会造成锁定 exe 无法再次编译的问题,必须重启 VC6 才可以解决。

学习编程时,调试是非常重要的步骤,通常调试的时间会超过代码编写时间的两倍以上,可见调试有多么重要。而“中断调试、再次编译”是非常常见的操作步骤,如果对这个步骤的支持有问题,那会直接影响编程的学习。“不会调试,等于不会编程”,这句话一点也不夸张。

如果用 VC6 是因为电脑配置比较低,那么推荐改用 VC

...

使用程序代码输出常见的字体图标(标志图片)

前言

程序中经常会使用一些常规的标志图片,例如,音量开关、各种方向箭头、扑克牌花色、邮件、电话、磁盘、笑脸/哭脸、五星等等。通常做法是,制作好图片,然后在特定的位置将图片显示出来。本文讲述如何通过输出文字的形式将这些常规的标志图片进行输出。

这种以文字方式表示的表示图片,一般称作:字体图标。

使用方法

简单来说:Windows 内置了许多字体图标的字库,只需要设置为相应字体,然后再输出相应字符即可。不过多讲解,看代码吧,以下代码会画出一个电话机:

#include <graphics.h>
#include <conio.h>

int main()
{
	initgraph(640, 480);

	settextstyle(60, 0, L"Wingdings");
	wchar_t c = 0x28;		// 0x28 是电话机在 Wingdings 字体中的对应编码
	outtextxy
...

编程一对一授课(XiongFJ 版)

我就是百度贴吧的 fammy043,就是写坦克大战和快打旋风的内个~

欢迎亲们阅读 ~ 写在前言:

编程技术现对于我们来说都已经不陌生。

随着社会发展,计算机教育的普及,许多学生都会较早接触到计算机,计算机编程教育也越来越早龄化。

课堂老师所教的主要是基础理论知识,与实际应用还有不小差距。

所以在这里主要教的是动手写程序,在掌握基本语法逻辑结构之后,通过不停的敲打代码,斟酌逻辑,积累自己的编程经验、技巧。

最后尽量能做到:我想即我能做,则算入门了吧。

楼主一些作品:https://www.codebus.cn/xiongfj/

该授课的极限是亲们能独立写出类似上述楼主的作品 ~

...

轻松学编程,快乐做游戏

零基础C语言入门课程

前言

兴趣是学习的动力!

本课程是帮助想系统学习编程的同学,少走弯路快速入门,掌握基础的编程语言-----C语言。

我们所采用的是和学校完全不同是教学模式,一对一的针对性教学。学习时间更自由,时间更长,内容讲解更详细。

俗话说,师傅领进门,修行在个人。好的老师虽然是很重要的,但是更重要的是自己的努力!这里只接受那些真正想学的人,知识是付费的,希望你能感到物有所值!

老师:醋酸基。

课程安排

第一部分 基础知识   C语言零基础入门课程

一课时:

1,  c语言的开发环境。

2,  c语言的特点和基本结构。

3,  一个简单的c语言程序。

二课时:

1.       基础算法和数据结构

...

编程私教:实用派的 C/C++ 语言编程教育(我是慢羊羊)

前言

所谓教育,就是教和育。

众所周知,传统教学,是有教无育。在我这里,我也做不到 24 小时盯着学生,所以我也不可能培育好一个人的品性。我能做到的,仅仅是针对不良习惯的劝诫。如果无效,我会停止对该学生的教学。

我的一些示例作品:https://codebus.cn/yangw

我的一些文章:https://codeabc.cn/yangw

这是时代,由于编程教育的特殊性,导致老师的水平参差不齐,教 Java 的老师都未必能正确念出来 Java 这个单词。希望各位同学能找到自己心仪的老师。

免费辅导内容

我会不定时的在以下几个 QQ 群里游荡:

  • 1059085 (C语言革命0)
  • 8086730 (C语言革命1)
  • 2861971 (C语言革命2)

...

打开帮助文件 EasyX_Help.chm 后,内容为空白的解决办法

有些同学遇到这样的问题,打开 EasyX 的帮助文档 EasyX_Help.chm 之后,发现所有的内容点击后都是空白的,就像下面这样:

这是由于 Windows 的安全机制造成的,当你从网上直接下载一个 chm 文件,或者用 Windows 资源管理器从压缩包里面解压出来 chm 文件,都会被 Windows 认为目标文件不够安全,然后默认被锁定。

所以,只需要简单解锁就可以了。

这样做:右击 EasyX_Help.chm 文件,在属性页中,会看到底部的“安全”一项,“解除锁定”没有勾选,如下图:

只需要简单的勾选“解除锁定”,然后点击确定,就可以正常浏览 chm 文件了。

为什么屏幕分辨率是 640x480?

常见的屏幕分辨率很奇怪,为什么总用一些不零不整的数字?比如以前最常见的分辨率是 640x480,当初为什么这么设计?

因为这个分辨率运算速度比较快,人也相对比较好记。

大家知道,屏幕上的每一个点,都会对应内存中的一个位置。比如 640x480@256色,表示每个点占用一个字节,整个屏幕有 640x480=300k 个点,占用 300KB 内存。屏幕的每一个像素的保存,在内存中是线性存储结构。在屏幕上的坐标 (x, y) 画一个点,就相当于在对应显存偏移 y * 640 + x 的位置赋值。

PS:在这篇文章中有一段代码,可以实践一下通过内存赋值来直接画点:http://www.easyx.cn/skills/View.aspx?id=55

每绘制一个点,都需要执行一次乘法和一次加法运算。所有的绘图操作都需要调用画点函数,因此提高画点的效率,将会提升所有绘图操作的速度。

现在我们将计算内存偏移量的算法修改一下:

d = y * 6
...

在 VC 下清空键盘缓冲区的方法

(以下代码在 VC 下通过)

控制台窗口是有输入缓冲区的,当你按键后程序没有来得及处理,系统会将按键缓存,等到程序获取按键的时候,系统会把缓冲区里面之前的按键返回。

例如这个程序:

#include <graphics.h>
#include <stdio.h>
#include <conio.h>

int main()
{
	printf("延时 5 秒钟。请在 5 秒钟内随便按键。\n");
	Sleep(5000);

	printf("延时结束。刚才您按下的按键是:\n");

	while (_kbhit())
	{
		char c = _getch();
		printf("%c", c);
	};

	return 0;
}

请自己执行一下前面的程序,在 5 秒延时内随便按键,等到延时结束,可以看到程序可以读出刚才的按键。

但是有些时候,

...

使 VC2013 编写的程序运行在其它电脑上

Visual Studio 2013 中带了新版本的 Visual C++,并且微软发不了免费的 Visual C++ 2013 Express,学习编程用很方便。

VC2013 默认编写的 .exe 使用动态链接方式链接的运行时库,所以,编写的程序要在别的电脑上运行,需要在其它电脑安装 VC2013 的运行时库,然后就可以完美运行你的 .exe 程序。当然,如果你觉得安装运行时库很麻烦,你可以用静态链接的形式编译你的 .exe 程序。方法如下(以英文版 Visual Studio 2013 为例):

1. 打开 Visual Studio 2013,创建 Win32 Console Application(或者 Win32 Application)。

2. 编写程序。

3. 项目编译模式默认分为 Debug 和 Release 两种模式。Debug 模式带有各种调试信息,方便排查错误,使用的调试版本库。Release 模式删除了调试信息,使得编译的文件更小,执行速度更快。因此,在调试程序的时候,要用 Debug 模

...