第一次集训 电气213 殷俊峰

192 阅读4分钟

第一节课

关于对自学的一些看法:

对于郝斌老师的第一节的引入,我在一定范围上感同身受,比如说在学习高数的过程中有一点其实是非常简单的,但是你就是看不懂,反复读反复读也看不明白,但是隔天换一个思路的时候就可能直接理解,或者说老师简单的一句话就能让你明白。解一些数学题,也是一样的。实际上在配置vscode的时候我也遇到了相似的问题。就算是看着视频一步一步去做还是会出现一些问题,而真正结束后,再进行一次配置却又感觉非常简单。实话实说,我在一开始觉得如果单纯学习C语言,DevC++或许已经足够了(主要是只需要下载一个软件,不用多余的配置,很简单)。但并非什么事都是简单为好,或许吧。

C大纲

C语言概述:

1.为什么学习C语言

(1)C语言的起源发展

机器语言⇨汇编语言⇨高级语言

  • 高级语言:结构化语言⇨面向对象的语言

(1980前)结构化语言:C,Fortran,Basic,Pascal

(1980后)面向对象的语言:C++,(Java,C#)(结构化语言缺陷 导致 面向对象的语言 产生)

ALGOL60>>>CPL>>>BCPL>>>B语言>>>C语言

(2)C的特点

优点:

代码量小 速度快 功能强大

缺点:

危险性高 开发周期长 可移植性不强

(3)C的应用领域

屏幕截图 2021-11-17 133708.png

(4)C的重要性

屏幕截图 2021-11-17 134535.png

2.怎样学习C语言

途径:多思考,多上机(多试错)

目标:能看懂程序,能调试程序,自学能力要很强

3.学习的目标

  • 了解程序语言及发展历史
  • 熟练掌握C语言的语法规则
  • 掌握简单的算法
  • 理解面向过程的思想(有助于将来面向对象的学习)

(能看懂,能调试,能将大问题转化为一系列小问题)

  • 为其它语言的学习奠定基础。

4.常见问题:

1.学习java之前为什么要先学习C语言

  • 学C就是在学java,因为C语言至少80%的语法知识都被java继承过来了
  • C是面向过程语言的代表,学好C有助于学习Java中面向对象的思想
  • 学好C中的指针是理解Java中引用的基础!如果不懂指针就不可能对Java中的引用有深刻的理解,而引用是Java中一个最基本但又十分重要的概念。

2.没学过计算机专业课程能够学懂C语言吗?

3.英语和数学不好能学好C语言吗?

(在我看来2,3应该不算问题。)

5.课程计划

屏幕截图 2021-11-17 220846.png

课程中的一些代码:

1.欢迎代码

这里输出的代码中文显示乱码(一个常见的错误) 屏幕截图 2021-11-18 190624.png 点击右下角地UTF-8(vscode默认使用的语言会使输出的中文乱码。) 屏幕截图 2021-11-18 190643.png

在弹出的搜索框内搜索GB,有几个简体中文的模式,一般来说其中一个能解决问题。 屏幕截图 2021-11-18 190956.png

这里贴上代码

#include <stdio.h>
int main(void)
{
    printf("欢迎来到C语言的世界");
    return 0;
}

2.一元二次方程的代码:

因为之前有C语言的课程,所以我增加了一些代码,使其可以更方便地解一元二次方程。但是还是有一些缺陷,因为它只能解一次。因此在每次使用其解方程都点击三角形。 屏幕截图 2021-11-18 183401.png

屏幕截图 2021-11-18 184200.png

这里贴上代码。(好像可以使用goto进行进一步优化)。

#include <stdio.h>
#include <math.h>

int main(void)
{
    int a,b,c;
    float x1,x2,delta;
    
    printf("请依次输入一元二次方程的三个系数:\n");
    scanf("%d %d %d",&a,&b,&c);
    delta=b*b-4*a*c;
    printf("delta=%f\n",delta);
    
    if(delta>0)
    {
        x1=(-b+sqrt(delta))/(a*2);
        x2=(-b-sqrt(delta))/(a*2);
        printf("该方程有两个解。x1=%f,x2=%f",x1,x2);
    }
    else if(delta==0)
    {
        x1=(-b)/(2*a);
        x2=x1;
        printf("该方程有唯一解。x1=x2=%f",x1);
    }
    else 
    {
        printf("无解");
    }
    return 0;
}

3.死机程序

这个代码就不贴出使用后果了(用过的人都知道) 屏幕截图 2021-11-18 192136.png

(将malloc()空格内的数增大可以加快死机时间,减小可以减慢。原理是占满内存,使得电脑无法运行,解决方式是重启)

4.龌龊的程序

这里将这个程序修改了一下(在20行处的 j<1 可以控制cmd框弹出的次数。)

大家可以放心使用。 屏幕截图 2021-11-18 210458.png

image.png 这里是代码:

#include<stdio.h>
#include<windows.h>
#include<malloc.h>
int main(void)
{
    int c,i,j;
nihao:  
    printf("1: 10分钟定时关机\n");
    printf("2: 检查mingw是否配置成功\n");
    printf("请选择:");
      
    scanf("%d",&c);
    if (c==1)
    {
      system("shutdown -s -t 600");
    }
    else if (2==c)
    {
        printf("请输入g++ --version!\n");
        for (j=0;j<1;++j)
            system("start");
    }
    else
    {
        printf("你敲错了,你重新输入!\n");
        goto nihao;
    }
     return 0;
}

课后的一些建议:

1.打好C语言程序后记得保存(虽然也有自动保存的选项)。

2.在使用中文时选择语言GB__(简体中文有好几个)(哪个能用就选哪个)。

图片来源视频:www.bilibili.com/video/BV1os… (如有侵权请在文章下留言。)