cpp学习(二)C语言复习

接下来复习一下C语言部分,毕竟C++与C语言本自同根生,并且在汇编层面C与C++可以说完全相同。假如你没有C语言基础的话,可以先暂停去学习一下C语言,C语言可以看“C语言之父”谭浩强的《C语言程序设计》。
最起码要先了解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文件:
cpp学习(二)C语言复习
然后编码:

#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,一定会遇到:
cpp学习(二)C语言复习

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

点开项目属性:

cpp学习(二)C语言复习
找到C/C++目录,将SDL检查置为否
cpp学习(二)C语言复习

oK,接下来运行便可看到,用你输入的图形打印了输入行数的菱形。
cpp学习(二)C语言复习

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

#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调试程序。

猜你喜欢

转载自blog.51cto.com/13652962/2175511