C语言集训-陈朝旭-第一次作业

997 阅读9分钟

代码实操笔记

1.HelloWorld程序举例

新建文件名为 Hello World 在文件中输入一下代码

#include <stdio.h>
 
int main(void)
{
    printf("欢迎大家学习C语言\n");
 
    return 0;
}

运行结果如图:运行成功

期间可能会出现很多问题,详细见文章末问题解析

KG8EAZYD%8_`JN)(A@H0B5T.png


2.“C的重要性”中的死机代码

# include <stdio.h>
# include <malloc.h>

int main(void)
{
    while (1)
    {
         int *p = (int *)malloc(1000);
    }

    return 0;
}

死机时间的长短取决于代码中“1000”的数值大小,数值越大距离开始死机的时间就越短,数值越小距离开始死机的时间就越长


3.一元二次方程详解

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

int main(void)
{
    //把三个系数保存到计算机中
    int a = 1;  //=不代表相等,表示赋值
    int b = 2;
    int c = 3;
    double delta; //delt存放的是 b*b -4*a*c
    double x1; //存放一元二次方程的其中一个解
    double x2; //存放一元二次方程的其中一个解
    delta = b*b - 4*a*c;

    if (delta > 0)
    {
        x1 = (-b + sqrt(delta)) / (2*a);
        x2 = (-b - sqrt(delta)) / (2*a);
        printf("该一元二次方程有两个解, x1 = %f, x2 = %f\n", x1, x2);
    }
    else if (delta == 0)
    {
        x1 = (-b) / (2*a);
        x2 = x1; //右边赋给左边
        printf("该一元二次方程有一个唯一解, x1 = x2 = %f\n", x1, x2);
    }
    else
    {
        printf("无解\n");
    }
}

// 代表注释 运行成功如图所示

EVC}JJA2JX@74M(HITTS{W.png

如图所示答案是无解,可以改变对a,b,c三个变量的赋值继续测试程序


4.VC++6.0软件使用讲解中出现的代码

# include <stdio.h>

int main(void)
{
    printf("哈哈!\n");
    printf("嘻嘻!\n");

    return 0;
}

运行成功如图所示

AK2`2KT@24NFOVUCILZ8.png

课堂理论笔记

1.C语言的特点

优点

1.代码量小 2.速度快 3.功能强大

缺点

1.危险性高 2.开发周期长 3.可移植性不高

2.C语言的运用领域

1.系统软件开发

  • 操作系统:Windows Linux Unix
  • 驱动程序:
  • 数据库:DB2、Oracle、Sql sever(Oracle数据库本身就是由C语言编写)

2.应用软件开发

  • 办公软件:WPS
  • 图形图像多媒体:ACDSee Photoshop MediaPlayer
  • 嵌入软件开发: 智能手机、掌上电脑
  • 游戏开发:2D、3D游戏

3.C重要性

  • 有史以来最重要语言
  • 所有大学工科和理科大学必修课
  • 最重要系统软件:Windows、Linux、Unix
  • 一名合格黑客必须掌握的语言
  • 任何一个想众神从事程序设计和开发人员必须熟练掌握的语言
  • 大企业、外企招募程序员必考的语言
  • 为学习数据结构C++、Java、C#奠定基础

4.学习C语言

  • 看懂程序、调试程序
  • 跟随郝斌老师学完理论课和上机课(实操)
  • 多思考

学习目标

  • 了解程序语言以及发展历史
  • 熟练掌握C语言的语法规则
  • 掌握简单的算法
  • 理解面向过程的思想(看懂程序,调试程序,掌握大问题化小的思路)

5.常见问题答疑

1.学Java为什么要先建议学C
  • Java继承了C语言80%以上的语法知识
  • 学好C有助于学习Java中面向对象的思想
  • 学好C中的指针有助于理解Java中的引用
2.计算机中的知识会穿插在郝斌老师的C语言课程之中,所以就算没有掌握计算机中的知识依然可以自学C语言
3.英语学得好有助于C语言的学习,但是不会影响C语言的学习

需要掌握的32个关键词

一、数据类型关键字

A基本数据类型(5个)

  • void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果
  • char:字符型类型数据,属于整型数据的一种
  • int:整型数据,通常为编译器指定的机器字长
  • float:单精度浮点型数据,属于浮点数据的一种
  • double:双精度浮点型数据,属于浮点数据的一种

B类型修饰关键字(4个)

  • short:修饰int,短整型数据,可省略被修饰的int。
  • long:修饰int,长整形数据,可省略被修饰的int。
  • signed:修饰整型数据,有符号数据类型
  • unsigned:修饰整型数据,无符号数据类型

C复杂类型关键字(5个)

  • struct:结构体声明
  • union:共用体声明
  • enum:枚举声明
  • typedef:声明类型别名
  • sizeof:得到特定类型或特定类型变量的大小

D存储级别关键字(6个)

  • auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配
  • static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部
  • register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数
  • extern:指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明的对象的一个“引用“
  • const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
  • volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值

二、流程控制关键字

