代码实操笔记
1.HelloWorld程序举例
新建文件名为 Hello World 在文件中输入一下代码
#include <stdio.h>
int main(void)
{
printf("欢迎大家学习C语言\n");
return 0;
}
运行结果如图:运行成功
期间可能会出现很多问题,详细见文章末问题解析
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");
}
}
// 代表注释 运行成功如图所示
如图所示答案是无解,可以改变对a,b,c三个变量的赋值继续测试程序
4.VC++6.0软件使用讲解中出现的代码
# include <stdio.h>
int main(void)
{
printf("哈哈!\n");
printf("嘻嘻!\n");
return 0;
}
运行成功如图所示
课堂理论笔记
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.代码无法运行
检查代码是否写错,相同的字符中文和英文两种情况下表现是不一样的,注意区分
如图所示情况:;字符出现了,但是终端中依旧提示字符;有问题
杀毒软件阻止程序运行
如图所示
代码格式出现错误,看终端里是否显示纠错
如图所示终端里红色字体标出的地方
2.出现中文乱码
原因:代码中出现中文,编码格式没有转换
如图所示
解决办法:将默认的UTF-8改为simplified chinese (GBK)并保存
详细如图所示
进行如图所示步骤后进行以下步骤
graph TD
点击通过编码保存 --> 选择用于保存的文件编码
选择simplified chinese (GBK)然后保存文件然后再运行文件,如图所示
3.出现符号乱码
实际上有可能是输出的是一些符号代替了原本的字,文件运行成功了,只不过原本输出的文字被篡改成了符号,但是软件上面显示的还是中文,不过文件中中文的位置确实被符号代替了
如图所示
解决办法:可以先保存文件重新打开之后验证一下,中文是否被篡改成符号,然后把符号改回成中文,保存并运行输出的就不是符号而是中文了
4.关于发文章中有时候插入图片不会显示出来而是出现地址的原因
情况如下
![ORU`I[】}U]OE$CF~(1JILWHC.png
插入 图片的代码格式 *但是[ ]中出现了“[”或者“]”导致出现这样的问题
解决方法:删除[ ]中多余的"["或者“]”
4.如果出现如图所示 # error:stray‘\274‘in program # error: stray ‘\243‘ in program 的报错
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.打开文件-首选项-设置
2.搜索setting并且点击在setting.json中编辑
3.进入编辑界面后,复制上面的代码粘贴覆盖原有的三行代码
别忘了右键设置保存一下,然后运行就行了
4.调试是否成功
在不手动更改默认的UTF-8编码格式的情况下运行含有中文或者中文字符的代码
输出结果,运行成功,以后都不用手动改编码格式保存了