接下来复习一下C语言部分,毕竟C++与C语言本自同根生,并且在汇编层面C与C++可以说完全相同。假如你没有C语言基础的话,可以先暂停去学习一下C语言,C语言可以看“C语言之父”谭浩强的《C语言程序设计》或者观看学堂在线的免费公开课,在此推荐清华大学的c++课程:http://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043X_2015_T2+sp/courseware/a0f3bf5a4c044dfaaad6814821533699/ 最起码要先了解C基础才能进行接下来的学习。 基础包括:(想到哪写哪,有点乱,但是知道这些以后就可以开始动手了)

0.C基本数据类型 1.顺序结构 、选择结构、循环结构 2.程序都要从main()入口, 然后从最上面顺序往下读。(当然,这种说法其实是错误的,有兴趣的话我会在以后写明。) 3.函数的定义与使用 4.编译预处理不是C语言的一部分,不占运行时间 5.在函数中不可以再定义函数 6.每个C语言程序写完后,都是先编译,后链接,最后运行。 7.标识符合法的要求是由字母,数字,下划线组成,并且由下划线或字母开头。 8.C语言只有八、十、十六进制,没有二进制。 9.复合的赋值表达式 a.自增自减语法,以及符号在前与在后的区别 b.基本的位运算与逻辑运算、算术运算 c.指针部分最好理解,如果实在不理解,在以后的博客中,我会讲解一部分汇编知识,以便d.大家深入理解指针。 e.文件操作如果不理解也没关系 //应该还有很多没想到的知识点…不过,在项目中遇到了再通过注释的方式详解吧,这样更//好理解一点。 好,在此假设屏幕前的你已经有了最基本的C语言知识。 我们来动手写两个小项目,进一步熟悉C语言的语法以及VS这款IDE。

***项目一:打印菱形。***(可以说是灰常简单了) ***项目二:写一个C语言版的贪食蛇。***(初学者看到,可能觉得自己肯定写不出来,其实只要具备一定的C语言基础,都可以很简单的写出来,只不过苦于无人指导,遇到一个棘手的问题可能就真的过不了这个坎了,在此我会尽可能详细的讲解可能遇到的问题,如果仍无法解决的话,欢迎请求远程协助:QQ:1149375463,一些知识细节,遇到后会在项目注释里尽可能的写详细。)

在此再次推荐VS,因为VS拥有良好的调试功能,包括对于变量在内存中的观察,优秀的断点,以及可以反汇编,在以后与bug做斗争的过程中,会让你事半功倍。 首先与第一篇一样,新建工程,新建cpp文件: 然后编码:

#include <stdio.h>   //C标准输入输出库
#include<Windows.h>	 //Windows库
int main()			//程序主函数,当main函数执行结束后,进程退出
{
   int line = 0;  //上半部分层数,此后所说的层数都是之上半部分层数
   char draw;							//要输入什么字符组成的菱形
   scanf("%c", &draw);	
   printf("请输入你想打印的行数:");	//printf()函数,属于stdio.h
   scanf("%d", &line);					//scanf()函数,属于stdio.h
   /*  
   	0001000				对于这个四层菱形,用0代替空格,用1代表要打印的字符
   	0011100				先打印上四层,再打印下三层
   	0111110				可以发现:左侧空格的数量 = 要打印的总层数 - 当前是第几层
   	1111111				然后打印下三层,采用相同的方式
   	0111110				左侧空格数量 = (1,2,3),即 1 开始,到层数 -1
   	0011100				OK,找到规律后就可以开始编码啦
   	0001000
   */
   //打印上line层
   for (int i = 0; i < line; i++) {
   	for (int n = 0; n < line - 1 - i; n++) {
   		printf(" ");
   	}
   	for (int j = 0; j < 2 * i + 1; j++) {
   		printf("%c",draw);
   	}
   	printf("\n");
   }
   //打印下line-1层
   for (int i = 0; i < line - 1; i++){
   	for (int n = 0; n < i + 1; n++){
   		printf(" ");
   	}
   	for (int j = 0; j < 2 * (line - 1 - i) - 1; j++){
   		printf("%c",draw);
   	}
   	printf("\n");
   }
   system("pause");	//system()函数,属于windows.h,便于观察结果
   return 0;			//执行完return语句时退出进程
}

点击本地Windows调试器或者快捷键或者快捷键ctrl+F5 如果你使用了和我一样的IDE,一定会遇到:

这是因为VS为了避免开发者疏忽导致程序在使用某些函数时产生溢出,引发漏洞或程序崩溃,所以基于原标准库开发了一套安全函数库,在VS中使用安全函数可以在一定程度上使此程序更加健壮。但在学习过程中通常是不必要的。因此我们:

点开项目属性:

找到C/C++目录,将SDL检查置为否

oK,接下来运行便可看到,用你输入的图形打印了输入行数的菱形。

接下来我们将程序的功能部分写成一个函数,让代码具有更好的可读性,得到如下代码:

#include <stdio.h>   //C标准输入输出库
#include<Windows.h>	 //Windows库

void PrinDia(char , int );	//PrinDia函数的声明

int main()			//程序主函数,当main函数执行结束后,进程退出
{
	char draw;
	int line;
	printf("请输入你想打印的图形:");
	scanf("%c", &draw);
	printf("请输入你想打印的行数:");	//printf()函数,属于stdio.h
	scanf("%d", &line);					//scanf()函数,属于stdio.h
	PrinDia(draw, line);
	system("pause");	//system()函数,属于windows.h,便于观察结果
	return 0;			//执行完return语句时退出进程
}

void PrinDia(char draw,int line) {
//	 line   //上半部分层数,此后所说的层数都是之上半部分层数
//	 draw;	//要输入什么字符组成的菱形
	
	/*
		0001000				对于这个四层菱形,用0代替空格,用1代表要打印的字符
		0011100				先打印上四层,再打印下三层
		0111110				可以发现:左侧空格的数量 = 要打印的总层数 - 当前是第几层
		1111111				然后打印下三层,采用相同的方式
		0111110				左侧空格数量 = (1,2,3),即 1 开始,到层数 -1
		0011100				OK,找到规律后就可以开始编码啦
		0001000
	*/
	//打印上line层
	for (int i = 0; i < line; i++) {
		for (int n = 0; n < line - 1 - i; n++) {
			printf(" ");
		}
		for (int j = 0; j < 2 * i + 1; j++) {
			printf("%c", draw);
		}
		printf("\n");
	}
	//打印下line-1层
	for (int i = 0; i < line - 1; i++) {
		for (int n = 0; n < i + 1; n++) {
			printf(" ");
		}
		for (int j = 0; j < 2 * (line - 1 - i) - 1; j++) {
			printf("%c", draw);
		}
		printf("\n");
	}
}

再次运行依然可以看到结果。

OK,接下来便是另一个项目,C语言版的贪食蛇。在此之前需要学习一下如何使用VS调试程序,VS自带了很强大的调试器,可以在以后的学习中很好的处理自己的bug。 好啦,建议屏幕前的你再好好复习一下C语言吧,一定一定要复习好C语言,或者观看清华大学课程的前几章基础,熟练一下语法......莫贪快欧~

下一篇详解如何使用***VS调试程序。***