A跳转结构(4个)

  • return:用在函数体中,返回特定值(或者是void值,即不返回值)
  • continue:结束当前循环,开始下一轮循环
  • break:跳出当前循环或switch结构
  • goto:无条件跳转语句

B分支结构(5个)

  • if:条件语句
  • else:条件语句否定分支(与if连用)
  • switch:开关语句(多重分支语句)
  • case:开关语句中的分支标记
  • default:开关语句中的“其他”分治,可选。

C循环结构(3个)

  • for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件
  • do:do循环结构,do 1 while(2);的执行顺序是1->2->1...循环,2为循环条件
  • while:while循环结构,while(1) 2;的执行顺序是1->2->1...循环,1为循环条件

以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。


郝斌老师C语言课程bilibili直通车(概述)

1.本讲内容概述
2.HelloWorld程序举例
3.C语言的起源和发展
4.C的特点
5.C的应用领域
6.C的重要性
7.怎样学习C语言
8.学习的目标
9.常见问题答疑 1.学习java为什么建议先学C语言 2.没学过计算机专业课程能够学懂C语言么 3.英语和数学不好能学好C么?
10.C语言课程总纲要
11.一元二次方程详解
12.VC++6.0使用详解
13.回顾本讲内容

郝斌老师的课程总纲

加粗为重点

基本编程知识1讲
数据类型1讲
运算符和表达式1讲
流程控制4讲
函数2讲
数组1讲
指针4讲
变量的作用域和储存方式1讲
扩展数据类型1讲
专题如下:
字符串的处理1讲
进制转换1讲
补码1讲
动态内存分配1讲
综合应用:链表的使用2讲

代码实操中可能遇到的问题

1.代码无法运行

检查代码是否写错,相同的字符中文和英文两种情况下表现是不一样的,注意区分

如图所示情况:;字符出现了,但是终端中依旧提示字符;有问题

)RZ{2O56RA_`LI6{$ZZH)_7.png 杀毒软件阻止程序运行

如图所示

4RN@2{@``XGCQOB5.png

代码格式出现错误,看终端里是否显示纠错

如图所示终端里红色字体标出的地方

}O0{}GR%3HYE19A4QX$U79.png

2.出现中文乱码

原因:代码中出现中文,编码格式没有转换

如图所示

DM(S9VRTZ_A2S@MW1ST2TO.png

解决办法:将默认的UTF-8改为simplified chinese (GBK)并保存

详细如图所示

SYY)VT1OWX%YKVMYBZSX8DN.png

进行如图所示步骤后进行以下步骤

graph TD
点击通过编码保存 --> 选择用于保存的文件编码

选择simplified chinese (GBK)然后保存文件然后再运行文件,如图所示

~30S)})OF4)0F2U(F7J45M.png

3.出现符号乱码

实际上有可能是输出的是一些符号代替了原本的字,文件运行成功了,只不过原本输出的文字被篡改成了符号,但是软件上面显示的还是中文,不过文件中中文的位置确实被符号代替了

如图所示

ORU`IPUOE$CF~(1JILWHC.png 解决办法:可以先保存文件重新打开之后验证一下,中文是否被篡改成符号,然后把符号改回成中文,保存并运行输出的就不是符号而是中文了

4.关于发文章中有时候插入图片不会显示出来而是出现地址的原因

情况如下

![ORU`I[】}U]OE$CF~(1JILWHC.png

插入 图片的代码格式 IUV9633(D}125@}WXXQ{L.png*但是[ ]中出现了“[”或者“]”导致出现这样的问题 解决方法:删除[ ]中多余的"["或者“]”

4.如果出现如图所示 #  error:stray‘\274‘in program # error: stray ‘\243‘ in program 的报错

dde21bfc9b1313ae9700700295c7bf0.jpg

1.是否存在中文 大多C编译器不能识别中文,所以变量名中尽量不要使用中文。 2.是否存在中文标点 C语言要求所有的符号必须是英文半角符号,尤其要注意逗号,分号等是否混淆中英文。 3.是否有全角英文字符 如第2条所述,C语言要求所有的符号使用英文半角符号。最容易出现错误的是全角的空格,因为不能直观看到,我们很难进行排查,因此我建议当发现不了明显的错误的时候,可以试着将所有的空格删除之后重新打上去,看看问题能不能得到有效解决。

此为转载答疑内容:原文出处

推荐查报错情况:新手一百个报错解法

永久解决vscode中的中文乱码

需要用到的代码如下

{ 
    "editor.fontSize": 18, 
    "terminal.integrated.shellArgs.windows": ["/K chcp 65001 >nul"], 
    "terminal.integrated.fontFamily": "Lucida Console", 
}

1.打开文件-首选项-设置

1637236065(1).png

2.搜索setting并且点击在setting.json中编辑

1637236170(1).png

3.进入编辑界面后,复制上面的代码粘贴覆盖原有的三行代码

别忘了右键设置保存一下,然后运行就行了

1637236376(1).png

4.调试是否成功

在不手动更改默认的UTF-8编码格式的情况下运行含有中文或者中文字符的代码

c5f1ca64860d6d410c574155e1e0736.png 输出结果,运行成功,以后都不用手动改编码格式保存了